Index: src/interpreter/interpreter-assembler.h |
diff --git a/src/interpreter/interpreter-assembler.h b/src/interpreter/interpreter-assembler.h |
index 2a1672a9114f63e7e86bb6ac6f5bfbeadfd1fdca..b49c06eb3d20440fb02955e54f39303045003679 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. |
+ 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); |
@@ -34,6 +40,9 @@ class InterpreterAssembler : public compiler::CodeStubAssembler { |
// Returns the register index for bytecode operand |operand_index| in the |
// current bytecode. |
compiler::Node* BytecodeOperandReg(int operand_index); |
+ // Returns the runtime id immediate for bytecode operand |
+ // |operand_index| in the current bytecode. |
+ compiler::Node* BytecodeOperandRuntimeId(int operand_index); |
// Accumulator. |
compiler::Node* GetAccumulator(); |
@@ -136,6 +145,9 @@ class InterpreterAssembler : public compiler::CodeStubAssembler { |
DispatchToBytecodeHandler(handler, BytecodeOffset()); |
} |
+ // Dispatch bytecode as wide operand variant. |
+ void RedispatchWide(); |
+ |
// Abort with the given bailout reason. |
void Abort(BailoutReason bailout_reason); |
@@ -171,6 +183,13 @@ 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); |
+ |
+ compiler::Node* BytecodeSignedOperand(int operand_index, |
+ OperandSize operand_size); |
+ compiler::Node* BytecodeUnsignedOperand(int operand_index, |
+ OperandSize operand_size); |
// Returns BytecodeOffset() advanced by delta bytecodes. Note: this does not |
// update BytecodeOffset() itself. |
@@ -184,7 +203,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_; |