| Index: runtime/vm/flow_graph_compiler_mips.cc
|
| ===================================================================
|
| --- runtime/vm/flow_graph_compiler_mips.cc (revision 20788)
|
| +++ runtime/vm/flow_graph_compiler_mips.cc (working copy)
|
| @@ -413,7 +413,20 @@
|
| const ExternalLabel* label,
|
| PcDescriptors::Kind kind,
|
| LocationSummary* locs) {
|
| - UNIMPLEMENTED();
|
| + __ BranchLinkPatchable(label);
|
| + AddCurrentDescriptor(kind, deopt_id, token_pos);
|
| + RecordSafepoint(locs);
|
| + // Marks either the continuation point in unoptimized code or the
|
| + // deoptimization point in optimized code, after call.
|
| + if (is_optimizing()) {
|
| + AddDeoptIndexAtCall(deopt_id, token_pos);
|
| + } else {
|
| + // Add deoptimization continuation point after the call and before the
|
| + // arguments are removed.
|
| + AddCurrentDescriptor(PcDescriptors::kDeoptAfter,
|
| + deopt_id,
|
| + token_pos);
|
| + }
|
| }
|
|
|
|
|
| @@ -465,7 +478,16 @@
|
| intptr_t deopt_id,
|
| intptr_t token_pos,
|
| LocationSummary* locs) {
|
| - UNIMPLEMENTED();
|
| + __ LoadObject(S4, arguments_descriptor);
|
| + // Do not use the code from the function, but let the code be patched so that
|
| + // we can record the outgoing edges to other code.
|
| + GenerateDartCall(deopt_id,
|
| + token_pos,
|
| + &StubCode::CallStaticFunctionLabel(),
|
| + PcDescriptors::kFuncCall,
|
| + locs);
|
| + AddStaticCallTarget(function);
|
| + __ Drop(argument_count);
|
| }
|
|
|
|
|
|
|