| Index: runtime/vm/intrinsifier_x64.cc
|
| diff --git a/runtime/vm/intrinsifier_x64.cc b/runtime/vm/intrinsifier_x64.cc
|
| index 2cb9d36d92c51c1b19641e71a7a31c5c111d06da..7f9b8dea71859a0ffe3531cfefe0388f70e82b91 100644
|
| --- a/runtime/vm/intrinsifier_x64.cc
|
| +++ b/runtime/vm/intrinsifier_x64.cc
|
| @@ -1929,7 +1929,7 @@ void Intrinsifier::JSRegExp_ExecuteMatch(Assembler* assembler) {
|
|
|
| // Incoming registers:
|
| // RAX: Function. (Will be loaded with the specialized matcher function.)
|
| - // RCX: IC-Data. (Will be preserved.)
|
| + // RCX: Unknown. (Must be GC safe on tail call.)
|
| // R10: Arguments descriptor. (Will be preserved.)
|
|
|
| // Load the specialized function pointer into RAX. Leverage the fact the
|
| @@ -1945,6 +1945,7 @@ void Intrinsifier::JSRegExp_ExecuteMatch(Assembler* assembler) {
|
| // in RAX, the argument descriptor in R10, and IC-Data in RCX.
|
| static const intptr_t arg_count = RegExpMacroAssembler::kParamCount;
|
| __ LoadObject(R10, Array::Handle(ArgumentsDescriptor::New(arg_count)), PP);
|
| + __ xorq(RCX, RCX);
|
|
|
| // Tail-call the function.
|
| __ movq(RDI, FieldAddress(RAX, Function::instructions_offset()));
|
|
|