Reviewers: Toon Verwaest,
Message:
Hi Toon,
PTAL. This is the one more patch we discussed in the talk. It is the current
last modification to the x64 port for supporting x32 port.
Thanks
-Haitao
Description:
Change some cmpq to cmpp, times_8 to times_pointer_size for x32 port.
Please review this at https://codereview.chromium.org/334793003/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+12, -11 lines):
M src/x64/code-stubs-x64.cc
M src/x64/full-codegen-x64.cc
M src/x64/lithium-codegen-x64.cc
M src/x64/macro-assembler-x64.cc
Index: src/x64/code-stubs-x64.cc
diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc
index
f8a6506c89b4a1cf633d9fa33fbdcc6fbdccb7d5..a914cfa41e8629c8379197d4fb5a2a57ab02f76a
100644
--- a/src/x64/code-stubs-x64.cc
+++ b/src/x64/code-stubs-x64.cc
@@ -2375,10 +2375,10 @@ void CallIC_ArrayStub::Generate(MacroAssembler*
masm) {
__ SmiToInteger32(rdx, rdx);
__ LoadGlobalFunction(Context::ARRAY_FUNCTION_INDEX, rcx);
- __ cmpq(rdi, rcx);
+ __ cmpp(rdi, rcx);
__ j(not_equal, &miss);
- __ movq(rax, Immediate(arg_count()));
+ __ movp(rax, Immediate(arg_count()));
__ movp(rbx, FieldOperand(rbx, rdx, times_pointer_size,
FixedArray::kHeaderSize));
@@ -2417,7 +2417,7 @@ void CallICStub::Generate(MacroAssembler* masm) {
// The checks. First, does rdi match the recorded monomorphic target?
__ SmiToInteger32(rdx, rdx);
- __ cmpq(rdi, FieldOperand(rbx, rdx, times_pointer_size,
+ __ cmpp(rdi, FieldOperand(rbx, rdx, times_pointer_size,
FixedArray::kHeaderSize));
__ j(not_equal, &extra_checks_or_miss);
Index: src/x64/full-codegen-x64.cc
diff --git a/src/x64/full-codegen-x64.cc b/src/x64/full-codegen-x64.cc
index
1816abe294fd0921409b2a1138167b686b934d72..5ac7ba8c82c36baff78aa5cc382a3995378f2e3b
100644
--- a/src/x64/full-codegen-x64.cc
+++ b/src/x64/full-codegen-x64.cc
@@ -2950,7 +2950,8 @@ void
FullCodeGenerator::EmitIsStringWrapperSafeForDefaultValueOf(
// rcx: valid entries in the descriptor array.
// Calculate the end of the descriptor array.
__ imulp(rcx, rcx, Immediate(DescriptorArray::kDescriptorSize));
- __ leap(rcx, Operand(r8, rcx, times_8, DescriptorArray::kFirstOffset));
+ __ leap(rcx,
+ Operand(r8, rcx, times_pointer_size,
DescriptorArray::kFirstOffset));
// Calculate location of the first key name.
__ addp(r8, Immediate(DescriptorArray::kFirstOffset));
// Loop through all the keys in the descriptor array. If one of these is
the
Index: src/x64/lithium-codegen-x64.cc
diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc
index
81e8e9b99a1c6d30ea70d493e29747170aa0a062..7cb8c7359c2d0881c6ddc5a99fe17735f4766611
100644
--- a/src/x64/lithium-codegen-x64.cc
+++ b/src/x64/lithium-codegen-x64.cc
@@ -167,7 +167,7 @@ bool LCodeGen::GeneratePrologue() {
#endif
__ Push(rax);
__ Set(rax, slots);
- __ movq(kScratchRegister, kSlotsZapValue);
+ __ Set(kScratchRegister, kSlotsZapValue);
Label loop;
__ bind(&loop);
__ movp(MemOperand(rsp, rax, times_pointer_size, 0),
@@ -744,7 +744,7 @@ void LCodeGen::DeoptimizeIf(Condition cc,
ExternalReference count =
ExternalReference::stress_deopt_count(isolate());
Label no_deopt;
__ pushfq();
- __ Push(rax);
+ __ pushq(rax);
Operand count_operand = masm()->ExternalOperand(count,
kScratchRegister);
__ movl(rax, count_operand);
__ subl(rax, Immediate(1));
@@ -752,13 +752,13 @@ void LCodeGen::DeoptimizeIf(Condition cc,
if (FLAG_trap_on_deopt) __ int3();
__ movl(rax, Immediate(FLAG_deopt_every_n_times));
__ movl(count_operand, rax);
- __ Pop(rax);
+ __ popq(rax);
__ popfq();
ASSERT(frame_is_built_);
__ call(entry, RelocInfo::RUNTIME_ENTRY);
__ bind(&no_deopt);
__ movl(count_operand, rax);
- __ Pop(rax);
+ __ popq(rax);
__ popfq();
}
@@ -2746,7 +2746,7 @@ void
LCodeGen::DoDeferredInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr,
__ Push(ToRegister(instr->value()));
__ Push(instr->function());
- static const int kAdditionalDelta = 10;
+ static const int kAdditionalDelta = kPointerSize == kInt64Size ? 10 :
16;
int delta =
masm_->SizeOfCodeGeneratedSince(map_check) + kAdditionalDelta;
ASSERT(delta >= 0);
@@ -4715,7 +4715,7 @@ void LCodeGen::DoDeferredNumberTagIU(LInstruction*
instr,
if (FLAG_inline_new) {
__ AllocateHeapNumber(reg, tmp, &slow);
- __ jmp(&done, Label::kNear);
+ __ jmp(&done, kPointerSize == kInt64Size ? Label::kNear : Label::kFar);
}
// Slow case: Call the runtime system to do the number allocation.
Index: src/x64/macro-assembler-x64.cc
diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc
index
39acf80034019e963f78ffc4b549b83d46a182d3..291181fcdc9a514eece4abe09a67f0ee9f0d4d11
100644
--- a/src/x64/macro-assembler-x64.cc
+++ b/src/x64/macro-assembler-x64.cc
@@ -1100,7 +1100,7 @@ void MacroAssembler::LoadSmiConstant(Register dst,
Smi* source) {
if (emit_debug_code()) {
Move(dst, Smi::FromInt(kSmiConstantRegisterValue),
Assembler::RelocInfoNone());
- cmpq(dst, kSmiConstantRegister);
+ cmpp(dst, kSmiConstantRegister);
Assert(equal, kUninitializedKSmiConstantRegister);
}
int value = source->value();
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.