| Index: src/interpreter/bytecode-array-builder.cc
|
| diff --git a/src/interpreter/bytecode-array-builder.cc b/src/interpreter/bytecode-array-builder.cc
|
| index 9bef5a5a4cdb3d82b762eafc7eb9d1f777625a08..392761d03f74f8b10087d1e4705ed4dd5d7660a3 100644
|
| --- a/src/interpreter/bytecode-array-builder.cc
|
| +++ b/src/interpreter/bytecode-array-builder.cc
|
| @@ -158,6 +158,14 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::BinaryOperation(Token::Value op,
|
| return *this;
|
| }
|
|
|
| +BytecodeArrayBuilder& BytecodeArrayBuilder::BinaryOperationSmi(
|
| + Token::Value op, int32_t smi_value, Register reg, int feedback_slot) {
|
| + DCHECK(Smi::IsValid(smi_value));
|
| + Output(BytecodeForBinaryOperationSmi(op), SignedOperand(smi_value),
|
| + RegisterOperand(reg), UnsignedOperand(feedback_slot));
|
| + return *this;
|
| +}
|
| +
|
| BytecodeArrayBuilder& BytecodeArrayBuilder::CountOperation(Token::Value op,
|
| int feedback_slot) {
|
| Output(BytecodeForCountOperation(op), UnsignedOperand(feedback_slot));
|
| @@ -846,6 +854,27 @@ Bytecode BytecodeArrayBuilder::BytecodeForBinaryOperation(Token::Value op) {
|
| }
|
|
|
| // static
|
| +Bytecode BytecodeArrayBuilder::BytecodeForBinaryOperationSmi(Token::Value op) {
|
| + switch (op) {
|
| + case Token::Value::ADD:
|
| + return Bytecode::kAddSmi;
|
| + case Token::Value::SUB:
|
| + return Bytecode::kSubSmi;
|
| + case Token::Value::BIT_OR:
|
| + return Bytecode::kBitwiseOrSmi;
|
| + case Token::Value::BIT_AND:
|
| + return Bytecode::kBitwiseAndSmi;
|
| + case Token::Value::SHL:
|
| + return Bytecode::kShiftLeftSmi;
|
| + case Token::Value::SAR:
|
| + return Bytecode::kShiftRightSmi;
|
| + default:
|
| + UNREACHABLE();
|
| + return Bytecode::kIllegal;
|
| + }
|
| +}
|
| +
|
| +// static
|
| Bytecode BytecodeArrayBuilder::BytecodeForCountOperation(Token::Value op) {
|
| switch (op) {
|
| case Token::Value::ADD:
|
|
|