Index: src/ppc/macro-assembler-ppc.h |
diff --git a/src/ppc/macro-assembler-ppc.h b/src/ppc/macro-assembler-ppc.h |
index 2e415d6b6b548206888eed313a8a9ffe399047a5..491167b227d531009629d7fb4a7d44ad3b6a238c 100644 |
--- a/src/ppc/macro-assembler-ppc.h |
+++ b/src/ppc/macro-assembler-ppc.h |
@@ -102,7 +102,9 @@ class MacroAssembler : public Assembler { |
MacroAssembler(Isolate* isolate, void* buffer, int size); |
- // Returns the size of a call in instructions. |
+ // Returns the size of a call in instructions. Note, the value returned is |
+ // only valid as long as no entries are added to the constant pool between |
+ // checking the call size and emitting the actual call. |
static int CallSize(Register target); |
int CallSize(Address target, RelocInfo::Mode rmode, Condition cond = al); |
static int CallSizeNotPredictableCodeSize(Address target, |
@@ -1360,7 +1362,7 @@ class MacroAssembler : public Assembler { |
// --------------------------------------------------------------------------- |
// Patching helpers. |
- // Retrieve/patch the relocated value (lis/ori pair). |
+ // Retrieve/patch the relocated value (lis/ori pair or constant pool load). |
void GetRelocatedValue(Register location, Register result, Register scratch); |
void SetRelocatedValue(Register location, Register scratch, |
Register new_value); |
@@ -1449,6 +1451,19 @@ class MacroAssembler : public Assembler { |
void JumpIfDictionaryInPrototypeChain(Register object, Register scratch0, |
Register scratch1, Label* found); |
+ // Loads the constant pool pointer (kConstantPoolRegister). |
+ void LoadConstantPoolPointerRegisterFromCodeTargetAddress( |
+ Register code_target_address); |
+ void LoadConstantPoolPointerRegister(); |
+ void LoadConstantPoolPointerRegister(Register base, int code_entry_delta = 0); |
+ |
+ void AbortConstantPoolBuilding() { |
+#ifdef DEBUG |
+ // Avoid DCHECK(!is_linked()) failure in ~Label() |
+ bind(ConstantPoolPosition()); |
+#endif |
+ } |
+ |
private: |
static const int kSmiShift = kSmiTagSize + kSmiShiftSize; |