| Index: src/arm/macro-assembler-arm.cc
|
| diff --git a/src/arm/macro-assembler-arm.cc b/src/arm/macro-assembler-arm.cc
|
| index 31d2f7335264fc5b47b8e3385c95edaa229a1f09..61b59edf868c08b11cd80ef246550d679f2df753 100644
|
| --- a/src/arm/macro-assembler-arm.cc
|
| +++ b/src/arm/macro-assembler-arm.cc
|
| @@ -691,21 +691,17 @@ void MacroAssembler::RememberedSetHelper(Register object, // For debug tests.
|
|
|
| void MacroAssembler::PushFixedFrame(Register marker_reg) {
|
| DCHECK(!marker_reg.is_valid() || marker_reg.code() < cp.code());
|
| - stm(db_w, sp, (marker_reg.is_valid() ? marker_reg.bit() : 0) |
|
| - cp.bit() |
|
| - (FLAG_enable_ool_constant_pool ? pp.bit() : 0) |
|
| - fp.bit() |
|
| - lr.bit());
|
| + stm(db_w, sp, (marker_reg.is_valid() ? marker_reg.bit() : 0) | cp.bit() |
|
| + (FLAG_enable_embedded_constant_pool ? pp.bit() : 0) |
|
| + fp.bit() | lr.bit());
|
| }
|
|
|
|
|
| void MacroAssembler::PopFixedFrame(Register marker_reg) {
|
| DCHECK(!marker_reg.is_valid() || marker_reg.code() < cp.code());
|
| - ldm(ia_w, sp, (marker_reg.is_valid() ? marker_reg.bit() : 0) |
|
| - cp.bit() |
|
| - (FLAG_enable_ool_constant_pool ? pp.bit() : 0) |
|
| - fp.bit() |
|
| - lr.bit());
|
| + ldm(ia_w, sp, (marker_reg.is_valid() ? marker_reg.bit() : 0) | cp.bit() |
|
| + (FLAG_enable_embedded_constant_pool ? pp.bit() : 0) |
|
| + fp.bit() | lr.bit());
|
| }
|
|
|
|
|
| @@ -985,13 +981,20 @@ void MacroAssembler::VmovLow(DwVfpRegister dst, Register src) {
|
| }
|
|
|
|
|
| +void MacroAssembler::LoadConstantPoolPointerRegisterFromCodeTargetAddress(
|
| + Register code_target_address) {
|
| + DCHECK(FLAG_enable_embedded_constant_pool);
|
| + ldr(pp, MemOperand(code_target_address,
|
| + Code::kConstantPoolOffset - Code::kHeaderSize));
|
| + add(pp, pp, code_target_address);
|
| +}
|
| +
|
| +
|
| void MacroAssembler::LoadConstantPoolPointerRegister() {
|
| - if (FLAG_enable_ool_constant_pool) {
|
| - int constant_pool_offset = Code::kConstantPoolOffset - Code::kHeaderSize -
|
| - pc_offset() - Instruction::kPCReadOffset;
|
| - DCHECK(ImmediateFitsAddrMode2Instruction(constant_pool_offset));
|
| - ldr(pp, MemOperand(pc, constant_pool_offset));
|
| - }
|
| + DCHECK(FLAG_enable_embedded_constant_pool);
|
| + int entry_offset = pc_offset() + Instruction::kPCReadOffset;
|
| + sub(ip, pc, Operand(entry_offset));
|
| + LoadConstantPoolPointerRegisterFromCodeTargetAddress(ip);
|
| }
|
|
|
|
|
| @@ -1000,9 +1003,9 @@ void MacroAssembler::StubPrologue() {
|
| Push(Smi::FromInt(StackFrame::STUB));
|
| // Adjust FP to point to saved FP.
|
| add(fp, sp, Operand(StandardFrameConstants::kFixedFrameSizeFromFp));
|
| - if (FLAG_enable_ool_constant_pool) {
|
| + if (FLAG_enable_embedded_constant_pool) {
|
| LoadConstantPoolPointerRegister();
|
| - set_ool_constant_pool_available(true);
|
| + set_constant_pool_available(true);
|
| }
|
| }
|
|
|
| @@ -1025,9 +1028,9 @@ void MacroAssembler::Prologue(bool code_pre_aging) {
|
| add(fp, sp, Operand(StandardFrameConstants::kFixedFrameSizeFromFp));
|
| }
|
| }
|
| - if (FLAG_enable_ool_constant_pool) {
|
| + if (FLAG_enable_embedded_constant_pool) {
|
| LoadConstantPoolPointerRegister();
|
| - set_ool_constant_pool_available(true);
|
| + set_constant_pool_available(true);
|
| }
|
| }
|
|
|
| @@ -1036,7 +1039,7 @@ void MacroAssembler::EnterFrame(StackFrame::Type type,
|
| bool load_constant_pool_pointer_reg) {
|
| // r0-r3: preserved
|
| PushFixedFrame();
|
| - if (FLAG_enable_ool_constant_pool && load_constant_pool_pointer_reg) {
|
| + if (FLAG_enable_embedded_constant_pool && load_constant_pool_pointer_reg) {
|
| LoadConstantPoolPointerRegister();
|
| }
|
| mov(ip, Operand(Smi::FromInt(type)));
|
| @@ -1056,9 +1059,9 @@ int MacroAssembler::LeaveFrame(StackFrame::Type type) {
|
|
|
| // Drop the execution stack down to the frame pointer and restore
|
| // the caller frame pointer, return address and constant pool pointer
|
| - // (if FLAG_enable_ool_constant_pool).
|
| + // (if FLAG_enable_embedded_constant_pool).
|
| int frame_ends;
|
| - if (FLAG_enable_ool_constant_pool) {
|
| + if (FLAG_enable_embedded_constant_pool) {
|
| add(sp, fp, Operand(StandardFrameConstants::kConstantPoolOffset));
|
| frame_ends = pc_offset();
|
| ldm(ia_w, sp, pp.bit() | fp.bit() | lr.bit());
|
| @@ -1084,7 +1087,7 @@ void MacroAssembler::EnterExitFrame(bool save_doubles, int stack_space) {
|
| mov(ip, Operand::Zero());
|
| str(ip, MemOperand(fp, ExitFrameConstants::kSPOffset));
|
| }
|
| - if (FLAG_enable_ool_constant_pool) {
|
| + if (FLAG_enable_embedded_constant_pool) {
|
| str(pp, MemOperand(fp, ExitFrameConstants::kConstantPoolOffset));
|
| }
|
| mov(ip, Operand(CodeObject()));
|
| @@ -1103,7 +1106,7 @@ void MacroAssembler::EnterExitFrame(bool save_doubles, int stack_space) {
|
| // fp - ExitFrameConstants::kFrameSize -
|
| // DwVfpRegister::kMaxNumRegisters * kDoubleSize,
|
| // since the sp slot, code slot and constant pool slot (if
|
| - // FLAG_enable_ool_constant_pool) were pushed after the fp.
|
| + // FLAG_enable_embedded_constant_pool) were pushed after the fp.
|
| }
|
|
|
| // Reserve place for the return address and stack space and align the frame
|
| @@ -1183,7 +1186,7 @@ void MacroAssembler::LeaveExitFrame(bool save_doubles, Register argument_count,
|
| #endif
|
|
|
| // Tear down the exit frame, pop the arguments, and return.
|
| - if (FLAG_enable_ool_constant_pool) {
|
| + if (FLAG_enable_embedded_constant_pool) {
|
| ldr(pp, MemOperand(fp, ExitFrameConstants::kConstantPoolOffset));
|
| }
|
| mov(sp, Operand(fp));
|
| @@ -3402,7 +3405,7 @@ void MacroAssembler::GetRelocatedValueLocation(Register ldr_location,
|
| Label small_constant_pool_load, load_result;
|
| ldr(result, MemOperand(ldr_location));
|
|
|
| - if (FLAG_enable_ool_constant_pool) {
|
| + if (FLAG_enable_embedded_constant_pool) {
|
| // Check if this is an extended constant pool load.
|
| and_(scratch, result, Operand(GetConsantPoolLoadMask()));
|
| teq(scratch, Operand(GetConsantPoolLoadPattern()));
|
| @@ -3456,7 +3459,7 @@ void MacroAssembler::GetRelocatedValueLocation(Register ldr_location,
|
|
|
| bind(&load_result);
|
| // Get the address of the constant.
|
| - if (FLAG_enable_ool_constant_pool) {
|
| + if (FLAG_enable_embedded_constant_pool) {
|
| add(result, pp, Operand(result));
|
| } else {
|
| add(result, ldr_location, Operand(result));
|
|
|