Index: runtime/vm/intrinsifier_x64.cc |
=================================================================== |
--- runtime/vm/intrinsifier_x64.cc (revision 43482) |
+++ runtime/vm/intrinsifier_x64.cc (working copy) |
@@ -723,31 +723,6 @@ |
} |
-void Intrinsifier::Bigint_setNeg(Assembler* assembler) { |
- __ movq(RAX, Address(RSP, + 1 * kWordSize)); |
- __ movq(RCX, Address(RSP, + 2 * kWordSize)); |
- __ StoreIntoObject(RCX, FieldAddress(RCX, Bigint::neg_offset()), RAX, false); |
- __ ret(); |
-} |
- |
- |
-void Intrinsifier::Bigint_setUsed(Assembler* assembler) { |
- __ movq(RAX, Address(RSP, + 1 * kWordSize)); |
- __ movq(RCX, Address(RSP, + 2 * kWordSize)); |
- __ StoreIntoObject(RCX, FieldAddress(RCX, Bigint::used_offset()), RAX); |
- __ ret(); |
-} |
- |
- |
-void Intrinsifier::Bigint_setDigits(Assembler* assembler) { |
- __ movq(RAX, Address(RSP, + 1 * kWordSize)); |
- __ movq(RCX, Address(RSP, + 2 * kWordSize)); |
- __ StoreIntoObject(RCX, |
- FieldAddress(RCX, Bigint::digits_offset()), RAX, false); |
- __ ret(); |
-} |
- |
- |
void Intrinsifier::Bigint_absAdd(Assembler* assembler) { |
// static void _absAdd(Uint32List digits, int used, |
// Uint32List a_digits, int a_used, |
@@ -793,10 +768,12 @@ |
__ j(NOT_ZERO, &carry_loop, Assembler::kNearJump); |
__ Bind(&last_carry); |
- __ movq(RAX, Immediate(0)); |
- __ adcq(RAX, Immediate(0)); |
- __ movq(FieldAddress(RBX, RDX, TIMES_8, TypedData::data_offset()), RAX); |
+ Label done; |
+ __ j(NOT_CARRY, &done); |
+ __ movq(FieldAddress(RBX, RDX, TIMES_8, TypedData::data_offset()), |
+ Immediate(1)); |
+ __ Bind(&done); |
// Returning Object::null() is not required, since this method is private. |
__ ret(); |
} |