| Index: runtime/vm/intrinsifier_arm64.cc
|
| ===================================================================
|
| --- runtime/vm/intrinsifier_arm64.cc (revision 40060)
|
| +++ runtime/vm/intrinsifier_arm64.cc (working copy)
|
| @@ -953,6 +953,51 @@
|
| }
|
|
|
|
|
| +void Intrinsifier::Bigint_getNeg(Assembler* assembler) {
|
| + __ ldr(R0, Address(SP, 0 * kWordSize));
|
| + __ ldr(R0, FieldAddress(R0, Bigint::neg_offset()));
|
| + __ ret();
|
| +}
|
| +
|
| +
|
| +void Intrinsifier::Bigint_setNeg(Assembler* assembler) {
|
| + __ ldr(R0, Address(SP, 0 * kWordSize));
|
| + __ ldr(R1, Address(SP, 1 * kWordSize));
|
| + __ StoreIntoObject(R1, FieldAddress(R1, Bigint::neg_offset()), R0, false);
|
| + __ ret();
|
| +}
|
| +
|
| +
|
| +void Intrinsifier::Bigint_getUsed(Assembler* assembler) {
|
| + __ ldr(R0, Address(SP, 0 * kWordSize));
|
| + __ ldr(R0, FieldAddress(R0, Bigint::used_offset()));
|
| + __ ret();
|
| +}
|
| +
|
| +
|
| +void Intrinsifier::Bigint_setUsed(Assembler* assembler) {
|
| + __ ldr(R0, Address(SP, 0 * kWordSize));
|
| + __ ldr(R1, Address(SP, 1 * kWordSize));
|
| + __ StoreIntoObject(R1, FieldAddress(R1, Bigint::used_offset()), R0);
|
| + __ ret();
|
| +}
|
| +
|
| +
|
| +void Intrinsifier::Bigint_getDigits(Assembler* assembler) {
|
| + __ ldr(R0, Address(SP, 0 * kWordSize));
|
| + __ ldr(R0, FieldAddress(R0, Bigint::digits_offset()));
|
| + __ ret();
|
| +}
|
| +
|
| +
|
| +void Intrinsifier::Bigint_setDigits(Assembler* assembler) {
|
| + __ ldr(R0, Address(SP, 0 * kWordSize));
|
| + __ ldr(R1, Address(SP, 1 * kWordSize));
|
| + __ StoreIntoObject(R1, FieldAddress(R1, Bigint::digits_offset()), R0, 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 R0.
|
|
|