| Index: src/interpreter/bytecode-array-builder.h
|
| diff --git a/src/interpreter/bytecode-array-builder.h b/src/interpreter/bytecode-array-builder.h
|
| index 02dae0757ab5db89b8e0b3fa071e3c9ea892ea44..19ef0389d58ab805d712724cfd03e0bc92810829 100644
|
| --- a/src/interpreter/bytecode-array-builder.h
|
| +++ b/src/interpreter/bytecode-array-builder.h
|
| @@ -149,6 +149,12 @@ class BytecodeArrayBuilder {
|
| BytecodeArrayBuilder& CallRuntime(Runtime::FunctionId function_id,
|
| Register first_arg, size_t arg_count);
|
|
|
| + // Call the JS runtime function with |context_index|. The the receiver should
|
| + // be in |receiver| and all subsequent arguments should be in registers
|
| + // <receiver + 1> to <receiver + 1 + arg_count>.
|
| + BytecodeArrayBuilder& CallJSRuntime(int context_index, Register receiver,
|
| + size_t arg_count);
|
| +
|
| // Operators (register holds the lhs value, accumulator holds the rhs value).
|
| BytecodeArrayBuilder& BinaryOperation(Token::Value binop, Register reg,
|
| Strength strength);
|
| @@ -225,12 +231,21 @@ class BytecodeArrayBuilder {
|
| static Bytecode GetJumpWithConstantOperand(Bytecode jump_with_smi8_operand);
|
| static Bytecode GetJumpWithToBoolean(Bytecode jump);
|
|
|
| + enum class RegisterValidityCheck { kCheckRegisters, kDontCheckRegisters };
|
| +
|
| template <size_t N>
|
| - INLINE(void Output(Bytecode bytecode, uint32_t(&oprands)[N]));
|
| + INLINE(void Output(Bytecode bytecode, uint32_t(&oprands)[N],
|
| + RegisterValidityCheck reg_check =
|
| + RegisterValidityCheck::kCheckRegisters));
|
| void Output(Bytecode bytecode, uint32_t operand0, uint32_t operand1,
|
| - uint32_t operand2);
|
| - void Output(Bytecode bytecode, uint32_t operand0, uint32_t operand1);
|
| - void Output(Bytecode bytecode, uint32_t operand0);
|
| + uint32_t operand2, RegisterValidityCheck reg_check =
|
| + RegisterValidityCheck::kCheckRegisters);
|
| + void Output(
|
| + Bytecode bytecode, uint32_t operand0, uint32_t operand1,
|
| + RegisterValidityCheck reg_check = RegisterValidityCheck::kCheckRegisters);
|
| + void Output(
|
| + Bytecode bytecode, uint32_t operand0,
|
| + RegisterValidityCheck reg_check = RegisterValidityCheck::kCheckRegisters);
|
| void Output(Bytecode bytecode);
|
|
|
| BytecodeArrayBuilder& OutputJump(Bytecode jump_bytecode,
|
| @@ -241,7 +256,8 @@ class BytecodeArrayBuilder {
|
| void EnsureReturn();
|
|
|
| bool OperandIsValid(Bytecode bytecode, int operand_index,
|
| - uint32_t operand_value) const;
|
| + uint32_t operand_value,
|
| + RegisterValidityCheck reg_check) const;
|
| bool LastBytecodeInSameBlock() const;
|
|
|
| bool NeedToBooleanCast();
|
|
|