OLD | NEW |
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 676 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
687 void Builtins::Generate_NotifySoftDeoptimized(MacroAssembler* masm) { | 687 void Builtins::Generate_NotifySoftDeoptimized(MacroAssembler* masm) { |
688 Generate_NotifyDeoptimizedHelper(masm, Deoptimizer::SOFT); | 688 Generate_NotifyDeoptimizedHelper(masm, Deoptimizer::SOFT); |
689 } | 689 } |
690 | 690 |
691 | 691 |
692 void Builtins::Generate_NotifyLazyDeoptimized(MacroAssembler* masm) { | 692 void Builtins::Generate_NotifyLazyDeoptimized(MacroAssembler* masm) { |
693 Generate_NotifyDeoptimizedHelper(masm, Deoptimizer::LAZY); | 693 Generate_NotifyDeoptimizedHelper(masm, Deoptimizer::LAZY); |
694 } | 694 } |
695 | 695 |
696 | 696 |
697 void Builtins::Generate_NotifyOSR(MacroAssembler* masm) { | |
698 // For now, we are relying on the fact that Runtime::NotifyOSR | |
699 // doesn't do any garbage collection which allows us to save/restore | |
700 // the registers without worrying about which of them contain | |
701 // pointers. This seems a bit fragile. | |
702 __ Pushad(); | |
703 { | |
704 FrameScope scope(masm, StackFrame::INTERNAL); | |
705 __ CallRuntime(Runtime::kNotifyOSR, 0); | |
706 } | |
707 __ Popad(); | |
708 __ ret(0); | |
709 } | |
710 | |
711 | |
712 void Builtins::Generate_FunctionCall(MacroAssembler* masm) { | 697 void Builtins::Generate_FunctionCall(MacroAssembler* masm) { |
713 // Stack Layout: | 698 // Stack Layout: |
714 // rsp[0] : Return address | 699 // rsp[0] : Return address |
715 // rsp[8] : Argument n | 700 // rsp[8] : Argument n |
716 // rsp[16] : Argument n-1 | 701 // rsp[16] : Argument n-1 |
717 // ... | 702 // ... |
718 // rsp[8 * n] : Argument 1 | 703 // rsp[8 * n] : Argument 1 |
719 // rsp[8 * (n + 1)] : Receiver (function to call) | 704 // rsp[8 * (n + 1)] : Receiver (function to call) |
720 // | 705 // |
721 // rax contains the number of arguments, n, not counting the receiver. | 706 // rax contains the number of arguments, n, not counting the receiver. |
(...skipping 677 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1399 // And "return" to the OSR entry point of the function. | 1384 // And "return" to the OSR entry point of the function. |
1400 __ ret(0); | 1385 __ ret(0); |
1401 } | 1386 } |
1402 | 1387 |
1403 | 1388 |
1404 #undef __ | 1389 #undef __ |
1405 | 1390 |
1406 } } // namespace v8::internal | 1391 } } // namespace v8::internal |
1407 | 1392 |
1408 #endif // V8_TARGET_ARCH_X64 | 1393 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |