| Index: runtime/vm/intrinsifier_ia32.cc
|
| diff --git a/runtime/vm/intrinsifier_ia32.cc b/runtime/vm/intrinsifier_ia32.cc
|
| index 713282a339076628770ab103785589c13e68705f..9101614bb185d22c602ba6722fab64a358b28ea4 100644
|
| --- a/runtime/vm/intrinsifier_ia32.cc
|
| +++ b/runtime/vm/intrinsifier_ia32.cc
|
| @@ -2060,7 +2060,7 @@ void Intrinsifier::JSRegExp_ExecuteMatch(Assembler* assembler) {
|
|
|
| // Incoming registers:
|
| // EAX: Function. (Will be loaded with the specialized matcher function.)
|
| - // ECX: IC-Data. (Will be preserved.)
|
| + // ECX: Unknown. (Must be GC safe on tail call.)
|
| // EDX: Arguments descriptor. (Will be preserved.)
|
|
|
| // Load the specialized function pointer into EAX. Leverage the fact the
|
| @@ -2076,6 +2076,7 @@ void Intrinsifier::JSRegExp_ExecuteMatch(Assembler* assembler) {
|
| // in EAX, the argument descriptor in EDX, and IC-Data in ECX.
|
| static const intptr_t arg_count = RegExpMacroAssembler::kParamCount;
|
| __ LoadObject(EDX, Array::Handle(ArgumentsDescriptor::New(arg_count)));
|
| + __ xorl(ECX, ECX);
|
|
|
| // Tail-call the function.
|
| __ movl(EDI, FieldAddress(EAX, Function::instructions_offset()));
|
|
|