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

Side by Side Diff: src/x64/macro-assembler-x64.cc

Issue 246643014: CodeStubs contain their corresponding Isolate* now. (part 1) (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Feedback. Rebased. Created 6 years, 8 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/lithium-codegen-x64.cc ('k') | src/x64/stub-cache-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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 if (and_then == kReturnAtEnd) { 252 if (and_then == kReturnAtEnd) {
253 Label buffer_overflowed; 253 Label buffer_overflowed;
254 j(not_equal, &buffer_overflowed, Label::kNear); 254 j(not_equal, &buffer_overflowed, Label::kNear);
255 ret(0); 255 ret(0);
256 bind(&buffer_overflowed); 256 bind(&buffer_overflowed);
257 } else { 257 } else {
258 ASSERT(and_then == kFallThroughAtEnd); 258 ASSERT(and_then == kFallThroughAtEnd);
259 j(equal, &done, Label::kNear); 259 j(equal, &done, Label::kNear);
260 } 260 }
261 StoreBufferOverflowStub store_buffer_overflow = 261 StoreBufferOverflowStub store_buffer_overflow =
262 StoreBufferOverflowStub(save_fp); 262 StoreBufferOverflowStub(isolate(), save_fp);
263 CallStub(&store_buffer_overflow); 263 CallStub(&store_buffer_overflow);
264 if (and_then == kReturnAtEnd) { 264 if (and_then == kReturnAtEnd) {
265 ret(0); 265 ret(0);
266 } else { 266 } else {
267 ASSERT(and_then == kFallThroughAtEnd); 267 ASSERT(and_then == kFallThroughAtEnd);
268 bind(&done); 268 bind(&done);
269 } 269 }
270 } 270 }
271 271
272 272
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 &done, 430 &done,
431 Label::kNear); 431 Label::kNear);
432 432
433 CheckPageFlag(object, 433 CheckPageFlag(object,
434 value, // Used as scratch. 434 value, // Used as scratch.
435 MemoryChunk::kPointersFromHereAreInterestingMask, 435 MemoryChunk::kPointersFromHereAreInterestingMask,
436 zero, 436 zero,
437 &done, 437 &done,
438 Label::kNear); 438 Label::kNear);
439 439
440 RecordWriteStub stub(object, value, address, remembered_set_action, fp_mode); 440 RecordWriteStub stub(isolate(), object, value, address, remembered_set_action,
441 fp_mode);
441 CallStub(&stub); 442 CallStub(&stub);
442 443
443 bind(&done); 444 bind(&done);
444 445
445 // Clobber clobbered registers when running with the debug-code flag 446 // Clobber clobbered registers when running with the debug-code flag
446 // turned on to provoke errors. 447 // turned on to provoke errors.
447 if (emit_debug_code()) { 448 if (emit_debug_code()) {
448 Move(address, kZapValue, Assembler::RelocInfoNone()); 449 Move(address, kZapValue, Assembler::RelocInfoNone());
449 Move(value, kZapValue, Assembler::RelocInfoNone()); 450 Move(value, kZapValue, Assembler::RelocInfoNone());
450 } 451 }
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 IllegalOperation(num_arguments); 602 IllegalOperation(num_arguments);
602 return; 603 return;
603 } 604 }
604 605
605 // TODO(1236192): Most runtime routines don't need the number of 606 // TODO(1236192): Most runtime routines don't need the number of
606 // arguments passed in because it is constant. At some point we 607 // arguments passed in because it is constant. At some point we
607 // should remove this need and make the runtime routine entry code 608 // should remove this need and make the runtime routine entry code
608 // smarter. 609 // smarter.
609 Set(rax, num_arguments); 610 Set(rax, num_arguments);
610 LoadAddress(rbx, ExternalReference(f, isolate())); 611 LoadAddress(rbx, ExternalReference(f, isolate()));
611 CEntryStub ces(f->result_size, save_doubles); 612 CEntryStub ces(isolate(), f->result_size, save_doubles);
612 CallStub(&ces); 613 CallStub(&ces);
613 } 614 }
614 615
615 616
616 void MacroAssembler::CallExternalReference(const ExternalReference& ext, 617 void MacroAssembler::CallExternalReference(const ExternalReference& ext,
617 int num_arguments) { 618 int num_arguments) {
618 Set(rax, num_arguments); 619 Set(rax, num_arguments);
619 LoadAddress(rbx, ext); 620 LoadAddress(rbx, ext);
620 621
621 CEntryStub stub(1); 622 CEntryStub stub(isolate(), 1);
622 CallStub(&stub); 623 CallStub(&stub);
623 } 624 }
624 625
625 626
626 void MacroAssembler::TailCallExternalReference(const ExternalReference& ext, 627 void MacroAssembler::TailCallExternalReference(const ExternalReference& ext,
627 int num_arguments, 628 int num_arguments,
628 int result_size) { 629 int result_size) {
629 // ----------- S t a t e ------------- 630 // ----------- S t a t e -------------
630 // -- rsp[0] : return address 631 // -- rsp[0] : return address
631 // -- rsp[8] : argument num_arguments - 1 632 // -- rsp[8] : argument num_arguments - 1
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
820 call(rax); 821 call(rax);
821 movp(rax, prev_limit_reg); 822 movp(rax, prev_limit_reg);
822 jmp(&leave_exit_frame); 823 jmp(&leave_exit_frame);
823 } 824 }
824 825
825 826
826 void MacroAssembler::JumpToExternalReference(const ExternalReference& ext, 827 void MacroAssembler::JumpToExternalReference(const ExternalReference& ext,
827 int result_size) { 828 int result_size) {
828 // Set the entry point and jump to the C entry runtime stub. 829 // Set the entry point and jump to the C entry runtime stub.
829 LoadAddress(rbx, ext); 830 LoadAddress(rbx, ext);
830 CEntryStub ces(result_size); 831 CEntryStub ces(isolate(), result_size);
831 jmp(ces.GetCode(isolate()), RelocInfo::CODE_TARGET); 832 jmp(ces.GetCode(isolate()), RelocInfo::CODE_TARGET);
832 } 833 }
833 834
834 835
835 void MacroAssembler::InvokeBuiltin(Builtins::JavaScript id, 836 void MacroAssembler::InvokeBuiltin(Builtins::JavaScript id,
836 InvokeFlag flag, 837 InvokeFlag flag,
837 const CallWrapper& call_wrapper) { 838 const CallWrapper& call_wrapper) {
838 // You can't call a builtin without a valid frame. 839 // You can't call a builtin without a valid frame.
839 ASSERT(flag == JUMP_FUNCTION || has_frame()); 840 ASSERT(flag == JUMP_FUNCTION || has_frame());
840 841
(...skipping 2454 matching lines...) Expand 10 before | Expand all | Expand 10 after
3295 cmpq(src, Immediate(0xffffffff)); 3296 cmpq(src, Immediate(0xffffffff));
3296 Assert(below_equal, kInputGPRIsExpectedToHaveUpper32Cleared); 3297 Assert(below_equal, kInputGPRIsExpectedToHaveUpper32Cleared);
3297 } 3298 }
3298 cvtqsi2sd(dst, src); 3299 cvtqsi2sd(dst, src);
3299 } 3300 }
3300 3301
3301 3302
3302 void MacroAssembler::SlowTruncateToI(Register result_reg, 3303 void MacroAssembler::SlowTruncateToI(Register result_reg,
3303 Register input_reg, 3304 Register input_reg,
3304 int offset) { 3305 int offset) {
3305 DoubleToIStub stub(input_reg, result_reg, offset, true); 3306 DoubleToIStub stub(isolate(), input_reg, result_reg, offset, true);
3306 call(stub.GetCode(isolate()), RelocInfo::CODE_TARGET); 3307 call(stub.GetCode(isolate()), RelocInfo::CODE_TARGET);
3307 } 3308 }
3308 3309
3309 3310
3310 void MacroAssembler::TruncateHeapNumberToI(Register result_reg, 3311 void MacroAssembler::TruncateHeapNumberToI(Register result_reg,
3311 Register input_reg) { 3312 Register input_reg) {
3312 Label done; 3313 Label done;
3313 movsd(xmm0, FieldOperand(input_reg, HeapNumber::kValueOffset)); 3314 movsd(xmm0, FieldOperand(input_reg, HeapNumber::kValueOffset));
3314 cvttsd2siq(result_reg, xmm0); 3315 cvttsd2siq(result_reg, xmm0);
3315 cmpq(result_reg, Immediate(1)); 3316 cmpq(result_reg, Immediate(1));
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after
3688 subl(counter_operand, Immediate(value)); 3689 subl(counter_operand, Immediate(value));
3689 } 3690 }
3690 } 3691 }
3691 } 3692 }
3692 3693
3693 3694
3694 #ifdef ENABLE_DEBUGGER_SUPPORT 3695 #ifdef ENABLE_DEBUGGER_SUPPORT
3695 void MacroAssembler::DebugBreak() { 3696 void MacroAssembler::DebugBreak() {
3696 Set(rax, 0); // No arguments. 3697 Set(rax, 0); // No arguments.
3697 LoadAddress(rbx, ExternalReference(Runtime::kDebugBreak, isolate())); 3698 LoadAddress(rbx, ExternalReference(Runtime::kDebugBreak, isolate()));
3698 CEntryStub ces(1); 3699 CEntryStub ces(isolate(), 1);
3699 ASSERT(AllowThisStubCall(&ces)); 3700 ASSERT(AllowThisStubCall(&ces));
3700 Call(ces.GetCode(isolate()), RelocInfo::DEBUG_BREAK); 3701 Call(ces.GetCode(isolate()), RelocInfo::DEBUG_BREAK);
3701 } 3702 }
3702 #endif // ENABLE_DEBUGGER_SUPPORT 3703 #endif // ENABLE_DEBUGGER_SUPPORT
3703 3704
3704 3705
3705 void MacroAssembler::InvokeCode(Register code, 3706 void MacroAssembler::InvokeCode(Register code,
3706 const ParameterCount& expected, 3707 const ParameterCount& expected,
3707 const ParameterCount& actual, 3708 const ParameterCount& actual,
3708 InvokeFlag flag, 3709 InvokeFlag flag,
(...skipping 1494 matching lines...) Expand 10 before | Expand all | Expand 10 after
5203 if (ms.shift() > 0) sarl(rdx, Immediate(ms.shift())); 5204 if (ms.shift() > 0) sarl(rdx, Immediate(ms.shift()));
5204 movl(rax, dividend); 5205 movl(rax, dividend);
5205 shrl(rax, Immediate(31)); 5206 shrl(rax, Immediate(31));
5206 addl(rdx, rax); 5207 addl(rdx, rax);
5207 } 5208 }
5208 5209
5209 5210
5210 } } // namespace v8::internal 5211 } } // namespace v8::internal
5211 5212
5212 #endif // V8_TARGET_ARCH_X64 5213 #endif // V8_TARGET_ARCH_X64
OLDNEW
« no previous file with comments | « src/x64/lithium-codegen-x64.cc ('k') | src/x64/stub-cache-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698