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

Side by Side Diff: src/compiler/bytecode-graph-builder.cc

Issue 1693833002: Remove strong mode support from binary operations. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Addressed comments. Created 4 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/compiler/bytecode-graph-builder.h" 5 #include "src/compiler/bytecode-graph-builder.h"
6 6
7 #include "src/compiler/bytecode-branch-analysis.h" 7 #include "src/compiler/bytecode-branch-analysis.h"
8 #include "src/compiler/linkage.h" 8 #include "src/compiler/linkage.h"
9 #include "src/compiler/operator-properties.h" 9 #include "src/compiler/operator-properties.h"
10 #include "src/interpreter/bytecodes.h" 10 #include "src/interpreter/bytecodes.h"
(...skipping 1185 matching lines...) Expand 10 before | Expand all | Expand 10 after
1196 FrameStateBeforeAndAfter states(this); 1196 FrameStateBeforeAndAfter states(this);
1197 Node* left = 1197 Node* left =
1198 environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); 1198 environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0));
1199 Node* right = environment()->LookupAccumulator(); 1199 Node* right = environment()->LookupAccumulator();
1200 Node* node = NewNode(js_op, left, right); 1200 Node* node = NewNode(js_op, left, right);
1201 environment()->BindAccumulator(node, &states); 1201 environment()->BindAccumulator(node, &states);
1202 } 1202 }
1203 1203
1204 void BytecodeGraphBuilder::VisitAdd() { 1204 void BytecodeGraphBuilder::VisitAdd() {
1205 BinaryOperationHints hints = BinaryOperationHints::Any(); 1205 BinaryOperationHints hints = BinaryOperationHints::Any();
1206 BuildBinaryOp(javascript()->Add(language_mode(), hints)); 1206 BuildBinaryOp(javascript()->Add(hints));
1207 } 1207 }
1208 1208
1209 void BytecodeGraphBuilder::VisitSub() { 1209 void BytecodeGraphBuilder::VisitSub() {
1210 BinaryOperationHints hints = BinaryOperationHints::Any(); 1210 BinaryOperationHints hints = BinaryOperationHints::Any();
1211 BuildBinaryOp(javascript()->Subtract(language_mode(), hints)); 1211 BuildBinaryOp(javascript()->Subtract(hints));
1212 } 1212 }
1213 1213
1214 void BytecodeGraphBuilder::VisitMul() { 1214 void BytecodeGraphBuilder::VisitMul() {
1215 BinaryOperationHints hints = BinaryOperationHints::Any(); 1215 BinaryOperationHints hints = BinaryOperationHints::Any();
1216 BuildBinaryOp(javascript()->Multiply(language_mode(), hints)); 1216 BuildBinaryOp(javascript()->Multiply(hints));
1217 } 1217 }
1218 1218
1219 void BytecodeGraphBuilder::VisitDiv() { 1219 void BytecodeGraphBuilder::VisitDiv() {
1220 BinaryOperationHints hints = BinaryOperationHints::Any(); 1220 BinaryOperationHints hints = BinaryOperationHints::Any();
1221 BuildBinaryOp(javascript()->Divide(language_mode(), hints)); 1221 BuildBinaryOp(javascript()->Divide(hints));
1222 } 1222 }
1223 1223
1224 void BytecodeGraphBuilder::VisitMod() { 1224 void BytecodeGraphBuilder::VisitMod() {
1225 BinaryOperationHints hints = BinaryOperationHints::Any(); 1225 BinaryOperationHints hints = BinaryOperationHints::Any();
1226 BuildBinaryOp(javascript()->Modulus(language_mode(), hints)); 1226 BuildBinaryOp(javascript()->Modulus(hints));
1227 } 1227 }
1228 1228
1229 void BytecodeGraphBuilder::VisitBitwiseOr() { 1229 void BytecodeGraphBuilder::VisitBitwiseOr() {
1230 BinaryOperationHints hints = BinaryOperationHints::Any(); 1230 BinaryOperationHints hints = BinaryOperationHints::Any();
1231 BuildBinaryOp(javascript()->BitwiseOr(language_mode(), hints)); 1231 BuildBinaryOp(javascript()->BitwiseOr(hints));
1232 } 1232 }
1233 1233
1234 void BytecodeGraphBuilder::VisitBitwiseXor() { 1234 void BytecodeGraphBuilder::VisitBitwiseXor() {
1235 BinaryOperationHints hints = BinaryOperationHints::Any(); 1235 BinaryOperationHints hints = BinaryOperationHints::Any();
1236 BuildBinaryOp(javascript()->BitwiseXor(language_mode(), hints)); 1236 BuildBinaryOp(javascript()->BitwiseXor(hints));
1237 } 1237 }
1238 1238
1239 void BytecodeGraphBuilder::VisitBitwiseAnd() { 1239 void BytecodeGraphBuilder::VisitBitwiseAnd() {
1240 BinaryOperationHints hints = BinaryOperationHints::Any(); 1240 BinaryOperationHints hints = BinaryOperationHints::Any();
1241 BuildBinaryOp(javascript()->BitwiseAnd(language_mode(), hints)); 1241 BuildBinaryOp(javascript()->BitwiseAnd(hints));
1242 } 1242 }
1243 1243
1244 void BytecodeGraphBuilder::VisitShiftLeft() { 1244 void BytecodeGraphBuilder::VisitShiftLeft() {
1245 BinaryOperationHints hints = BinaryOperationHints::Any(); 1245 BinaryOperationHints hints = BinaryOperationHints::Any();
1246 BuildBinaryOp(javascript()->ShiftLeft(language_mode(), hints)); 1246 BuildBinaryOp(javascript()->ShiftLeft(hints));
1247 } 1247 }
1248 1248
1249 void BytecodeGraphBuilder::VisitShiftRight() { 1249 void BytecodeGraphBuilder::VisitShiftRight() {
1250 BinaryOperationHints hints = BinaryOperationHints::Any(); 1250 BinaryOperationHints hints = BinaryOperationHints::Any();
1251 BuildBinaryOp(javascript()->ShiftRight(language_mode(), hints)); 1251 BuildBinaryOp(javascript()->ShiftRight(hints));
1252 } 1252 }
1253 1253
1254 void BytecodeGraphBuilder::VisitShiftRightLogical() { 1254 void BytecodeGraphBuilder::VisitShiftRightLogical() {
1255 BinaryOperationHints hints = BinaryOperationHints::Any(); 1255 BinaryOperationHints hints = BinaryOperationHints::Any();
1256 BuildBinaryOp(javascript()->ShiftRightLogical(language_mode(), hints)); 1256 BuildBinaryOp(javascript()->ShiftRightLogical(hints));
1257 } 1257 }
1258 1258
1259 void BytecodeGraphBuilder::VisitInc() { 1259 void BytecodeGraphBuilder::VisitInc() {
1260 FrameStateBeforeAndAfter states(this); 1260 FrameStateBeforeAndAfter states(this);
1261 const Operator* js_op = 1261 const Operator* js_op = javascript()->Add(BinaryOperationHints::Any());
1262 javascript()->Add(language_mode(), BinaryOperationHints::Any());
1263 Node* node = NewNode(js_op, environment()->LookupAccumulator(), 1262 Node* node = NewNode(js_op, environment()->LookupAccumulator(),
1264 jsgraph()->OneConstant()); 1263 jsgraph()->OneConstant());
1265 environment()->BindAccumulator(node, &states); 1264 environment()->BindAccumulator(node, &states);
1266 } 1265 }
1267 1266
1268 void BytecodeGraphBuilder::VisitDec() { 1267 void BytecodeGraphBuilder::VisitDec() {
1269 FrameStateBeforeAndAfter states(this); 1268 FrameStateBeforeAndAfter states(this);
1270 const Operator* js_op = 1269 const Operator* js_op = javascript()->Subtract(BinaryOperationHints::Any());
1271 javascript()->Subtract(language_mode(), BinaryOperationHints::Any());
1272 Node* node = NewNode(js_op, environment()->LookupAccumulator(), 1270 Node* node = NewNode(js_op, environment()->LookupAccumulator(),
1273 jsgraph()->OneConstant()); 1271 jsgraph()->OneConstant());
1274 environment()->BindAccumulator(node, &states); 1272 environment()->BindAccumulator(node, &states);
1275 } 1273 }
1276 1274
1277 void BytecodeGraphBuilder::VisitLogicalNot() { 1275 void BytecodeGraphBuilder::VisitLogicalNot() {
1278 Node* value = NewNode(javascript()->ToBoolean(ToBooleanHint::kAny), 1276 Node* value = NewNode(javascript()->ToBoolean(ToBooleanHint::kAny),
1279 environment()->LookupAccumulator()); 1277 environment()->LookupAccumulator());
1280 Node* node = NewNode(common()->Select(MachineRepresentation::kTagged), value, 1278 Node* node = NewNode(common()->Select(MachineRepresentation::kTagged), value,
1281 jsgraph()->FalseConstant(), jsgraph()->TrueConstant()); 1279 jsgraph()->FalseConstant(), jsgraph()->TrueConstant());
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1325 1323
1326 void BytecodeGraphBuilder::VisitTestEqualStrict() { 1324 void BytecodeGraphBuilder::VisitTestEqualStrict() {
1327 BuildCompareOp(javascript()->StrictEqual()); 1325 BuildCompareOp(javascript()->StrictEqual());
1328 } 1326 }
1329 1327
1330 void BytecodeGraphBuilder::VisitTestNotEqualStrict() { 1328 void BytecodeGraphBuilder::VisitTestNotEqualStrict() {
1331 BuildCompareOp(javascript()->StrictNotEqual()); 1329 BuildCompareOp(javascript()->StrictNotEqual());
1332 } 1330 }
1333 1331
1334 void BytecodeGraphBuilder::VisitTestLessThan() { 1332 void BytecodeGraphBuilder::VisitTestLessThan() {
1335 BuildCompareOp(javascript()->LessThan(language_mode())); 1333 BuildCompareOp(javascript()->LessThan());
1336 } 1334 }
1337 1335
1338 void BytecodeGraphBuilder::VisitTestGreaterThan() { 1336 void BytecodeGraphBuilder::VisitTestGreaterThan() {
1339 BuildCompareOp(javascript()->GreaterThan(language_mode())); 1337 BuildCompareOp(javascript()->GreaterThan());
1340 } 1338 }
1341 1339
1342 void BytecodeGraphBuilder::VisitTestLessThanOrEqual() { 1340 void BytecodeGraphBuilder::VisitTestLessThanOrEqual() {
1343 BuildCompareOp(javascript()->LessThanOrEqual(language_mode())); 1341 BuildCompareOp(javascript()->LessThanOrEqual());
1344 } 1342 }
1345 1343
1346 void BytecodeGraphBuilder::VisitTestGreaterThanOrEqual() { 1344 void BytecodeGraphBuilder::VisitTestGreaterThanOrEqual() {
1347 BuildCompareOp(javascript()->GreaterThanOrEqual(language_mode())); 1345 BuildCompareOp(javascript()->GreaterThanOrEqual());
1348 } 1346 }
1349 1347
1350 void BytecodeGraphBuilder::VisitTestIn() { 1348 void BytecodeGraphBuilder::VisitTestIn() {
1351 BuildCompareOp(javascript()->HasProperty()); 1349 BuildCompareOp(javascript()->HasProperty());
1352 } 1350 }
1353 1351
1354 void BytecodeGraphBuilder::VisitTestInstanceOf() { 1352 void BytecodeGraphBuilder::VisitTestInstanceOf() {
1355 BuildCompareOp(javascript()->InstanceOf()); 1353 BuildCompareOp(javascript()->InstanceOf());
1356 } 1354 }
1357 1355
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after
1796 // Phi does not exist yet, introduce one. 1794 // Phi does not exist yet, introduce one.
1797 value = NewPhi(inputs, value, control); 1795 value = NewPhi(inputs, value, control);
1798 value->ReplaceInput(inputs - 1, other); 1796 value->ReplaceInput(inputs - 1, other);
1799 } 1797 }
1800 return value; 1798 return value;
1801 } 1799 }
1802 1800
1803 } // namespace compiler 1801 } // namespace compiler
1804 } // namespace internal 1802 } // namespace internal
1805 } // namespace v8 1803 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698