Chromium Code Reviews| Index: src/interpreter/interpreter-assembler.h |
| diff --git a/src/interpreter/interpreter-assembler.h b/src/interpreter/interpreter-assembler.h |
| index 2a1672a9114f63e7e86bb6ac6f5bfbeadfd1fdca..052955a407a6bf1c9a8403897aa4b2f11703edc0 100644 |
| --- a/src/interpreter/interpreter-assembler.h |
| +++ b/src/interpreter/interpreter-assembler.h |
| @@ -19,12 +19,18 @@ namespace interpreter { |
| class InterpreterAssembler : public compiler::CodeStubAssembler { |
| public: |
| - InterpreterAssembler(Isolate* isolate, Zone* zone, Bytecode bytecode); |
| + InterpreterAssembler(Isolate* isolate, Zone* zone, Bytecode bytecode, |
| + int operand_scale); |
| + // Constructor for illegal bytecode codepoints. |
|
rmcilroy
2016/03/10 16:45:37
Could we just add a kIllegal bytecode to avoid hav
oth
2016/03/11 16:26:12
Done.
|
| + InterpreterAssembler(Isolate* isolate, Zone* zone); |
| virtual ~InterpreterAssembler(); |
| // Returns the count immediate for bytecode operand |operand_index| in the |
| // current bytecode. |
| compiler::Node* BytecodeOperandCount(int operand_index); |
| + // Returns the 8-bit flag for bytecode operand |operand_index| in the |
| + // current bytecode. |
| + compiler::Node* BytecodeOperandFlag(int operand_index); |
| // Returns the index immediate for bytecode operand |operand_index| in the |
| // current bytecode. |
| compiler::Node* BytecodeOperandIdx(int operand_index); |
| @@ -136,6 +142,9 @@ class InterpreterAssembler : public compiler::CodeStubAssembler { |
| DispatchToBytecodeHandler(handler, BytecodeOffset()); |
| } |
| + // Dispatch bytecode as wide operand variant. |
| + void RedispatchWide(); |
|
rmcilroy
2016/03/10 16:45:37
Could we do the logic for this in interpreter.cc a
oth
2016/03/11 16:26:12
No problem moving this, but it seems very similar
oth
2016/03/15 09:58:28
Looking into this, more of the interpreter assembl
rmcilroy
2016/03/16 11:55:54
Ok that's fine. Please rename as DispatchWide thou
oth
2016/03/17 13:48:38
Done.
|
| + |
| // Abort with the given bailout reason. |
| void Abort(BailoutReason bailout_reason); |
| @@ -171,6 +180,8 @@ class InterpreterAssembler : public compiler::CodeStubAssembler { |
| compiler::Node* BytecodeOperandSignExtended(int operand_index); |
| compiler::Node* BytecodeOperandShort(int operand_index); |
| compiler::Node* BytecodeOperandShortSignExtended(int operand_index); |
| + compiler::Node* BytecodeOperandQuad(int operand_index); |
| + compiler::Node* BytecodeOperandQuadSignExtended(int operand_index); |
| // Returns BytecodeOffset() advanced by delta bytecodes. Note: this does not |
| // update BytecodeOffset() itself. |
| @@ -184,7 +195,10 @@ class InterpreterAssembler : public compiler::CodeStubAssembler { |
| void AbortIfWordNotEqual(compiler::Node* lhs, compiler::Node* rhs, |
| BailoutReason bailout_reason); |
| + int operand_scale() const { return operand_scale_; } |
| + |
| Bytecode bytecode_; |
| + int operand_scale_; |
| CodeStubAssembler::Variable accumulator_; |
| CodeStubAssembler::Variable context_; |
| CodeStubAssembler::Variable bytecode_array_; |