| Index: runtime/vm/intermediate_language_arm.cc
|
| diff --git a/runtime/vm/intermediate_language_arm.cc b/runtime/vm/intermediate_language_arm.cc
|
| index 64519bfcc4f4e37a80844872add42582a15e0321..8425759282b70fb214368e3164fe6f601bc92afa 100644
|
| --- a/runtime/vm/intermediate_language_arm.cc
|
| +++ b/runtime/vm/intermediate_language_arm.cc
|
| @@ -2608,12 +2608,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());
|
| summary->set_out(Location::RequiresRegister());
|
| return summary;
|
| }
|
| @@ -2660,7 +2661,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);
|
| }
|
| @@ -2716,12 +2718,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;
|
| }
|
| @@ -2770,7 +2773,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,
|
| @@ -2821,12 +2825,13 @@ void UnboxFloat32x4Instr::EmitNativeCode(FlowGraphCompiler* compiler) {
|
|
|
| LocationSummary* BoxInt32x4Instr::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;
|
| }
|
| @@ -2875,7 +2880,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);
|
|
|