| Index: src/interpreter/interpreter-assembler.h
|
| diff --git a/src/interpreter/interpreter-assembler.h b/src/interpreter/interpreter-assembler.h
|
| index 2a1672a9114f63e7e86bb6ac6f5bfbeadfd1fdca..34e2830d48750a111a950c4bd9151e00181563c4 100644
|
| --- a/src/interpreter/interpreter-assembler.h
|
| +++ b/src/interpreter/interpreter-assembler.h
|
| @@ -19,12 +19,16 @@ 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);
|
| 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 +38,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 +143,9 @@ class InterpreterAssembler : public compiler::CodeStubAssembler {
|
| DispatchToBytecodeHandler(handler, BytecodeOffset());
|
| }
|
|
|
| + // Dispatch bytecode as wide operand variant.
|
| + void RedispatchWide(int operand_scale);
|
| +
|
| // Abort with the given bailout reason.
|
| void Abort(BailoutReason bailout_reason);
|
|
|
| @@ -167,10 +177,17 @@ class InterpreterAssembler : public compiler::CodeStubAssembler {
|
| // Returns the offset of register |index| relative to RegisterFilePointer().
|
| compiler::Node* RegisterFrameOffset(compiler::Node* index);
|
|
|
| - compiler::Node* BytecodeOperand(int operand_index);
|
| - compiler::Node* BytecodeOperandSignExtended(int operand_index);
|
| - compiler::Node* BytecodeOperandShort(int operand_index);
|
| - compiler::Node* BytecodeOperandShortSignExtended(int operand_index);
|
| + compiler::Node* BytecodeOperandUnsignedByte(int operand_index);
|
| + compiler::Node* BytecodeOperandSignedByte(int operand_index);
|
| + compiler::Node* BytecodeOperandUnsignedShort(int operand_index);
|
| + compiler::Node* BytecodeOperandSignedShort(int operand_index);
|
| + compiler::Node* BytecodeOperandUnsignedQuad(int operand_index);
|
| + compiler::Node* BytecodeOperandSignedQuad(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 +201,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_;
|
|
|