| Index: runtime/vm/intermediate_language_mips.cc
|
| diff --git a/runtime/vm/intermediate_language_mips.cc b/runtime/vm/intermediate_language_mips.cc
|
| index 9ee2f40fd2c48943c5df5f2a90994c558ff3e977..9ad50ae70d59e7b43f6cabda08289acc59fc203f 100644
|
| --- a/runtime/vm/intermediate_language_mips.cc
|
| +++ b/runtime/vm/intermediate_language_mips.cc
|
| @@ -5590,6 +5590,37 @@ void DebugStepCheckInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| #endif
|
| }
|
|
|
| +
|
| +LocationSummary* GrowRegExpStackInstr::MakeLocationSummary(
|
| + Zone* zone, bool opt) const {
|
| + const intptr_t kNumInputs = 1;
|
| + const intptr_t kNumTemps = 0;
|
| + LocationSummary* locs = new(zone) LocationSummary(
|
| + zone, kNumInputs, kNumTemps, LocationSummary::kCall);
|
| + locs->set_in(0, Location::RegisterLocation(T0));
|
| + locs->set_out(0, Location::RegisterLocation(T0));
|
| + return locs;
|
| +}
|
| +
|
| +
|
| +void GrowRegExpStackInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
| + const Register typed_data = locs()->in(0).reg();
|
| + const Register result = locs()->out(0).reg();
|
| + __ TraceSimMsg("GrowRegExpStackInstr");
|
| + __ addiu(SP, SP, Immediate(-2 * kWordSize));
|
| + __ LoadObject(TMP, Object::null_object());
|
| + __ sw(TMP, Address(SP, 1 * kWordSize));
|
| + __ sw(typed_data, Address(SP, 0 * kWordSize));
|
| + compiler->GenerateRuntimeCall(Scanner::kNoSourcePos, // No token position.
|
| + deopt_id(),
|
| + kGrowRegExpStackRuntimeEntry,
|
| + 1,
|
| + locs());
|
| + __ lw(result, Address(SP, 1 * kWordSize));
|
| + __ addiu(SP, SP, Immediate(2 * kWordSize));
|
| +}
|
| +
|
| +
|
| } // namespace dart
|
|
|
| #endif // defined TARGET_ARCH_MIPS
|
|
|