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); |
} |