Chromium Code Reviews| Index: src/arm/macro-assembler-arm.cc | 
| diff --git a/src/arm/macro-assembler-arm.cc b/src/arm/macro-assembler-arm.cc | 
| index d705c90bd2edf62c953e2ea39449ada558b277e6..465743e36ceefe1cf557447bcd266fbc4c0e2752 100644 | 
| --- a/src/arm/macro-assembler-arm.cc | 
| +++ b/src/arm/macro-assembler-arm.cc | 
| @@ -888,6 +888,16 @@ void MacroAssembler::VmovLow(DwVfpRegister dst, Register src) { | 
| } | 
| +void MacroAssembler::LoadConstantPoolPointerRegister() { | 
| + if (FLAG_enable_ool_constant_pool) { | 
| + int constant_pool_offset = | 
| + Code::kConstantPoolOffset - Code::kHeaderSize - pc_offset() - 8; | 
| 
 
Rodolph Perfetta (ARM)
2014/03/11 13:28:34
8 -> kPCReadOffset
 
rmcilroy
2014/03/11 16:36:34
Done.
 
 | 
| + ASSERT(ImmediateFitsAddrMode2Instruction(constant_pool_offset)); | 
| + ldr(pp, MemOperand(pc, constant_pool_offset)); | 
| + } | 
| +} | 
| + | 
| + | 
| void MacroAssembler::Prologue(PrologueFrameMode frame_mode) { | 
| if (frame_mode == BUILD_STUB_FRAME) { | 
| PushFixedFrame(); | 
| @@ -912,22 +922,20 @@ void MacroAssembler::Prologue(PrologueFrameMode frame_mode) { | 
| add(fp, sp, Operand(StandardFrameConstants::kFixedFrameSizeFromFp)); | 
| } | 
| } | 
| -} | 
| - | 
| - | 
| -void MacroAssembler::LoadConstantPoolPointerRegister() { | 
| if (FLAG_enable_ool_constant_pool) { | 
| - int constant_pool_offset = | 
| - Code::kConstantPoolOffset - Code::kHeaderSize - pc_offset() - 8; | 
| - ASSERT(ImmediateFitsAddrMode2Instruction(constant_pool_offset)); | 
| - ldr(pp, MemOperand(pc, constant_pool_offset)); | 
| + LoadConstantPoolPointerRegister(); | 
| + set_constant_pool_available(true); | 
| } | 
| } | 
| -void MacroAssembler::EnterFrame(StackFrame::Type type) { | 
| +void MacroAssembler::EnterFrame(StackFrame::Type type, | 
| + bool load_constant_pool) { | 
| // r0-r3: preserved | 
| PushFixedFrame(); | 
| + if (FLAG_enable_ool_constant_pool && load_constant_pool) { | 
| + LoadConstantPoolPointerRegister(); | 
| + } | 
| mov(ip, Operand(Smi::FromInt(type))); | 
| push(ip); | 
| mov(ip, Operand(CodeObject())); | 
| @@ -975,6 +983,7 @@ void MacroAssembler::EnterExitFrame(bool save_doubles, int stack_space) { | 
| } | 
| if (FLAG_enable_ool_constant_pool) { | 
| str(pp, MemOperand(fp, ExitFrameConstants::kConstantPoolOffset)); | 
| + LoadConstantPoolPointerRegister(); | 
| } | 
| mov(ip, Operand(CodeObject())); | 
| str(ip, MemOperand(fp, ExitFrameConstants::kCodeOffset)); |