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 728 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
739 __ add(r2, r2, Operand(Code::kHeaderSize - kHeapObjectTag)); | 739 __ add(r2, r2, Operand(Code::kHeaderSize - kHeapObjectTag)); |
740 __ mov(pc, r2); | 740 __ mov(pc, r2); |
741 } | 741 } |
742 | 742 |
743 | 743 |
744 void Builtins::Generate_InRecompileQueue(MacroAssembler* masm) { | 744 void Builtins::Generate_InRecompileQueue(MacroAssembler* masm) { |
745 GenerateTailCallToSharedCode(masm); | 745 GenerateTailCallToSharedCode(masm); |
746 } | 746 } |
747 | 747 |
748 | 748 |
| 749 void Builtins::Generate_InstallRecompiledCode(MacroAssembler* masm) { |
| 750 // Enter an internal frame. |
| 751 { |
| 752 FrameScope scope(masm, StackFrame::INTERNAL); |
| 753 |
| 754 // Preserve the function. |
| 755 __ push(r1); |
| 756 // Push call kind information. |
| 757 __ push(r5); |
| 758 |
| 759 // Push the function on the stack as the argument to the runtime function. |
| 760 __ push(r1); |
| 761 __ CallRuntime(Runtime::kInstallRecompiledCode, 1); |
| 762 // Calculate the entry point. |
| 763 __ add(r2, r0, Operand(Code::kHeaderSize - kHeapObjectTag)); |
| 764 |
| 765 // Restore call kind information. |
| 766 __ pop(r5); |
| 767 // Restore saved function. |
| 768 __ pop(r1); |
| 769 |
| 770 // Tear down internal frame. |
| 771 } |
| 772 |
| 773 // Do a tail-call of the compiled function. |
| 774 __ Jump(r2); |
| 775 } |
| 776 |
| 777 |
749 void Builtins::Generate_ParallelRecompile(MacroAssembler* masm) { | 778 void Builtins::Generate_ParallelRecompile(MacroAssembler* masm) { |
750 { | 779 { |
751 FrameScope scope(masm, StackFrame::INTERNAL); | 780 FrameScope scope(masm, StackFrame::INTERNAL); |
752 | 781 |
753 // Push a copy of the function onto the stack. | 782 // Push a copy of the function onto the stack. |
754 __ push(r1); | 783 __ push(r1); |
755 // Push call kind information. | 784 // Push call kind information. |
756 __ push(r5); | 785 __ push(r5); |
757 | 786 |
758 __ push(r1); // Function is also the parameter to the runtime call. | 787 __ push(r1); // Function is also the parameter to the runtime call. |
(...skipping 1127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1886 __ bind(&dont_adapt_arguments); | 1915 __ bind(&dont_adapt_arguments); |
1887 __ Jump(r3); | 1916 __ Jump(r3); |
1888 } | 1917 } |
1889 | 1918 |
1890 | 1919 |
1891 #undef __ | 1920 #undef __ |
1892 | 1921 |
1893 } } // namespace v8::internal | 1922 } } // namespace v8::internal |
1894 | 1923 |
1895 #endif // V8_TARGET_ARCH_ARM | 1924 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |