| 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.
|
|
|