Commit adbcede1 authored by rmcilroy@chromium.org's avatar rmcilroy@chromium.org

Swap cp and pp registers on Arm such for work on OOL Constant Pool.

R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/94723002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@18127 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 35160020
...@@ -164,18 +164,12 @@ struct Register { ...@@ -164,18 +164,12 @@ struct Register {
inline static int NumAllocatableRegisters(); inline static int NumAllocatableRegisters();
static int ToAllocationIndex(Register reg) { static int ToAllocationIndex(Register reg) {
if (FLAG_enable_ool_constant_pool && (reg.code() >= kRegister_r8_Code)) {
return reg.code() - 1;
}
ASSERT(reg.code() < kMaxNumAllocatableRegisters); ASSERT(reg.code() < kMaxNumAllocatableRegisters);
return reg.code(); return reg.code();
} }
static Register FromAllocationIndex(int index) { static Register FromAllocationIndex(int index) {
ASSERT(index >= 0 && index < kMaxNumAllocatableRegisters); ASSERT(index >= 0 && index < kMaxNumAllocatableRegisters);
if (FLAG_enable_ool_constant_pool && (index >= 7)) {
return from_code(index + 1);
}
return from_code(index); return from_code(index);
} }
......
...@@ -693,7 +693,7 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm, ...@@ -693,7 +693,7 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
// r2: receiver // r2: receiver
// r3: argc // r3: argc
// r4: argv // r4: argv
// r5-r6, r7 (if not FLAG_enable_ool_constant_pool) and cp may be clobbered // r5-r6, r8 (if not FLAG_enable_ool_constant_pool) and cp may be clobbered
ProfileEntryHookStub::MaybeCallEntryHook(masm); ProfileEntryHookStub::MaybeCallEntryHook(masm);
// Clear the context before we push it when entering the internal frame. // Clear the context before we push it when entering the internal frame.
...@@ -734,7 +734,7 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm, ...@@ -734,7 +734,7 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
__ mov(r5, Operand(r4)); __ mov(r5, Operand(r4));
__ mov(r6, Operand(r4)); __ mov(r6, Operand(r4));
if (!FLAG_enable_ool_constant_pool) { if (!FLAG_enable_ool_constant_pool) {
__ mov(r7, Operand(r4)); __ mov(r8, Operand(r4));
} }
if (kR9Available == 1) { if (kR9Available == 1) {
__ mov(r9, Operand(r4)); __ mov(r9, Operand(r4));
......
...@@ -2584,7 +2584,7 @@ void ArgumentsAccessStub::GenerateNewNonStrictFast(MacroAssembler* masm) { ...@@ -2584,7 +2584,7 @@ void ArgumentsAccessStub::GenerateNewNonStrictFast(MacroAssembler* masm) {
const int kAliasedOffset = const int kAliasedOffset =
Context::SlotOffset(Context::ALIASED_ARGUMENTS_BOILERPLATE_INDEX); Context::SlotOffset(Context::ALIASED_ARGUMENTS_BOILERPLATE_INDEX);
__ ldr(r4, MemOperand(r8, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX))); __ ldr(r4, MemOperand(cp, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX)));
__ ldr(r4, FieldMemOperand(r4, GlobalObject::kNativeContextOffset)); __ ldr(r4, FieldMemOperand(r4, GlobalObject::kNativeContextOffset));
__ cmp(r1, Operand::Zero()); __ cmp(r1, Operand::Zero());
__ ldr(r4, MemOperand(r4, kNormalOffset), eq); __ ldr(r4, MemOperand(r4, kNormalOffset), eq);
...@@ -2635,7 +2635,7 @@ void ArgumentsAccessStub::GenerateNewNonStrictFast(MacroAssembler* masm) { ...@@ -2635,7 +2635,7 @@ void ArgumentsAccessStub::GenerateNewNonStrictFast(MacroAssembler* masm) {
__ str(r6, FieldMemOperand(r4, FixedArray::kMapOffset)); __ str(r6, FieldMemOperand(r4, FixedArray::kMapOffset));
__ add(r6, r1, Operand(Smi::FromInt(2))); __ add(r6, r1, Operand(Smi::FromInt(2)));
__ str(r6, FieldMemOperand(r4, FixedArray::kLengthOffset)); __ str(r6, FieldMemOperand(r4, FixedArray::kLengthOffset));
__ str(r8, FieldMemOperand(r4, FixedArray::kHeaderSize + 0 * kPointerSize)); __ str(cp, FieldMemOperand(r4, FixedArray::kHeaderSize + 0 * kPointerSize));
__ add(r6, r4, Operand(r1, LSL, 1)); __ add(r6, r4, Operand(r1, LSL, 1));
__ add(r6, r6, Operand(kParameterMapHeaderSize)); __ add(r6, r6, Operand(kParameterMapHeaderSize));
__ str(r6, FieldMemOperand(r4, FixedArray::kHeaderSize + 1 * kPointerSize)); __ str(r6, FieldMemOperand(r4, FixedArray::kHeaderSize + 1 * kPointerSize));
...@@ -3029,7 +3029,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) { ...@@ -3029,7 +3029,7 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
// For arguments 4 and 3 get string length, calculate start of string data and // For arguments 4 and 3 get string length, calculate start of string data and
// calculate the shift of the index (0 for ASCII and 1 for two byte). // calculate the shift of the index (0 for ASCII and 1 for two byte).
__ add(r8, subject, Operand(SeqString::kHeaderSize - kHeapObjectTag)); __ add(r7, subject, Operand(SeqString::kHeaderSize - kHeapObjectTag));
__ eor(r3, r3, Operand(1)); __ eor(r3, r3, Operand(1));
// Load the length from the original subject string from the previous stack // Load the length from the original subject string from the previous stack
// frame. Therefore we have to use fp, which points exactly to two pointer // frame. Therefore we have to use fp, which points exactly to two pointer
...@@ -3040,12 +3040,12 @@ void RegExpExecStub::Generate(MacroAssembler* masm) { ...@@ -3040,12 +3040,12 @@ void RegExpExecStub::Generate(MacroAssembler* masm) {
// Argument 4, r3: End of string data // Argument 4, r3: End of string data
// Argument 3, r2: Start of string data // Argument 3, r2: Start of string data
// Prepare start and end index of the input. // Prepare start and end index of the input.
__ add(r9, r8, Operand(r9, LSL, r3)); __ add(r9, r7, Operand(r9, LSL, r3));
__ add(r2, r9, Operand(r1, LSL, r3)); __ add(r2, r9, Operand(r1, LSL, r3));
__ ldr(r8, FieldMemOperand(subject, String::kLengthOffset)); __ ldr(r7, FieldMemOperand(subject, String::kLengthOffset));
__ SmiUntag(r8); __ SmiUntag(r7);
__ add(r3, r9, Operand(r8, LSL, r3)); __ add(r3, r9, Operand(r7, LSL, r3));
// Argument 2 (r1): Previous index. // Argument 2 (r1): Previous index.
// Already there // Already there
......
...@@ -64,8 +64,8 @@ const RegList kCalleeSaved = ...@@ -64,8 +64,8 @@ const RegList kCalleeSaved =
1 << 4 | // r4 v1 1 << 4 | // r4 v1
1 << 5 | // r5 v2 1 << 5 | // r5 v2
1 << 6 | // r6 v3 1 << 6 | // r6 v3
1 << 7 | // r7 v4 (pp in JavaScript code) 1 << 7 | // r7 v4 (cp in JavaScript code)
1 << 8 | // r8 v5 (cp in JavaScript code) 1 << 8 | // r8 v5 (pp in JavaScript code)
kR9Available << 9 | // r9 v6 kR9Available << 9 | // r9 v6
1 << 10 | // r10 v7 1 << 10 | // r10 v7
1 << 11; // r11 v8 (fp in JavaScript code) 1 << 11; // r11 v8 (fp in JavaScript code)
......
...@@ -45,8 +45,8 @@ inline MemOperand FieldMemOperand(Register object, int offset) { ...@@ -45,8 +45,8 @@ inline MemOperand FieldMemOperand(Register object, int offset) {
// Give alias names to registers // Give alias names to registers
const Register pp = { kRegister_r7_Code }; // Constant pool pointer. const Register cp = { kRegister_r7_Code }; // JavaScript context pointer.
const Register cp = { kRegister_r8_Code }; // JavaScript context pointer. const Register pp = { kRegister_r8_Code }; // Constant pool pointer.
const Register kRootRegister = { kRegister_r10_Code }; // Roots array pointer. const Register kRootRegister = { kRegister_r10_Code }; // Roots array pointer.
// Flags used for AllocateHeapNumber // Flags used for AllocateHeapNumber
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment