Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(556)

Unified Diff: runtime/vm/flow_graph_compiler_arm.cc

Issue 26823006: Record a correct deoptimization environment for slow-path code. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Use an environment value's representation to decide its size. Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/vm/flow_graph_compiler_arm.cc
diff --git a/runtime/vm/flow_graph_compiler_arm.cc b/runtime/vm/flow_graph_compiler_arm.cc
index fded60aac2b12042e47e7632e4bf629c9582dbbf..8ea69e1ab7bbfc847f0f7a89f2b734f682a21602 100644
--- a/runtime/vm/flow_graph_compiler_arm.cc
+++ b/runtime/vm/flow_graph_compiler_arm.cc
@@ -599,7 +599,7 @@ void FlowGraphCompiler::GenerateInstanceOf(intptr_t token_pos,
__ PushList((1 << R1) | (1 << R2));
__ LoadObject(R0, test_cache);
__ Push(R0);
- GenerateCallRuntime(token_pos, deopt_id, kInstanceofRuntimeEntry, 5, locs);
+ GenerateRuntimeCall(token_pos, deopt_id, kInstanceofRuntimeEntry, 5, locs);
// Pop the parameters supplied to the runtime entry. The result of the
// instanceof runtime call will be left as the result of the operation.
__ Drop(5);
@@ -678,7 +678,7 @@ void FlowGraphCompiler::GenerateAssertAssignable(intptr_t token_pos,
__ Push(R0); // Push the source object.
__ PushObject(dst_name); // Push the name of the destination.
__ PushObject(error_message);
- GenerateCallRuntime(token_pos,
+ GenerateRuntimeCall(token_pos,
deopt_id,
kMalformedTypeErrorRuntimeEntry,
3,
@@ -708,7 +708,7 @@ void FlowGraphCompiler::GenerateAssertAssignable(intptr_t token_pos,
__ PushObject(dst_name); // Push the name of the destination.
__ LoadObject(R0, test_cache);
__ Push(R0);
- GenerateCallRuntime(token_pos, deopt_id, kTypeCheckRuntimeEntry, 6, locs);
+ GenerateRuntimeCall(token_pos, deopt_id, kTypeCheckRuntimeEntry, 6, locs);
// Pop the parameters supplied to the runtime entry. The result of the
// type check runtime call is the checked value.
__ Drop(6);
@@ -1228,7 +1228,7 @@ void FlowGraphCompiler::GenerateDartCall(intptr_t deopt_id,
}
-void FlowGraphCompiler::GenerateCallRuntime(intptr_t token_pos,
+void FlowGraphCompiler::GenerateRuntimeCall(intptr_t token_pos,
intptr_t deopt_id,
const RuntimeEntry& entry,
intptr_t argument_count,
@@ -1495,9 +1495,11 @@ void FlowGraphCompiler::EmitEqualityRegRegCompare(Register left,
}
+// This function must be in sync with FlowGraphCompiler::RecordSafepoint and
+// FlowGraphCompiler::SlowPathEnvironmentFor.
void FlowGraphCompiler::SaveLiveRegisters(LocationSummary* locs) {
// TODO(vegorov): consider saving only caller save (volatile) registers.
- const intptr_t fpu_regs_count = locs->live_registers()->fpu_regs_count();
+ const intptr_t fpu_regs_count = locs->live_registers()->FpuRegisterCount();
if (fpu_regs_count > 0) {
__ AddImmediate(SP, -(fpu_regs_count * kFpuRegisterSize));
// Store fpu registers with the lowest register number at the lowest
@@ -1536,7 +1538,7 @@ void FlowGraphCompiler::RestoreLiveRegisters(LocationSummary* locs) {
__ PopList(cpu_registers);
}
- const intptr_t fpu_regs_count = locs->live_registers()->fpu_regs_count();
+ const intptr_t fpu_regs_count = locs->live_registers()->FpuRegisterCount();
if (fpu_regs_count > 0) {
// Fpu registers have the lowest register number at the lowest address.
intptr_t offset = 0;

Powered by Google App Engine
This is Rietveld 408576698