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

Unified Diff: runtime/vm/intermediate_language_arm.cc

Issue 51653006: Track live instance and allocation counts for classes (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years 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/intermediate_language_arm.cc
diff --git a/runtime/vm/intermediate_language_arm.cc b/runtime/vm/intermediate_language_arm.cc
index da55f78440ec2de89af76166088f6ba0b5d139c6..b79527b7555de31289479bc700f73ea79327db7d 100644
--- a/runtime/vm/intermediate_language_arm.cc
+++ b/runtime/vm/intermediate_language_arm.cc
@@ -1678,7 +1678,8 @@ void StoreInstanceFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
compiler->AddSlowPathCode(slow_path);
__ TryAllocate(compiler->double_class(),
slow_path->entry_label(),
- temp);
+ temp,
+ temp2);
__ Bind(slow_path->exit_label());
__ MoveRegister(temp2, temp);
__ StoreIntoObject(instance_reg,
@@ -1725,7 +1726,8 @@ void StoreInstanceFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
__ TryAllocate(compiler->double_class(),
slow_path->entry_label(),
- temp);
+ temp,
+ temp2);
__ Bind(slow_path->exit_label());
__ MoveRegister(temp2, temp);
__ StoreIntoObject(instance_reg,
@@ -1975,7 +1977,8 @@ void LoadFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
__ TryAllocate(compiler->double_class(),
slow_path->entry_label(),
- result_reg);
+ result_reg,
+ temp);
__ Bind(slow_path->exit_label());
__ ldr(temp, FieldAddress(instance_reg, offset_in_bytes()));
__ LoadDFromOffset(value, temp, Double::value_offset() - kHeapObjectTag);
@@ -2791,12 +2794,13 @@ void CheckEitherNonSmiInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
LocationSummary* BoxDoubleInstr::MakeLocationSummary(bool opt) const {
const intptr_t kNumInputs = 1;
- const intptr_t kNumTemps = 0;
+ const intptr_t kNumTemps = 1;
LocationSummary* summary =
new LocationSummary(kNumInputs,
kNumTemps,
LocationSummary::kCallOnSlowPath);
summary->set_in(0, Location::RequiresFpuRegister());
+ summary->set_temp(0, Location::RequiresRegister());
summary->set_out(Location::RequiresRegister());
return summary;
}
@@ -2811,7 +2815,8 @@ void BoxDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
__ TryAllocate(compiler->double_class(),
slow_path->entry_label(),
- out_reg);
+ out_reg,
+ locs()->temp(0).reg());
__ Bind(slow_path->exit_label());
__ StoreDToOffset(value, out_reg, Double::value_offset() - kHeapObjectTag);
}
@@ -2867,12 +2872,13 @@ void UnboxDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
LocationSummary* BoxFloat32x4Instr::MakeLocationSummary(bool opt) const {
const intptr_t kNumInputs = 1;
- const intptr_t kNumTemps = 0;
+ const intptr_t kNumTemps = 1;
LocationSummary* summary =
new LocationSummary(kNumInputs,
kNumTemps,
LocationSummary::kCallOnSlowPath);
summary->set_in(0, Location::RequiresFpuRegister());
+ summary->set_temp(0, Location::RequiresRegister());
summary->set_out(Location::RequiresRegister());
return summary;
}
@@ -2921,7 +2927,8 @@ void BoxFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
__ TryAllocate(compiler->float32x4_class(),
slow_path->entry_label(),
- out_reg);
+ out_reg,
+ locs()->temp(0).reg());
__ Bind(slow_path->exit_label());
__ StoreDToOffset(value_even, out_reg,
@@ -2972,12 +2979,13 @@ void UnboxFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
LocationSummary* BoxInt32x4Instr::MakeLocationSummary(bool opt) const {
const intptr_t kNumInputs = 1;
- const intptr_t kNumTemps = 0;
+ const intptr_t kNumTemps = 1;
LocationSummary* summary =
new LocationSummary(kNumInputs,
kNumTemps,
LocationSummary::kCallOnSlowPath);
summary->set_in(0, Location::RequiresFpuRegister());
+ summary->set_temp(0, Location::RequiresRegister());
summary->set_out(Location::RequiresRegister());
return summary;
}
@@ -3026,7 +3034,8 @@ void BoxInt32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
__ TryAllocate(compiler->int32x4_class(),
slow_path->entry_label(),
- out_reg);
+ out_reg,
+ locs()->temp(0).reg());
__ Bind(slow_path->exit_label());
__ StoreDToOffset(value_even, out_reg,
Int32x4::value_offset() - kHeapObjectTag);

Powered by Google App Engine
This is Rietveld 408576698