| Index: runtime/vm/stub_code_mips.cc
|
| diff --git a/runtime/vm/stub_code_mips.cc b/runtime/vm/stub_code_mips.cc
|
| index 10f55d7af21d91bdbc34216377ae0c04e38f914c..8b8522d988e1cef8f2a5f4028391ad50d7d46830 100644
|
| --- a/runtime/vm/stub_code_mips.cc
|
| +++ b/runtime/vm/stub_code_mips.cc
|
| @@ -451,12 +451,20 @@ static void GenerateDeoptimizationSequence(Assembler* assembler,
|
| if (preserve_result) {
|
| __ Push(T1); // Preserve result, it will be GC-d here.
|
| }
|
| - __ CallRuntime(kDeoptimizeMaterializeDoublesRuntimeEntry);
|
| + __ PushObject(Smi::ZoneHandle()); // Space for the result.
|
| + __ CallRuntime(kDeoptimizeMaterializeRuntimeEntry);
|
| + // Result tells stub how many bytes to remove from the expression stack
|
| + // of the bottom-most frame. They were used as materialization arguments.
|
| + __ Pop(T1);
|
| + __ SmiUntag(T1);
|
| if (preserve_result) {
|
| __ Pop(V0); // Restore result.
|
| }
|
| + __ LeaveStubFrame();
|
|
|
| - __ LeaveStubFrameAndReturn();
|
| + // Return.
|
| + __ jr(RA);
|
| + __ delay_slot()->addu(SP, SP, T1); // Remove materialization arguments.
|
| }
|
|
|
|
|
|
|