Chromium Code Reviews| Index: src/ic/ic.cc |
| diff --git a/src/ic/ic.cc b/src/ic/ic.cc |
| index a6ae92a892c06ac9dcc88ecf093a0201e9f0eb12..7a42d23f0c748c6095bb16721c4e9b6cff50b250 100644 |
| --- a/src/ic/ic.cc |
| +++ b/src/ic/ic.cc |
| @@ -2568,7 +2568,7 @@ MaybeHandle<Object> BinaryOpIC::Transition( |
| // Compute the actual result using the builtin for the binary operation. |
| Object* builtin = isolate()->js_builtins_object()->javascript_builtin( |
| - TokenToJSBuiltin(state.op())); |
| + TokenToJSBuiltin(state.op(), state.language_mode())); |
| Handle<JSFunction> function = handle(JSFunction::cast(builtin), isolate()); |
| Handle<Object> result; |
| ASSIGN_RETURN_ON_EXCEPTION( |
| @@ -2805,43 +2805,62 @@ RUNTIME_FUNCTION(Unreachable) { |
| } |
| -Builtins::JavaScript BinaryOpIC::TokenToJSBuiltin(Token::Value op) { |
| - switch (op) { |
| - default: |
| - UNREACHABLE(); |
| - case Token::ADD: |
| - return Builtins::ADD; |
| - break; |
| - case Token::SUB: |
| - return Builtins::SUB; |
| - break; |
| - case Token::MUL: |
| - return Builtins::MUL; |
| - break; |
| - case Token::DIV: |
| - return Builtins::DIV; |
| - break; |
| - case Token::MOD: |
| - return Builtins::MOD; |
| - break; |
| - case Token::BIT_OR: |
| - return Builtins::BIT_OR; |
| - break; |
| - case Token::BIT_AND: |
| - return Builtins::BIT_AND; |
| - break; |
| - case Token::BIT_XOR: |
| - return Builtins::BIT_XOR; |
| - break; |
| - case Token::SAR: |
| - return Builtins::SAR; |
| - break; |
| - case Token::SHR: |
| - return Builtins::SHR; |
| - break; |
| - case Token::SHL: |
| - return Builtins::SHL; |
| - break; |
| +Builtins::JavaScript BinaryOpIC::TokenToJSBuiltin(Token::Value op, |
| + LanguageMode language_mode) { |
| + if (is_strong(language_mode)) { |
| + switch (op) { |
|
rossberg
2015/04/24 09:50:20
Nit: to compress a little, can you put the returns
conradw
2015/04/24 10:55:16
Sort of done, compressed the switch but putting th
|
| + default: |
| + UNREACHABLE(); |
| + case Token::ADD: |
| + return Builtins::ADD; |
| + case Token::SUB: |
| + return Builtins::SUB_STRONG; |
| + case Token::MUL: |
| + return Builtins::MUL_STRONG; |
| + case Token::DIV: |
| + return Builtins::DIV_STRONG; |
| + case Token::MOD: |
| + return Builtins::MOD_STRONG; |
| + case Token::BIT_OR: |
| + return Builtins::BIT_OR; |
| + case Token::BIT_AND: |
| + return Builtins::BIT_AND; |
| + case Token::BIT_XOR: |
| + return Builtins::BIT_XOR; |
| + case Token::SAR: |
| + return Builtins::SAR; |
| + case Token::SHR: |
| + return Builtins::SHR; |
| + case Token::SHL: |
| + return Builtins::SHL; |
| + } |
| + } else { |
| + switch (op) { |
| + default: |
| + UNREACHABLE(); |
| + case Token::ADD: |
| + return Builtins::ADD; |
| + case Token::SUB: |
| + return Builtins::SUB; |
| + case Token::MUL: |
| + return Builtins::MUL; |
| + case Token::DIV: |
| + return Builtins::DIV; |
| + case Token::MOD: |
| + return Builtins::MOD; |
| + case Token::BIT_OR: |
| + return Builtins::BIT_OR; |
| + case Token::BIT_AND: |
| + return Builtins::BIT_AND; |
| + case Token::BIT_XOR: |
| + return Builtins::BIT_XOR; |
| + case Token::SAR: |
| + return Builtins::SAR; |
| + case Token::SHR: |
| + return Builtins::SHR; |
| + case Token::SHL: |
| + return Builtins::SHL; |
| + } |
| } |
| } |