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

Side by Side Diff: src/x64/assembler-x64.h

Issue 118115: X64: JSEntry Stub (Closed)
Patch Set: Addressed review comments Created 11 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
« no previous file with comments | « src/frames.h ('k') | src/x64/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 (c) 1994-2006 Sun Microsystems Inc. 1 // Copyright (c) 1994-2006 Sun Microsystems Inc.
2 // All Rights Reserved. 2 // All Rights Reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // - Redistributions of source code must retain the above copyright notice, 8 // - Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer. 9 // this list of conditions and the following disclaimer.
10 // 10 //
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 void movq(Register dst, Register src); 433 void movq(Register dst, Register src);
434 434
435 // Move 64 bit register value to 64-bit memory location. 435 // Move 64 bit register value to 64-bit memory location.
436 void movq(const Operand& dst, Register src); 436 void movq(const Operand& dst, Register src);
437 437
438 // New x64 instructions to load a 64-bit immediate into a register. 438 // New x64 instructions to load a 64-bit immediate into a register.
439 // All 64-bit immediates must have a relocation mode. 439 // All 64-bit immediates must have a relocation mode.
440 void movq(Register dst, void* ptr, RelocInfo::Mode rmode); 440 void movq(Register dst, void* ptr, RelocInfo::Mode rmode);
441 void movq(Register dst, int64_t value, RelocInfo::Mode rmode); 441 void movq(Register dst, int64_t value, RelocInfo::Mode rmode);
442 void movq(Register dst, const char* s, RelocInfo::Mode rmode); 442 void movq(Register dst, const char* s, RelocInfo::Mode rmode);
443 void movq(Register dst, const ExternalReference& ext, RelocInfo::Mode rmode); 443 // Moves the address of the external reference into the register.
444 void movq(Register dst, ExternalReference ext);
444 void movq(Register dst, Handle<Object> handle, RelocInfo::Mode rmode); 445 void movq(Register dst, Handle<Object> handle, RelocInfo::Mode rmode);
445 446
446 447
447 // New x64 instruction to load from an immediate 64-bit pointer into RAX. 448 // New x64 instruction to load from an immediate 64-bit pointer into RAX.
448 void load_rax(void* ptr, RelocInfo::Mode rmode); 449 void load_rax(void* ptr, RelocInfo::Mode rmode);
450 void load_rax(ExternalReference ext);
449 451
450 void movsx_b(Register dst, const Operand& src); 452 void movsx_b(Register dst, const Operand& src);
451 453
452 void movsx_w(Register dst, const Operand& src); 454 void movsx_w(Register dst, const Operand& src);
453 455
454 void movzx_b(Register dst, const Operand& src); 456 void movzx_b(Register dst, const Operand& src);
455 457
456 void movzx_w(Register dst, const Operand& src); 458 void movzx_w(Register dst, const Operand& src);
457 459
458 // Conditional moves 460 // Conditional moves
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
609 } 611 }
610 612
611 void shr(Register dst, Immediate shift_amount) { 613 void shr(Register dst, Immediate shift_amount) {
612 shift(dst, shift_amount, 0x5); 614 shift(dst, shift_amount, 0x5);
613 } 615 }
614 616
615 void shr(Register dst) { 617 void shr(Register dst) {
616 shift(dst, 0x5); 618 shift(dst, 0x5);
617 } 619 }
618 620
621 void store_rax(void* dst, RelocInfo::Mode mode);
622 void store_rax(ExternalReference ref);
623
619 void sub(Register dst, Register src) { 624 void sub(Register dst, Register src) {
620 arithmetic_op(0x2B, dst, src); 625 arithmetic_op(0x2B, dst, src);
621 } 626 }
622 627
623 void sub(Register dst, const Operand& src) { 628 void sub(Register dst, const Operand& src) {
624 arithmetic_op(0x2B, dst, src); 629 arithmetic_op(0x2B, dst, src);
625 } 630 }
626 631
627 void sub(const Operand& dst, Register src) { 632 void sub(const Operand& dst, Register src) {
628 arithmetic_op(0x29, src, dst); 633 arithmetic_op(0x29, src, dst);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 698
694 void bind(Label* L); // binds an unbound label L to the current code position 699 void bind(Label* L); // binds an unbound label L to the current code position
695 700
696 // Calls 701 // Calls
697 // Call near relative 32-bit displacement, relative to next instruction. 702 // Call near relative 32-bit displacement, relative to next instruction.
698 void call(Label* L); 703 void call(Label* L);
699 704
700 // Call near absolute indirect, address in register 705 // Call near absolute indirect, address in register
701 void call(Register adr); 706 void call(Register adr);
702 707
708 // Call near indirect
709 void call(const Operand& operand);
710
703 // Jumps 711 // Jumps
704 // Jump short or near relative. 712 // Jump short or near relative.
705 void jmp(Label* L); // unconditional jump to L 713 void jmp(Label* L); // unconditional jump to L
706 714
707 // Jump near absolute indirect (r64) 715 // Jump near absolute indirect (r64)
708 void jmp(Register adr); 716 void jmp(Register adr);
709 717
710 // Conditional jumps 718 // Conditional jumps
711 void j(Condition cc, Label* L); 719 void j(Condition cc, Label* L);
712 void j(Condition cc, byte* entry, RelocInfo::Mode rmode); 720 void j(Condition cc, byte* entry, RelocInfo::Mode rmode);
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
1026 private: 1034 private:
1027 Assembler* assembler_; 1035 Assembler* assembler_;
1028 #ifdef DEBUG 1036 #ifdef DEBUG
1029 int space_before_; 1037 int space_before_;
1030 #endif 1038 #endif
1031 }; 1039 };
1032 1040
1033 } } // namespace v8::internal 1041 } } // namespace v8::internal
1034 1042
1035 #endif // V8_X64_ASSEMBLER_X64_H_ 1043 #endif // V8_X64_ASSEMBLER_X64_H_
OLDNEW
« no previous file with comments | « src/frames.h ('k') | src/x64/assembler-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698