Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(506)

Side by Side Diff: src/x64/lithium-codegen-x64.cc

Issue 334793003: Change some cmpq to cmpp, times_8 to times_pointer_size for x32 port. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/x64/full-codegen-x64.cc ('k') | src/x64/macro-assembler-x64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_X64 7 #if V8_TARGET_ARCH_X64
8 8
9 #include "src/x64/lithium-codegen-x64.h" 9 #include "src/x64/lithium-codegen-x64.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 // Reserve space for the stack slots needed by the code. 160 // Reserve space for the stack slots needed by the code.
161 int slots = GetStackSlotCount(); 161 int slots = GetStackSlotCount();
162 if (slots > 0) { 162 if (slots > 0) {
163 if (FLAG_debug_code) { 163 if (FLAG_debug_code) {
164 __ subp(rsp, Immediate(slots * kPointerSize)); 164 __ subp(rsp, Immediate(slots * kPointerSize));
165 #ifdef _MSC_VER 165 #ifdef _MSC_VER
166 MakeSureStackPagesMapped(slots * kPointerSize); 166 MakeSureStackPagesMapped(slots * kPointerSize);
167 #endif 167 #endif
168 __ Push(rax); 168 __ Push(rax);
169 __ Set(rax, slots); 169 __ Set(rax, slots);
170 __ movq(kScratchRegister, kSlotsZapValue); 170 __ Set(kScratchRegister, kSlotsZapValue);
171 Label loop; 171 Label loop;
172 __ bind(&loop); 172 __ bind(&loop);
173 __ movp(MemOperand(rsp, rax, times_pointer_size, 0), 173 __ movp(MemOperand(rsp, rax, times_pointer_size, 0),
174 kScratchRegister); 174 kScratchRegister);
175 __ decl(rax); 175 __ decl(rax);
176 __ j(not_zero, &loop); 176 __ j(not_zero, &loop);
177 __ Pop(rax); 177 __ Pop(rax);
178 } else { 178 } else {
179 __ subp(rsp, Immediate(slots * kPointerSize)); 179 __ subp(rsp, Immediate(slots * kPointerSize));
180 #ifdef _MSC_VER 180 #ifdef _MSC_VER
(...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after
737 Deoptimizer::GetDeoptimizationEntry(isolate(), id, bailout_type); 737 Deoptimizer::GetDeoptimizationEntry(isolate(), id, bailout_type);
738 if (entry == NULL) { 738 if (entry == NULL) {
739 Abort(kBailoutWasNotPrepared); 739 Abort(kBailoutWasNotPrepared);
740 return; 740 return;
741 } 741 }
742 742
743 if (DeoptEveryNTimes()) { 743 if (DeoptEveryNTimes()) {
744 ExternalReference count = ExternalReference::stress_deopt_count(isolate()); 744 ExternalReference count = ExternalReference::stress_deopt_count(isolate());
745 Label no_deopt; 745 Label no_deopt;
746 __ pushfq(); 746 __ pushfq();
747 __ Push(rax); 747 __ pushq(rax);
748 Operand count_operand = masm()->ExternalOperand(count, kScratchRegister); 748 Operand count_operand = masm()->ExternalOperand(count, kScratchRegister);
749 __ movl(rax, count_operand); 749 __ movl(rax, count_operand);
750 __ subl(rax, Immediate(1)); 750 __ subl(rax, Immediate(1));
751 __ j(not_zero, &no_deopt, Label::kNear); 751 __ j(not_zero, &no_deopt, Label::kNear);
752 if (FLAG_trap_on_deopt) __ int3(); 752 if (FLAG_trap_on_deopt) __ int3();
753 __ movl(rax, Immediate(FLAG_deopt_every_n_times)); 753 __ movl(rax, Immediate(FLAG_deopt_every_n_times));
754 __ movl(count_operand, rax); 754 __ movl(count_operand, rax);
755 __ Pop(rax); 755 __ popq(rax);
756 __ popfq(); 756 __ popfq();
757 ASSERT(frame_is_built_); 757 ASSERT(frame_is_built_);
758 __ call(entry, RelocInfo::RUNTIME_ENTRY); 758 __ call(entry, RelocInfo::RUNTIME_ENTRY);
759 __ bind(&no_deopt); 759 __ bind(&no_deopt);
760 __ movl(count_operand, rax); 760 __ movl(count_operand, rax);
761 __ Pop(rax); 761 __ popq(rax);
762 __ popfq(); 762 __ popfq();
763 } 763 }
764 764
765 if (info()->ShouldTrapOnDeopt()) { 765 if (info()->ShouldTrapOnDeopt()) {
766 Label done; 766 Label done;
767 if (cc != no_condition) { 767 if (cc != no_condition) {
768 __ j(NegateCondition(cc), &done, Label::kNear); 768 __ j(NegateCondition(cc), &done, Label::kNear);
769 } 769 }
770 __ int3(); 770 __ int3();
771 __ bind(&done); 771 __ bind(&done);
(...skipping 1967 matching lines...) Expand 10 before | Expand all | Expand 10 after
2739 Label* map_check) { 2739 Label* map_check) {
2740 { 2740 {
2741 PushSafepointRegistersScope scope(this); 2741 PushSafepointRegistersScope scope(this);
2742 InstanceofStub::Flags flags = static_cast<InstanceofStub::Flags>( 2742 InstanceofStub::Flags flags = static_cast<InstanceofStub::Flags>(
2743 InstanceofStub::kNoFlags | InstanceofStub::kCallSiteInlineCheck); 2743 InstanceofStub::kNoFlags | InstanceofStub::kCallSiteInlineCheck);
2744 InstanceofStub stub(isolate(), flags); 2744 InstanceofStub stub(isolate(), flags);
2745 2745
2746 __ Push(ToRegister(instr->value())); 2746 __ Push(ToRegister(instr->value()));
2747 __ Push(instr->function()); 2747 __ Push(instr->function());
2748 2748
2749 static const int kAdditionalDelta = 10; 2749 static const int kAdditionalDelta = kPointerSize == kInt64Size ? 10 : 16;
2750 int delta = 2750 int delta =
2751 masm_->SizeOfCodeGeneratedSince(map_check) + kAdditionalDelta; 2751 masm_->SizeOfCodeGeneratedSince(map_check) + kAdditionalDelta;
2752 ASSERT(delta >= 0); 2752 ASSERT(delta >= 0);
2753 __ PushImm32(delta); 2753 __ PushImm32(delta);
2754 2754
2755 // We are pushing three values on the stack but recording a 2755 // We are pushing three values on the stack but recording a
2756 // safepoint with two arguments because stub is going to 2756 // safepoint with two arguments because stub is going to
2757 // remove the third argument from the stack before jumping 2757 // remove the third argument from the stack before jumping
2758 // to instanceof builtin on the slow path. 2758 // to instanceof builtin on the slow path.
2759 CallCodeGeneric(stub.GetCode(), 2759 CallCodeGeneric(stub.GetCode(),
(...skipping 1948 matching lines...) Expand 10 before | Expand all | Expand 10 after
4708 __ SmiToInteger32(reg, reg); 4708 __ SmiToInteger32(reg, reg);
4709 __ xorl(reg, Immediate(0x80000000)); 4709 __ xorl(reg, Immediate(0x80000000));
4710 __ cvtlsi2sd(temp_xmm, reg); 4710 __ cvtlsi2sd(temp_xmm, reg);
4711 } else { 4711 } else {
4712 ASSERT(signedness == UNSIGNED_INT32); 4712 ASSERT(signedness == UNSIGNED_INT32);
4713 __ LoadUint32(temp_xmm, reg); 4713 __ LoadUint32(temp_xmm, reg);
4714 } 4714 }
4715 4715
4716 if (FLAG_inline_new) { 4716 if (FLAG_inline_new) {
4717 __ AllocateHeapNumber(reg, tmp, &slow); 4717 __ AllocateHeapNumber(reg, tmp, &slow);
4718 __ jmp(&done, Label::kNear); 4718 __ jmp(&done, kPointerSize == kInt64Size ? Label::kNear : Label::kFar);
4719 } 4719 }
4720 4720
4721 // Slow case: Call the runtime system to do the number allocation. 4721 // Slow case: Call the runtime system to do the number allocation.
4722 __ bind(&slow); 4722 __ bind(&slow);
4723 { 4723 {
4724 // Put a valid pointer value in the stack slot where the result 4724 // Put a valid pointer value in the stack slot where the result
4725 // register is stored, as this register is in the pointer map, but contains 4725 // register is stored, as this register is in the pointer map, but contains
4726 // an integer value. 4726 // an integer value.
4727 __ Set(reg, 0); 4727 __ Set(reg, 0);
4728 4728
(...skipping 1114 matching lines...) Expand 10 before | Expand all | Expand 10 after
5843 CallRuntime(Runtime::kHiddenPushBlockContext, 2, instr); 5843 CallRuntime(Runtime::kHiddenPushBlockContext, 2, instr);
5844 RecordSafepoint(Safepoint::kNoLazyDeopt); 5844 RecordSafepoint(Safepoint::kNoLazyDeopt);
5845 } 5845 }
5846 5846
5847 5847
5848 #undef __ 5848 #undef __
5849 5849
5850 } } // namespace v8::internal 5850 } } // namespace v8::internal
5851 5851
5852 #endif // V8_TARGET_ARCH_X64 5852 #endif // V8_TARGET_ARCH_X64
OLDNEW
« no previous file with comments | « src/x64/full-codegen-x64.cc ('k') | src/x64/macro-assembler-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698