diff options
Diffstat (limited to 'deps/v8/src/codegen/ppc/macro-assembler-ppc.h')
-rw-r--r-- | deps/v8/src/codegen/ppc/macro-assembler-ppc.h | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/deps/v8/src/codegen/ppc/macro-assembler-ppc.h b/deps/v8/src/codegen/ppc/macro-assembler-ppc.h index 76ed4c2018..db6a53780e 100644 --- a/deps/v8/src/codegen/ppc/macro-assembler-ppc.h +++ b/deps/v8/src/codegen/ppc/macro-assembler-ppc.h @@ -50,6 +50,7 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { using TurboAssemblerBase::TurboAssemblerBase; void CallBuiltin(Builtin builtin, Condition cond); + void TailCallBuiltin(Builtin builtin); void Popcnt32(Register dst, Register src); void Popcnt64(Register dst, Register src); // Converts the integer (untagged smi) in |src| to a double, storing @@ -707,6 +708,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { // Load the builtin given by the Smi in |builtin_index| into the same // register. void LoadEntryFromBuiltinIndex(Register builtin_index); + void LoadEntryFromBuiltin(Builtin builtin, Register destination); + MemOperand EntryFromBuiltinAsOperand(Builtin builtin); void LoadCodeObjectEntry(Register destination, Register code_object); void CallCodeObject(Register code_object); void JumpCodeObject(Register code_object, @@ -768,6 +771,7 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { void Move(Register dst, ExternalReference reference); void Move(Register dst, Register src, Condition cond = al); void Move(DoubleRegister dst, DoubleRegister src); + void Move(Register dst, const MemOperand& src) { LoadU64(dst, src); } void SmiUntag(Register dst, const MemOperand& src, RCBit rc = LeaveRC, Register scratch = no_reg); @@ -788,6 +792,12 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { SmiUntag(smi); } + // Shift left by kSmiShift + void SmiTag(Register reg, RCBit rc = LeaveRC) { SmiTag(reg, reg, rc); } + void SmiTag(Register dst, Register src, RCBit rc = LeaveRC) { + ShiftLeftU64(dst, src, Operand(kSmiShift), rc); + } + // Abort execution if argument is a smi, enabled via --debug-code. void AssertNotSmi(Register object); void AssertSmi(Register object); @@ -972,6 +982,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { void LoadTaggedPointerField(const Register& destination, const MemOperand& field_operand, const Register& scratch = no_reg); + void LoadTaggedSignedField(Register destination, MemOperand field_operand, + Register scratch); // Loads a field containing any tagged value and decompresses it if necessary. void LoadAnyTaggedField(const Register& destination, @@ -1295,12 +1307,6 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler { // --------------------------------------------------------------------------- // Smi utilities - // Shift left by kSmiShift - void SmiTag(Register reg, RCBit rc = LeaveRC) { SmiTag(reg, reg, rc); } - void SmiTag(Register dst, Register src, RCBit rc = LeaveRC) { - ShiftLeftU64(dst, src, Operand(kSmiShift), rc); - } - // Jump if either of the registers contain a non-smi. inline void JumpIfNotSmi(Register value, Label* not_smi_label) { TestIfSmi(value, r0); |