diff options
Diffstat (limited to 'deps/v8/src/ppc/macro-assembler-ppc.h')
-rw-r--r-- | deps/v8/src/ppc/macro-assembler-ppc.h | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/deps/v8/src/ppc/macro-assembler-ppc.h b/deps/v8/src/ppc/macro-assembler-ppc.h index f4d9afd47f..db2a4039bd 100644 --- a/deps/v8/src/ppc/macro-assembler-ppc.h +++ b/deps/v8/src/ppc/macro-assembler-ppc.h @@ -216,6 +216,8 @@ class TurboAssembler : public Assembler { Register scratch = no_reg); void LoadSingleU(DoubleRegister dst, const MemOperand& mem, Register scratch = no_reg); + void LoadPC(Register dst); + void ComputeCodeStartAddress(Register dst); void StoreDouble(DoubleRegister src, const MemOperand& mem, Register scratch = no_reg); @@ -504,10 +506,18 @@ class TurboAssembler : public Assembler { void Move(Register dst, Register src, Condition cond = al); void Move(DoubleRegister dst, DoubleRegister src); - void SmiUntag(Register reg, RCBit rc = LeaveRC) { SmiUntag(reg, reg, rc); } + void SmiUntag(Register reg, RCBit rc = LeaveRC, int scale = 0) { + SmiUntag(reg, reg, rc, scale); + } - void SmiUntag(Register dst, Register src, RCBit rc = LeaveRC) { - ShiftRightArithImm(dst, src, kSmiShift, rc); + void SmiUntag(Register dst, Register src, RCBit rc = LeaveRC, int scale = 0) { + if (scale > kSmiShift) { + ShiftLeftImm(dst, src, Operand(scale - kSmiShift), rc); + } else if (scale < kSmiShift) { + ShiftRightArithImm(dst, src, kSmiShift - scale, rc); + } else { + // do nothing + } } // --------------------------------------------------------------------------- // Bit testing/extraction @@ -641,6 +651,10 @@ class TurboAssembler : public Assembler { void CallStubDelayed(CodeStub* stub); void LoadConstantPoolPointerRegister(); + + // Loads the constant pool pointer (kConstantPoolRegister). + void LoadConstantPoolPointerRegisterFromCodeTargetAddress( + Register code_target_address); void AbortConstantPoolBuilding() { #ifdef DEBUG // Avoid DCHECK(!is_linked()) failure in ~Label() @@ -735,10 +749,6 @@ class MacroAssembler : public TurboAssembler { void PushSafepointRegisters(); void PopSafepointRegisters(); - // Loads the constant pool pointer (kConstantPoolRegister). - void LoadConstantPoolPointerRegisterFromCodeTargetAddress( - Register code_target_address); - // Flush the I-cache from asm code. You should use CpuFeatures::FlushICache // from C. // Does not handle errors. @@ -933,7 +943,11 @@ class MacroAssembler : public TurboAssembler { bool builtin_exit_frame = false); // Generates a trampoline to jump to the off-heap instruction stream. - void JumpToInstructionStream(const InstructionStream* stream); + void JumpToInstructionStream(Address entry); + + // --------------------------------------------------------------------------- + // In-place weak references. + void LoadWeakValue(Register out, Register in, Label* target_if_cleared); // --------------------------------------------------------------------------- // StatsCounter support @@ -995,6 +1009,10 @@ class MacroAssembler : public TurboAssembler { // Abort execution if argument is not a FixedArray, enabled via --debug-code. void AssertFixedArray(Register object); + // Abort execution if argument is not a Constructor, enabled via --debug-code. + void AssertConstructor(Register object); + + // Abort execution if argument is not a JSFunction, enabled via --debug-code. void AssertFunction(Register object); // Abort execution if argument is not a JSBoundFunction, |