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 1051 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1062 static void Generate_EnterBytecodeDispatch(MacroAssembler* masm) { | 1062 static void Generate_EnterBytecodeDispatch(MacroAssembler* masm) { |
1063 // Initialize register file register and dispatch table register. | 1063 // Initialize register file register and dispatch table register. |
1064 __ add(kInterpreterRegisterFileRegister, fp, | 1064 __ add(kInterpreterRegisterFileRegister, fp, |
1065 Operand(InterpreterFrameConstants::kRegisterFilePointerFromFp)); | 1065 Operand(InterpreterFrameConstants::kRegisterFilePointerFromFp)); |
1066 __ LoadRoot(kInterpreterDispatchTableRegister, | 1066 __ LoadRoot(kInterpreterDispatchTableRegister, |
1067 Heap::kInterpreterTableRootIndex); | 1067 Heap::kInterpreterTableRootIndex); |
1068 __ add(kInterpreterDispatchTableRegister, kInterpreterDispatchTableRegister, | 1068 __ add(kInterpreterDispatchTableRegister, kInterpreterDispatchTableRegister, |
1069 Operand(FixedArray::kHeaderSize - kHeapObjectTag)); | 1069 Operand(FixedArray::kHeaderSize - kHeapObjectTag)); |
1070 | 1070 |
1071 // Get the context from the frame. | 1071 // Get the context from the frame. |
1072 // TODO(rmcilroy): Update interpreter frame to expect current context at the | |
1073 // context slot instead of the function context. | |
1074 __ ldr(kContextRegister, | 1072 __ ldr(kContextRegister, |
1075 MemOperand(kInterpreterRegisterFileRegister, | 1073 MemOperand(kInterpreterRegisterFileRegister, |
1076 InterpreterFrameConstants::kContextFromRegisterPointer)); | 1074 InterpreterFrameConstants::kContextFromRegisterPointer)); |
1077 | 1075 |
1078 // Get the bytecode array pointer from the frame. | 1076 // Get the bytecode array pointer from the frame. |
1079 __ ldr(r1, | 1077 __ ldr(r1, |
1080 MemOperand(kInterpreterRegisterFileRegister, | 1078 MemOperand(kInterpreterRegisterFileRegister, |
1081 InterpreterFrameConstants::kFunctionFromRegisterPointer)); | 1079 InterpreterFrameConstants::kFunctionFromRegisterPointer)); |
1082 __ ldr(r1, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); | 1080 __ ldr(r1, FieldMemOperand(r1, JSFunction::kSharedFunctionInfoOffset)); |
1083 __ ldr(kInterpreterBytecodeArrayRegister, | 1081 __ ldr(kInterpreterBytecodeArrayRegister, |
(...skipping 1385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2469 } | 2467 } |
2470 } | 2468 } |
2471 | 2469 |
2472 | 2470 |
2473 #undef __ | 2471 #undef __ |
2474 | 2472 |
2475 } // namespace internal | 2473 } // namespace internal |
2476 } // namespace v8 | 2474 } // namespace v8 |
2477 | 2475 |
2478 #endif // V8_TARGET_ARCH_ARM | 2476 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |