Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(626)

Unified Diff: src/ic/ic.cc

Issue 1092353002: [strong] Disallow implicit conversions for binary arithmetic operations (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebase :( Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698