OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 #ifndef V8_COMPILER_INTERPRETER_ASSEMBLER_H_ | 5 #ifndef V8_COMPILER_INTERPRETER_ASSEMBLER_H_ |
6 #define V8_COMPILER_INTERPRETER_ASSEMBLER_H_ | 6 #define V8_COMPILER_INTERPRETER_ASSEMBLER_H_ |
7 | 7 |
8 // Clients of this interface shouldn't depend on lots of compiler internals. | 8 // Clients of this interface shouldn't depend on lots of compiler internals. |
9 // Do not include anything from src/compiler here! | 9 // Do not include anything from src/compiler here! |
10 #include "src/allocation.h" | 10 #include "src/allocation.h" |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 Node* BytecodeOperandReg8(int operand_index); | 53 Node* BytecodeOperandReg8(int operand_index); |
54 | 54 |
55 // Returns the index immediate for the short (16 bit) bytecode operand | 55 // Returns the index immediate for the short (16 bit) bytecode operand |
56 // |operand_index| in the current bytecode. | 56 // |operand_index| in the current bytecode. |
57 Node* BytecodeOperandIdx16(int operand_index); | 57 Node* BytecodeOperandIdx16(int operand_index); |
58 | 58 |
59 // Accumulator. | 59 // Accumulator. |
60 Node* GetAccumulator(); | 60 Node* GetAccumulator(); |
61 void SetAccumulator(Node* value); | 61 void SetAccumulator(Node* value); |
62 | 62 |
| 63 // Context. |
| 64 Node* GetContext(); |
| 65 void SetContext(Node* value); |
| 66 |
63 // Loads from and stores to the interpreter register file. | 67 // Loads from and stores to the interpreter register file. |
64 Node* LoadRegister(Node* reg_index); | 68 Node* LoadRegister(Node* reg_index); |
65 Node* StoreRegister(Node* value, Node* reg_index); | 69 Node* StoreRegister(Node* value, Node* reg_index); |
66 | 70 |
67 // Returns the location in memory of the register |reg_index| in the | 71 // Returns the location in memory of the register |reg_index| in the |
68 // interpreter register file. | 72 // interpreter register file. |
69 Node* RegisterLocation(Node* reg_index); | 73 Node* RegisterLocation(Node* reg_index); |
70 | 74 |
71 // Constants. | 75 // Constants. |
72 Node* Int32Constant(int value); | 76 Node* Int32Constant(int value); |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 | 140 |
137 private: | 141 private: |
138 // Returns a raw pointer to start of the register file on the stack. | 142 // Returns a raw pointer to start of the register file on the stack. |
139 Node* RegisterFileRawPointer(); | 143 Node* RegisterFileRawPointer(); |
140 // Returns a tagged pointer to the current function's BytecodeArray object. | 144 // Returns a tagged pointer to the current function's BytecodeArray object. |
141 Node* BytecodeArrayTaggedPointer(); | 145 Node* BytecodeArrayTaggedPointer(); |
142 // Returns the offset from the BytecodeArrayPointer of the current bytecode. | 146 // Returns the offset from the BytecodeArrayPointer of the current bytecode. |
143 Node* BytecodeOffset(); | 147 Node* BytecodeOffset(); |
144 // Returns a raw pointer to first entry in the interpreter dispatch table. | 148 // Returns a raw pointer to first entry in the interpreter dispatch table. |
145 Node* DispatchTableRawPointer(); | 149 Node* DispatchTableRawPointer(); |
146 // Returns a tagged pointer to the current context. | |
147 Node* ContextTaggedPointer(); | |
148 | 150 |
149 // Returns the offset of register |index| relative to RegisterFilePointer(). | 151 // Returns the offset of register |index| relative to RegisterFilePointer(). |
150 Node* RegisterFrameOffset(Node* index); | 152 Node* RegisterFrameOffset(Node* index); |
151 | 153 |
152 Node* SmiShiftBitsConstant(); | 154 Node* SmiShiftBitsConstant(); |
153 Node* BytecodeOperand(int operand_index); | 155 Node* BytecodeOperand(int operand_index); |
154 Node* BytecodeOperandSignExtended(int operand_index); | 156 Node* BytecodeOperandSignExtended(int operand_index); |
155 Node* BytecodeOperandShort(int operand_index); | 157 Node* BytecodeOperandShort(int operand_index); |
156 | 158 |
157 Node* CallN(CallDescriptor* descriptor, Node* code_target, Node** args); | 159 Node* CallN(CallDescriptor* descriptor, Node* code_target, Node** args); |
(...skipping 17 matching lines...) Expand all Loading... |
175 | 177 |
176 // Private helpers which delegate to RawMachineAssembler. | 178 // Private helpers which delegate to RawMachineAssembler. |
177 Isolate* isolate(); | 179 Isolate* isolate(); |
178 Schedule* schedule(); | 180 Schedule* schedule(); |
179 Zone* zone(); | 181 Zone* zone(); |
180 | 182 |
181 interpreter::Bytecode bytecode_; | 183 interpreter::Bytecode bytecode_; |
182 base::SmartPointer<RawMachineAssembler> raw_assembler_; | 184 base::SmartPointer<RawMachineAssembler> raw_assembler_; |
183 ZoneVector<Node*> end_nodes_; | 185 ZoneVector<Node*> end_nodes_; |
184 Node* accumulator_; | 186 Node* accumulator_; |
| 187 Node* context_; |
185 bool code_generated_; | 188 bool code_generated_; |
186 | 189 |
187 DISALLOW_COPY_AND_ASSIGN(InterpreterAssembler); | 190 DISALLOW_COPY_AND_ASSIGN(InterpreterAssembler); |
188 }; | 191 }; |
189 | 192 |
190 } // namespace compiler | 193 } // namespace compiler |
191 } // namespace internal | 194 } // namespace internal |
192 } // namespace v8 | 195 } // namespace v8 |
193 | 196 |
194 #endif // V8_COMPILER_INTERPRETER_ASSEMBLER_H_ | 197 #endif // V8_COMPILER_INTERPRETER_ASSEMBLER_H_ |
OLD | NEW |