OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #if V8_TARGET_ARCH_ARM | 5 #if V8_TARGET_ARCH_ARM |
6 | 6 |
7 #include "src/codegen.h" | 7 #include "src/codegen.h" |
8 #include "src/debug/debug.h" | 8 #include "src/debug/debug.h" |
9 #include "src/deoptimizer.h" | 9 #include "src/deoptimizer.h" |
10 #include "src/full-codegen/full-codegen.h" | 10 #include "src/full-codegen/full-codegen.h" |
(...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
761 __ cmp(r2, Operand(argc, LSL, kPointerSizeLog2)); | 761 __ cmp(r2, Operand(argc, LSL, kPointerSizeLog2)); |
762 } | 762 } |
763 __ b(gt, &okay); // Signed comparison. | 763 __ b(gt, &okay); // Signed comparison. |
764 | 764 |
765 // Out of stack space. | 765 // Out of stack space. |
766 __ ldr(r1, MemOperand(fp, calleeOffset)); | 766 __ ldr(r1, MemOperand(fp, calleeOffset)); |
767 if (argc_is_tagged == kArgcIsUntaggedInt) { | 767 if (argc_is_tagged == kArgcIsUntaggedInt) { |
768 __ SmiTag(argc); | 768 __ SmiTag(argc); |
769 } | 769 } |
770 __ Push(r1, argc); | 770 __ Push(r1, argc); |
771 __ InvokeBuiltin(Context::STACK_OVERFLOW_BUILTIN_INDEX, CALL_FUNCTION); | 771 __ CallRuntime(Runtime::kThrowStackOverflow, 0); |
772 | 772 |
773 __ bind(&okay); | 773 __ bind(&okay); |
774 } | 774 } |
775 | 775 |
776 | 776 |
777 static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm, | 777 static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm, |
778 bool is_construct) { | 778 bool is_construct) { |
779 // Called from Generate_JS_Entry | 779 // Called from Generate_JS_Entry |
780 // r0: code entry | 780 // r0: code entry |
781 // r1: function | 781 // r1: function |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
913 // Load frame size from the BytecodeArray object. | 913 // Load frame size from the BytecodeArray object. |
914 __ ldr(r4, FieldMemOperand(kInterpreterBytecodeArrayRegister, | 914 __ ldr(r4, FieldMemOperand(kInterpreterBytecodeArrayRegister, |
915 BytecodeArray::kFrameSizeOffset)); | 915 BytecodeArray::kFrameSizeOffset)); |
916 | 916 |
917 // Do a stack check to ensure we don't go over the limit. | 917 // Do a stack check to ensure we don't go over the limit. |
918 Label ok; | 918 Label ok; |
919 __ sub(r9, sp, Operand(r4)); | 919 __ sub(r9, sp, Operand(r4)); |
920 __ LoadRoot(r2, Heap::kRealStackLimitRootIndex); | 920 __ LoadRoot(r2, Heap::kRealStackLimitRootIndex); |
921 __ cmp(r9, Operand(r2)); | 921 __ cmp(r9, Operand(r2)); |
922 __ b(hs, &ok); | 922 __ b(hs, &ok); |
923 __ InvokeBuiltin(Context::STACK_OVERFLOW_BUILTIN_INDEX, CALL_FUNCTION); | 923 __ CallRuntime(Runtime::kThrowStackOverflow, 0); |
924 __ bind(&ok); | 924 __ bind(&ok); |
925 | 925 |
926 // If ok, push undefined as the initial value for all register file entries. | 926 // If ok, push undefined as the initial value for all register file entries. |
927 Label loop_header; | 927 Label loop_header; |
928 Label loop_check; | 928 Label loop_check; |
929 __ LoadRoot(r9, Heap::kUndefinedValueRootIndex); | 929 __ LoadRoot(r9, Heap::kUndefinedValueRootIndex); |
930 __ b(&loop_check, al); | 930 __ b(&loop_check, al); |
931 __ bind(&loop_header); | 931 __ bind(&loop_header); |
932 // TODO(rmcilroy): Consider doing more than one push per loop iteration. | 932 // TODO(rmcilroy): Consider doing more than one push per loop iteration. |
933 __ push(r9); | 933 __ push(r9); |
(...skipping 853 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1787 // ------------------------------------------- | 1787 // ------------------------------------------- |
1788 // Dont adapt arguments. | 1788 // Dont adapt arguments. |
1789 // ------------------------------------------- | 1789 // ------------------------------------------- |
1790 __ bind(&dont_adapt_arguments); | 1790 __ bind(&dont_adapt_arguments); |
1791 __ Jump(r3); | 1791 __ Jump(r3); |
1792 | 1792 |
1793 __ bind(&stack_overflow); | 1793 __ bind(&stack_overflow); |
1794 { | 1794 { |
1795 FrameScope frame(masm, StackFrame::MANUAL); | 1795 FrameScope frame(masm, StackFrame::MANUAL); |
1796 EnterArgumentsAdaptorFrame(masm); | 1796 EnterArgumentsAdaptorFrame(masm); |
1797 __ InvokeBuiltin(Context::STACK_OVERFLOW_BUILTIN_INDEX, CALL_FUNCTION); | 1797 __ CallRuntime(Runtime::kThrowStackOverflow, 0); |
1798 __ bkpt(0); | 1798 __ bkpt(0); |
1799 } | 1799 } |
1800 } | 1800 } |
1801 | 1801 |
1802 | 1802 |
1803 #undef __ | 1803 #undef __ |
1804 | 1804 |
1805 } // namespace internal | 1805 } // namespace internal |
1806 } // namespace v8 | 1806 } // namespace v8 |
1807 | 1807 |
1808 #endif // V8_TARGET_ARCH_ARM | 1808 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |