Index: src/compiler/interpreter-assembler.h |
diff --git a/src/compiler/interpreter-assembler.h b/src/compiler/interpreter-assembler.h |
index ead7b92d7aa8b6792398e0308ece8cdf844c4f7b..7d095c9be49d8de0d2f7cad45c827a506d491ead 100644 |
--- a/src/compiler/interpreter-assembler.h |
+++ b/src/compiler/interpreter-assembler.h |
@@ -22,9 +22,7 @@ class Zone; |
namespace compiler { |
class CallDescriptor; |
-class CommonOperatorBuilder; |
class Graph; |
-class MachineOperatorBuilder; |
class Node; |
class Operator; |
class RawMachineAssembler; |
@@ -38,33 +36,29 @@ class InterpreterAssembler { |
Handle<Code> GenerateCode(); |
+ // Accumulator. |
+ Node* GetAccumulator(); |
+ void SetAccumulator(Node* value); |
+ |
+ // Loads from and stores to the interpreter register file. |
+ Node* LoadRegister(Node* reg_index); |
+ Node* StoreRegister(Node* value, Node* reg_index); |
+ |
// Constants. |
Node* Int32Constant(int value); |
Node* NumberConstant(double value); |
Node* HeapConstant(Unique<HeapObject> object); |
- // Returns the bytecode operand |index| for the current bytecode. |
- Node* BytecodeOperand(int index); |
- |
- // Loads from and stores to the interpreter register file. |
- Node* LoadRegister(int index); |
- Node* LoadRegister(Node* index); |
- Node* StoreRegister(Node* value, int index); |
- Node* StoreRegister(Node* value, Node* index); |
- |
// Returns from the function. |
void Return(); |
// Dispatch to the bytecode. |
void Dispatch(); |
- protected: |
- static const int kFirstRegisterOffsetFromFp = |
- -kPointerSize - StandardFrameConstants::kFixedFrameSizeFromFp; |
- |
- // TODO(rmcilroy): Increase this when required. |
- static const int kMaxRegisterIndex = 255; |
+ Node* BytecodeOperand(int index); |
+ Node* BytecodeOperandSignExtended(int index); |
+ protected: |
// Close the graph. |
void End(); |
@@ -73,17 +67,16 @@ class InterpreterAssembler { |
Graph* graph(); |
private: |
+ // Returns a raw pointer to start of the register file on the stack. |
+ Node* RegisterFileRawPointer(); |
// Returns a tagged pointer to the current function's BytecodeArray object. |
- Node* BytecodeArrayPointer(); |
+ Node* BytecodeArrayTaggedPointer(); |
// Returns the offset from the BytecodeArrayPointer of the current bytecode. |
Node* BytecodeOffset(); |
// Returns a pointer to first entry in the interpreter dispatch table. |
- Node* DispatchTablePointer(); |
- // Returns the frame pointer for the current function. |
- Node* FramePointer(); |
+ Node* DispatchTableRawPointer(); |
- // Returns the offset of register |index|. |
- Node* RegisterFrameOffset(int index); |
+ // Returns the offset of register |index| relative to RegisterFilePointer(). |
Node* RegisterFrameOffset(Node* index); |
// Returns BytecodeOffset() advanced by delta bytecodes. Note: this does not |
@@ -96,12 +89,11 @@ class InterpreterAssembler { |
// Private helpers which delegate to RawMachineAssembler. |
Isolate* isolate(); |
Schedule* schedule(); |
- MachineOperatorBuilder* machine(); |
- CommonOperatorBuilder* common(); |
interpreter::Bytecode bytecode_; |
base::SmartPointer<RawMachineAssembler> raw_assembler_; |
Node* end_node_; |
+ Node* accumulator_; |
bool code_generated_; |
DISALLOW_COPY_AND_ASSIGN(InterpreterAssembler); |