Index: runtime/vm/flow_graph_compiler_arm64.cc |
=================================================================== |
--- runtime/vm/flow_graph_compiler_arm64.cc (revision 35439) |
+++ runtime/vm/flow_graph_compiler_arm64.cc (working copy) |
@@ -356,7 +356,9 @@ |
const ExternalLabel* label, |
PcDescriptors::Kind kind, |
LocationSummary* locs) { |
- UNIMPLEMENTED(); |
+ __ BranchLinkPatchable(label); |
+ AddCurrentDescriptor(kind, Isolate::kNoDeoptId, token_pos); |
+ RecordSafepoint(locs); |
} |
@@ -437,7 +439,13 @@ |
intptr_t deopt_id, |
intptr_t token_pos, |
LocationSummary* locs) { |
- UNIMPLEMENTED(); |
+ __ LoadObject(R5, ic_data, PP); |
+ GenerateDartCall(deopt_id, |
+ token_pos, |
+ target_label, |
+ PcDescriptors::kIcCall, |
+ locs); |
+ __ Drop(argument_count); |
} |
@@ -515,7 +523,27 @@ |
Register right, |
bool needs_number_check, |
intptr_t token_pos) { |
- UNIMPLEMENTED(); |
+ if (needs_number_check) { |
+ __ Push(left); |
+ __ Push(right); |
+ if (is_optimizing()) { |
+ __ BranchLinkPatchable( |
+ &StubCode::OptimizedIdenticalWithNumberCheckLabel()); |
+ } else { |
+ __ BranchLinkPatchable( |
+ &StubCode::UnoptimizedIdenticalWithNumberCheckLabel()); |
+ } |
+ if (token_pos != Scanner::kNoSourcePos) { |
+ AddCurrentDescriptor(PcDescriptors::kRuntimeCall, |
+ Isolate::kNoDeoptId, |
+ token_pos); |
+ } |
+ // Stub returns result in flags (result of a cmpl, we need ZF computed). |
+ __ Pop(right); |
+ __ Pop(left); |
+ } else { |
+ __ CompareRegisters(left, right); |
+ } |
} |