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

Side by Side Diff: src/x64/builtins-x64.cc

Issue 174394: X64: Small changes to let WIN64 platform compile. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 11 years, 4 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 | « no previous file | src/x64/codegen-x64.cc » ('j') | src/x64/frames-x64.h » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 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 738 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 // - JSFunction* function ( 749 // - JSFunction* function (
750 // - Object* receiver 750 // - Object* receiver
751 // - int argc 751 // - int argc
752 // - Object*** argv 752 // - Object*** argv
753 // (see Handle::Invoke in execution.cc). 753 // (see Handle::Invoke in execution.cc).
754 754
755 // Platform specific argument handling. After this, the stack contains 755 // Platform specific argument handling. After this, the stack contains
756 // an internal frame and the pushed function and receiver, and 756 // an internal frame and the pushed function and receiver, and
757 // register rax and rbx holds the argument count and argument array, 757 // register rax and rbx holds the argument count and argument array,
758 // while rdi holds the function pointer and rsi the context. 758 // while rdi holds the function pointer and rsi the context.
759 #ifdef __MSVC__ 759 #ifdef _WIN64
760 // MSVC parameters in: 760 // MSVC parameters in:
761 // rcx : entry (ignored) 761 // rcx : entry (ignored)
762 // rdx : function 762 // rdx : function
763 // r8 : receiver 763 // r8 : receiver
764 // r9 : argc 764 // r9 : argc
765 // [rsp+0x20] : argv 765 // [rsp+0x20] : argv
766 766
767 // Clear the context before we push it when entering the JS frame. 767 // Clear the context before we push it when entering the JS frame.
768 __ xor_(rsi, rsi); 768 __ xor_(rsi, rsi);
769 // Enter an internal frame.
770 __ EnterInternalFrame(); 769 __ EnterInternalFrame();
771 770
772 // Load the function context into rsi. 771 // Load the function context into rsi.
773 __ movq(rsi, FieldOperand(rdx, JSFunction::kContextOffset)); 772 __ movq(rsi, FieldOperand(rdx, JSFunction::kContextOffset));
774 773
775 // Push the function and the receiver onto the stack. 774 // Push the function and the receiver onto the stack.
776 __ push(rdx); 775 __ push(rdx);
777 __ push(r8); 776 __ push(r8);
778 777
779 // Load the number of arguments and setup pointer to the arguments. 778 // Load the number of arguments and setup pointer to the arguments.
780 __ movq(rax, r9); 779 __ movq(rax, r9);
781 // Load the previous frame pointer to access C argument on stack 780 // Load the previous frame pointer to access C argument on stack
782 __ movq(kScratchRegister, Operand(rbp, 0)); 781 __ movq(kScratchRegister, Operand(rbp, 0));
783 __ movq(rbx, Operand(kScratchRegister, EntryFrameConstants::kArgvOffset)); 782 __ movq(rbx, Operand(kScratchRegister, EntryFrameConstants::kArgvOffset));
784 // Load the function pointer into rdi. 783 // Load the function pointer into rdi.
785 __ movq(rdi, rdx); 784 __ movq(rdi, rdx);
786 #else // !defined(__MSVC__) 785 #else // !defined(_WIN64)
787 // GCC parameters in: 786 // GCC parameters in:
788 // rdi : entry (ignored) 787 // rdi : entry (ignored)
789 // rsi : function 788 // rsi : function
790 // rdx : receiver 789 // rdx : receiver
791 // rcx : argc 790 // rcx : argc
792 // r8 : argv 791 // r8 : argv
793 792
794 __ movq(rdi, rsi); 793 __ movq(rdi, rsi);
795 // rdi : function 794 // rdi : function
796 795
797 // Clear the context before we push it when entering the JS frame. 796 // Clear the context before we push it when entering the JS frame.
798 __ xor_(rsi, rsi); 797 __ xor_(rsi, rsi);
799 // Enter an internal frame. 798 // Enter an internal frame.
800 __ EnterInternalFrame(); 799 __ EnterInternalFrame();
801 800
802 // Push the function and receiver and setup the context. 801 // Push the function and receiver and setup the context.
803 __ push(rdi); 802 __ push(rdi);
804 __ push(rdx); 803 __ push(rdx);
805 __ movq(rsi, FieldOperand(rdi, JSFunction::kContextOffset)); 804 __ movq(rsi, FieldOperand(rdi, JSFunction::kContextOffset));
806 805
807 // Load the number of arguments and setup pointer to the arguments. 806 // Load the number of arguments and setup pointer to the arguments.
808 __ movq(rax, rcx); 807 __ movq(rax, rcx);
809 __ movq(rbx, r8); 808 __ movq(rbx, r8);
810 #endif // __MSVC__ 809 #endif // _WIN64
811 // Current stack contents: 810 // Current stack contents:
812 // [rsp + 2 * kPointerSize ... ]: Internal frame 811 // [rsp + 2 * kPointerSize ... ]: Internal frame
813 // [rsp + kPointerSize] : function 812 // [rsp + kPointerSize] : function
814 // [rsp] : receiver 813 // [rsp] : receiver
815 // Current register contents: 814 // Current register contents:
816 // rax : argc 815 // rax : argc
817 // rbx : argv 816 // rbx : argv
818 // rsi : context 817 // rsi : context
819 // rdi : function 818 // rdi : function
820 819
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
855 void Builtins::Generate_JSEntryTrampoline(MacroAssembler* masm) { 854 void Builtins::Generate_JSEntryTrampoline(MacroAssembler* masm) {
856 Generate_JSEntryTrampolineHelper(masm, false); 855 Generate_JSEntryTrampolineHelper(masm, false);
857 } 856 }
858 857
859 858
860 void Builtins::Generate_JSConstructEntryTrampoline(MacroAssembler* masm) { 859 void Builtins::Generate_JSConstructEntryTrampoline(MacroAssembler* masm) {
861 Generate_JSEntryTrampolineHelper(masm, true); 860 Generate_JSEntryTrampolineHelper(masm, true);
862 } 861 }
863 862
864 } } // namespace v8::internal 863 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | src/x64/codegen-x64.cc » ('j') | src/x64/frames-x64.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698