Index: runtime/vm/intrinsifier_ia32.cc |
=================================================================== |
--- runtime/vm/intrinsifier_ia32.cc (revision 40060) |
+++ runtime/vm/intrinsifier_ia32.cc (working copy) |
@@ -1053,6 +1053,52 @@ |
} |
+void Intrinsifier::Bigint_getNeg(Assembler* assembler) { |
+ __ movl(EAX, Address(ESP, + 1 * kWordSize)); |
+ __ movl(EAX, FieldAddress(EAX, Bigint::neg_offset())); |
+ __ ret(); |
+} |
+ |
+ |
+void Intrinsifier::Bigint_setNeg(Assembler* assembler) { |
+ __ movl(EAX, Address(ESP, + 1 * kWordSize)); |
+ __ movl(ECX, Address(ESP, + 2 * kWordSize)); |
+ __ StoreIntoObject(ECX, FieldAddress(ECX, Bigint::neg_offset()), EAX, false); |
+ __ ret(); |
+} |
+ |
+ |
+void Intrinsifier::Bigint_getUsed(Assembler* assembler) { |
+ __ movl(EAX, Address(ESP, + 1 * kWordSize)); |
+ __ movl(EAX, FieldAddress(EAX, Bigint::used_offset())); |
+ __ ret(); |
+} |
+ |
+ |
+void Intrinsifier::Bigint_setUsed(Assembler* assembler) { |
+ __ movl(EAX, Address(ESP, + 1 * kWordSize)); |
+ __ movl(ECX, Address(ESP, + 2 * kWordSize)); |
+ __ StoreIntoObject(ECX, FieldAddress(ECX, Bigint::used_offset()), EAX); |
+ __ ret(); |
+} |
+ |
+ |
+void Intrinsifier::Bigint_getDigits(Assembler* assembler) { |
+ __ movl(EAX, Address(ESP, + 1 * kWordSize)); |
+ __ movl(EAX, FieldAddress(EAX, Bigint::digits_offset())); |
+ __ ret(); |
+} |
+ |
+ |
+void Intrinsifier::Bigint_setDigits(Assembler* assembler) { |
+ __ movl(EAX, Address(ESP, + 1 * kWordSize)); |
+ __ movl(ECX, Address(ESP, + 2 * kWordSize)); |
+ __ StoreIntoObject(ECX, |
+ FieldAddress(ECX, Bigint::digits_offset()), EAX, false); |
+ __ ret(); |
+} |
+ |
+ |
// Check if the last argument is a double, jump to label 'is_smi' if smi |
// (easy to convert to double), otherwise jump to label 'not_double_smi', |
// Returns the last argument in EAX. |