| 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_MIPS | 5 #if V8_TARGET_ARCH_MIPS | 
| 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 753 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 764 void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) { | 764 void Builtins::Generate_InterpreterEntryTrampoline(MacroAssembler* masm) { | 
| 765   // Open a frame scope to indicate that there is a frame on the stack.  The | 765   // Open a frame scope to indicate that there is a frame on the stack.  The | 
| 766   // MANUAL indicates that the scope shouldn't actually generate code to set up | 766   // MANUAL indicates that the scope shouldn't actually generate code to set up | 
| 767   // the frame (that is done below). | 767   // the frame (that is done below). | 
| 768   FrameScope frame_scope(masm, StackFrame::MANUAL); | 768   FrameScope frame_scope(masm, StackFrame::MANUAL); | 
| 769 | 769 | 
| 770   __ Push(ra, fp, cp, a1); | 770   __ Push(ra, fp, cp, a1); | 
| 771   __ Addu(fp, sp, Operand(StandardFrameConstants::kFixedFrameSizeFromFp)); | 771   __ Addu(fp, sp, Operand(StandardFrameConstants::kFixedFrameSizeFromFp)); | 
| 772   __ Push(a3); | 772   __ Push(a3); | 
| 773 | 773 | 
|  | 774   // Push zero for bytecode array offset. | 
|  | 775   __ Push(zero_reg); | 
|  | 776 | 
| 774   // Get the bytecode array from the function object and load the pointer to the | 777   // Get the bytecode array from the function object and load the pointer to the | 
| 775   // first entry into kInterpreterBytecodeRegister. | 778   // first entry into kInterpreterBytecodeRegister. | 
| 776   __ lw(a0, FieldMemOperand(a1, JSFunction::kSharedFunctionInfoOffset)); | 779   __ lw(a0, FieldMemOperand(a1, JSFunction::kSharedFunctionInfoOffset)); | 
| 777   __ lw(kInterpreterBytecodeArrayRegister, | 780   __ lw(kInterpreterBytecodeArrayRegister, | 
| 778         FieldMemOperand(a0, SharedFunctionInfo::kFunctionDataOffset)); | 781         FieldMemOperand(a0, SharedFunctionInfo::kFunctionDataOffset)); | 
| 779 | 782 | 
| 780   if (FLAG_debug_code) { | 783   if (FLAG_debug_code) { | 
| 781     // Check function data field is actually a BytecodeArray object. | 784     // Check function data field is actually a BytecodeArray object. | 
| 782     __ SmiTst(kInterpreterBytecodeArrayRegister, t0); | 785     __ SmiTst(kInterpreterBytecodeArrayRegister, t0); | 
| 783     __ Assert(ne, kFunctionDataShouldBeBytecodeArrayOnInterpreterEntry, t0, | 786     __ Assert(ne, kFunctionDataShouldBeBytecodeArrayOnInterpreterEntry, t0, | 
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 828     __ LoadRoot(at, Heap::kStackLimitRootIndex); | 831     __ LoadRoot(at, Heap::kStackLimitRootIndex); | 
| 829     __ Branch(&ok, hs, sp, Operand(at)); | 832     __ Branch(&ok, hs, sp, Operand(at)); | 
| 830     __ push(kInterpreterBytecodeArrayRegister); | 833     __ push(kInterpreterBytecodeArrayRegister); | 
| 831     __ CallRuntime(Runtime::kStackGuard, 0); | 834     __ CallRuntime(Runtime::kStackGuard, 0); | 
| 832     __ pop(kInterpreterBytecodeArrayRegister); | 835     __ pop(kInterpreterBytecodeArrayRegister); | 
| 833     __ bind(&ok); | 836     __ bind(&ok); | 
| 834   } | 837   } | 
| 835 | 838 | 
| 836   // Load bytecode offset and dispatch table into registers. | 839   // Load bytecode offset and dispatch table into registers. | 
| 837   __ LoadRoot(kInterpreterAccumulatorRegister, Heap::kUndefinedValueRootIndex); | 840   __ LoadRoot(kInterpreterAccumulatorRegister, Heap::kUndefinedValueRootIndex); | 
| 838   __ Subu(kInterpreterRegisterFileRegister, fp, | 841   __ Addu(kInterpreterRegisterFileRegister, fp, | 
| 839           Operand(2 * kPointerSize + | 842           Operand(InterpreterFrameConstants::kRegisterFilePointerFromFp)); | 
| 840                   StandardFrameConstants::kFixedFrameSizeFromFp)); |  | 
| 841   __ li(kInterpreterBytecodeOffsetRegister, | 843   __ li(kInterpreterBytecodeOffsetRegister, | 
| 842         Operand(BytecodeArray::kHeaderSize - kHeapObjectTag)); | 844         Operand(BytecodeArray::kHeaderSize - kHeapObjectTag)); | 
| 843   __ LoadRoot(kInterpreterDispatchTableRegister, | 845   __ LoadRoot(kInterpreterDispatchTableRegister, | 
| 844               Heap::kInterpreterTableRootIndex); | 846               Heap::kInterpreterTableRootIndex); | 
| 845   __ Addu(kInterpreterDispatchTableRegister, kInterpreterDispatchTableRegister, | 847   __ Addu(kInterpreterDispatchTableRegister, kInterpreterDispatchTableRegister, | 
| 846           Operand(FixedArray::kHeaderSize - kHeapObjectTag)); | 848           Operand(FixedArray::kHeaderSize - kHeapObjectTag)); | 
| 847 | 849 | 
| 848   // Dispatch to the first bytecode handler for the function. | 850   // Dispatch to the first bytecode handler for the function. | 
| 849   __ Addu(a0, kInterpreterBytecodeArrayRegister, | 851   __ Addu(a0, kInterpreterBytecodeArrayRegister, | 
| 850           kInterpreterBytecodeOffsetRegister); | 852           kInterpreterBytecodeOffsetRegister); | 
| (...skipping 1122 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1973   } | 1975   } | 
| 1974 } | 1976 } | 
| 1975 | 1977 | 
| 1976 | 1978 | 
| 1977 #undef __ | 1979 #undef __ | 
| 1978 | 1980 | 
| 1979 }  // namespace internal | 1981 }  // namespace internal | 
| 1980 }  // namespace v8 | 1982 }  // namespace v8 | 
| 1981 | 1983 | 
| 1982 #endif  // V8_TARGET_ARCH_MIPS | 1984 #endif  // V8_TARGET_ARCH_MIPS | 
| OLD | NEW | 
|---|