OLD | NEW |
(Empty) | |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #ifndef V8_ARM64_DELAYED_MASM_ARM64_INL_H_ |
| 6 #define V8_ARM64_DELAYED_MASM_ARM64_INL_H_ |
| 7 |
| 8 #include "src/arm64/delayed-masm-arm64.h" |
| 9 |
| 10 namespace v8 { |
| 11 namespace internal { |
| 12 |
| 13 #define __ ACCESS_MASM(masm_) |
| 14 |
| 15 |
| 16 void DelayedMasm::EndDelayedUse() { |
| 17 EmitPending(); |
| 18 |
| 19 if (need_to_restore_root_) { |
| 20 ASSERT(ScratchRegister().Is(root)); |
| 21 __ InitializeRootRegister(); |
| 22 need_to_restore_root_ = false; |
| 23 ResetSavedValue(); |
| 24 } |
| 25 } |
| 26 |
| 27 |
| 28 void DelayedMasm::Mov(const Register& rd, |
| 29 const Operand& operand, |
| 30 DiscardMoveMode discard_mode) { |
| 31 EmitPending(); |
| 32 __ Mov(rd, operand, discard_mode); |
| 33 if (IsScratchRegister(rd)) { |
| 34 if (operand.IsImmediate()) { |
| 35 saved_value_ = operand.immediate(); |
| 36 } else { |
| 37 ResetSavedValue(); |
| 38 } |
| 39 } |
| 40 } |
| 41 |
| 42 |
| 43 void DelayedMasm::Fmov(FPRegister fd, FPRegister fn) { |
| 44 EmitPending(); |
| 45 __ Fmov(fd, fn); |
| 46 } |
| 47 |
| 48 |
| 49 void DelayedMasm::Fmov(FPRegister fd, double imm) { |
| 50 EmitPending(); |
| 51 __ Fmov(fd, imm); |
| 52 } |
| 53 |
| 54 |
| 55 void DelayedMasm::LoadObject(Register result, Handle<Object> object) { |
| 56 EmitPending(); |
| 57 __ LoadObject(result, object); |
| 58 if (IsScratchRegister(result)) { |
| 59 ResetSavedValue(); |
| 60 } |
| 61 } |
| 62 |
| 63 |
| 64 #undef __ |
| 65 |
| 66 } } // namespace v8::internal |
| 67 |
| 68 #endif // V8_ARM64_DELAYED_MASM_ARM64_INL_H_ |
OLD | NEW |