Index: src/ic/ic.cc |
diff --git a/src/ic/ic.cc b/src/ic/ic.cc |
index a6ae92a892c06ac9dcc88ecf093a0201e9f0eb12..e2b99bb9f714295738c14b6139120e91abfef24c 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,7 +2805,8 @@ RUNTIME_FUNCTION(Unreachable) { |
} |
-Builtins::JavaScript BinaryOpIC::TokenToJSBuiltin(Token::Value op) { |
+Builtins::JavaScript BinaryOpIC::TokenToJSBuiltin(Token::Value op, |
+ LanguageMode language_mode) { |
switch (op) { |
default: |
UNREACHABLE(); |
@@ -2813,16 +2814,16 @@ Builtins::JavaScript BinaryOpIC::TokenToJSBuiltin(Token::Value op) { |
return Builtins::ADD; |
break; |
case Token::SUB: |
- return Builtins::SUB; |
+ return is_strong(language_mode) ? Builtins::SUB_STRONG : Builtins::SUB; |
rossberg
2015/04/23 13:29:37
Nit: considering that you'll have to add the same
conradw
2015/04/23 14:51:54
Done.
|
break; |
case Token::MUL: |
- return Builtins::MUL; |
+ return is_strong(language_mode) ? Builtins::MUL_STRONG : Builtins::MUL; |
break; |
case Token::DIV: |
- return Builtins::DIV; |
+ return is_strong(language_mode) ? Builtins::DIV_STRONG : Builtins::DIV; |
break; |
case Token::MOD: |
- return Builtins::MOD; |
+ return is_strong(language_mode) ? Builtins::MOD_STRONG : Builtins::MOD; |
break; |
case Token::BIT_OR: |
return Builtins::BIT_OR; |