Index: runtime/vm/intrinsifier_arm64.cc |
diff --git a/runtime/vm/intrinsifier_arm64.cc b/runtime/vm/intrinsifier_arm64.cc |
index 6e26b2ec00395bead490fcbc8bd48753a254d66d..ef10775200cc910609a649ab6c5d1de8487c8cc9 100644 |
--- a/runtime/vm/intrinsifier_arm64.cc |
+++ b/runtime/vm/intrinsifier_arm64.cc |
@@ -427,6 +427,7 @@ void Intrinsifier::Float64Array_getIndexed(Assembler* assembler) { |
__ TryAllocate(double_class, |
&fall_through, |
R0, // Result register. |
+ R1, // Temp register. |
kNoPP); |
__ StoreDFieldToOffset(V0, R0, Double::value_offset(), kNoPP); |
__ ret(); |
@@ -1074,7 +1075,7 @@ static void DoubleArithmeticOperations(Assembler* assembler, Token::Kind kind) { |
} |
const Class& double_class = Class::Handle( |
Isolate::Current()->object_store()->double_class()); |
- __ TryAllocate(double_class, &fall_through, R0, kNoPP); |
+ __ TryAllocate(double_class, &fall_through, R0, R1, kNoPP); |
__ StoreDFieldToOffset(V0, R0, Double::value_offset(), kNoPP); |
__ ret(); |
__ Bind(&fall_through); |
@@ -1116,7 +1117,7 @@ void Intrinsifier::Double_mulFromInteger(Assembler* assembler) { |
__ fmuld(V0, V0, V1); |
const Class& double_class = Class::Handle( |
Isolate::Current()->object_store()->double_class()); |
- __ TryAllocate(double_class, &fall_through, R0, kNoPP); |
+ __ TryAllocate(double_class, &fall_through, R0, R1, kNoPP); |
__ StoreDFieldToOffset(V0, R0, Double::value_offset(), kNoPP); |
__ ret(); |
__ Bind(&fall_through); |
@@ -1134,7 +1135,7 @@ void Intrinsifier::Double_fromInteger(Assembler* assembler) { |
__ scvtfd(V0, R0); |
const Class& double_class = Class::Handle( |
Isolate::Current()->object_store()->double_class()); |
- __ TryAllocate(double_class, &fall_through, R0, kNoPP); |
+ __ TryAllocate(double_class, &fall_through, R0, R1, kNoPP); |
__ StoreDFieldToOffset(V0, R0, Double::value_offset(), kNoPP); |
__ ret(); |
__ Bind(&fall_through); |
@@ -1214,7 +1215,7 @@ void Intrinsifier::Math_sqrt(Assembler* assembler) { |
__ fsqrtd(V0, V1); |
const Class& double_class = Class::Handle( |
Isolate::Current()->object_store()->double_class()); |
- __ TryAllocate(double_class, &fall_through, R0, kNoPP); |
+ __ TryAllocate(double_class, &fall_through, R0, R1, kNoPP); |
__ StoreDFieldToOffset(V0, R0, Double::value_offset(), kNoPP); |
__ ret(); |
__ Bind(&is_smi); |