summaryrefslogtreecommitdiff
path: root/deps/v8/src/ppc/macro-assembler-ppc.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/ppc/macro-assembler-ppc.h')
-rw-r--r--deps/v8/src/ppc/macro-assembler-ppc.h34
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,