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

Unified Diff: runtime/vm/intermediate_language_ia32.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, 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
« no previous file with comments | « runtime/vm/heap_class_stats.cc ('k') | runtime/vm/intrinsifier_ia32.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/intermediate_language_ia32.cc
diff --git a/runtime/vm/intermediate_language_ia32.cc b/runtime/vm/intermediate_language_ia32.cc
index 6daebaff042789c0c2a742d0c3b99571de451d4c..9f0fb5362384eaa3952199ce05f3e75e8fe22334 100644
--- a/runtime/vm/intermediate_language_ia32.cc
+++ b/runtime/vm/intermediate_language_ia32.cc
@@ -2777,12 +2777,13 @@ void CheckEitherNonSmiInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
LocationSummary* BoxDoubleInstr::MakeLocationSummary() 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());
srdjan 2013/10/30 20:50:12 Ia32 does not have many registers available, and t
summary->set_out(Location::RequiresRegister());
return summary;
}
@@ -2830,7 +2831,8 @@ void BoxDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
__ TryAllocate(compiler->double_class(),
slow_path->entry_label(),
Assembler::kFarJump,
- out_reg);
+ out_reg,
+ locs()->temp(0).reg());
__ Bind(slow_path->exit_label());
__ movsd(FieldAddress(out_reg, Double::value_offset()), value);
}
@@ -2884,12 +2886,13 @@ void UnboxDoubleInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
LocationSummary* BoxFloat32x4Instr::MakeLocationSummary() 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;
}
@@ -2937,7 +2940,8 @@ void BoxFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
__ TryAllocate(compiler->float32x4_class(),
slow_path->entry_label(),
Assembler::kFarJump,
- out_reg);
+ out_reg,
+ locs()->temp(0).reg());
__ Bind(slow_path->exit_label());
__ movups(FieldAddress(out_reg, Float32x4::value_offset()), value);
}
@@ -2978,12 +2982,13 @@ void UnboxFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
LocationSummary* BoxUint32x4Instr::MakeLocationSummary() 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;
}
@@ -3031,7 +3036,8 @@ void BoxUint32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
__ TryAllocate(compiler->uint32x4_class(),
slow_path->entry_label(),
Assembler::kFarJump,
- out_reg);
+ out_reg,
+ locs()->temp(0).reg());
__ Bind(slow_path->exit_label());
__ movups(FieldAddress(out_reg, Uint32x4::value_offset()), value);
}
@@ -4494,7 +4500,8 @@ void BoxIntegerInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
Class::ZoneHandle(Isolate::Current()->object_store()->mint_class()),
slow_path->entry_label(),
Assembler::kFarJump,
- out_reg);
+ out_reg,
+ EDX);
__ Bind(slow_path->exit_label());
__ movsd(FieldAddress(out_reg, Mint::value_offset()), value);
__ Bind(&done);
« no previous file with comments | « runtime/vm/heap_class_stats.cc ('k') | runtime/vm/intrinsifier_ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698