| OLD | NEW |
| 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 1154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1165 FrameStateBeforeAndAfter states(this); | 1165 FrameStateBeforeAndAfter states(this); |
| 1166 Node* left = | 1166 Node* left = |
| 1167 environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); | 1167 environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |
| 1168 Node* right = environment()->LookupAccumulator(); | 1168 Node* right = environment()->LookupAccumulator(); |
| 1169 Node* node = NewNode(js_op, left, right); | 1169 Node* node = NewNode(js_op, left, right); |
| 1170 environment()->BindAccumulator(node, &states); | 1170 environment()->BindAccumulator(node, &states); |
| 1171 } | 1171 } |
| 1172 | 1172 |
| 1173 // Helper function to create binary operation hint from the recorded type | 1173 // Helper function to create binary operation hint from the recorded type |
| 1174 // feedback. | 1174 // feedback. |
| 1175 BinaryOperationHints BytecodeGraphBuilder::GetBinaryOperationHint() { | 1175 BinaryOperationHint BytecodeGraphBuilder::GetBinaryOperationHint() { |
| 1176 FeedbackVectorSlot slot = | 1176 FeedbackVectorSlot slot = |
| 1177 feedback_vector()->ToSlot(bytecode_iterator().GetIndexOperand(1)); | 1177 feedback_vector()->ToSlot(bytecode_iterator().GetIndexOperand(1)); |
| 1178 DCHECK_EQ(FeedbackVectorSlotKind::GENERAL, feedback_vector()->GetKind(slot)); | 1178 DCHECK_EQ(FeedbackVectorSlotKind::GENERAL, feedback_vector()->GetKind(slot)); |
| 1179 Object* feedback = feedback_vector()->Get(slot); | 1179 Object* feedback = feedback_vector()->Get(slot); |
| 1180 BinaryOperationHints::Hint hint = BinaryOperationHints::Hint::kAny; | 1180 BinaryOperationHint hint = BinaryOperationHint::kAny; |
| 1181 if (feedback->IsSmi()) { | 1181 if (feedback->IsSmi()) { |
| 1182 hint = BinaryOperationHintFromFeedback((Smi::cast(feedback))->value()); | 1182 hint = BinaryOperationHintFromFeedback((Smi::cast(feedback))->value()); |
| 1183 } | 1183 } |
| 1184 return BinaryOperationHints(hint, hint, hint); | 1184 return hint; |
| 1185 } | 1185 } |
| 1186 | 1186 |
| 1187 void BytecodeGraphBuilder::VisitAdd() { | 1187 void BytecodeGraphBuilder::VisitAdd() { |
| 1188 BinaryOperationHints hints = BinaryOperationHints::Any(); | 1188 BinaryOperationHint hint = BinaryOperationHint::kAny; |
| 1189 BuildBinaryOp(javascript()->Add(hints)); | 1189 BuildBinaryOp(javascript()->Add(hint)); |
| 1190 } | 1190 } |
| 1191 | 1191 |
| 1192 void BytecodeGraphBuilder::VisitSub() { | 1192 void BytecodeGraphBuilder::VisitSub() { |
| 1193 BuildBinaryOp(javascript()->Subtract(GetBinaryOperationHint())); | 1193 BuildBinaryOp(javascript()->Subtract(GetBinaryOperationHint())); |
| 1194 } | 1194 } |
| 1195 | 1195 |
| 1196 void BytecodeGraphBuilder::VisitMul() { | 1196 void BytecodeGraphBuilder::VisitMul() { |
| 1197 BinaryOperationHints hints = BinaryOperationHints::Any(); | 1197 BinaryOperationHint hint = BinaryOperationHint::kAny; |
| 1198 BuildBinaryOp(javascript()->Multiply(hints)); | 1198 BuildBinaryOp(javascript()->Multiply(hint)); |
| 1199 } | 1199 } |
| 1200 | 1200 |
| 1201 void BytecodeGraphBuilder::VisitDiv() { | 1201 void BytecodeGraphBuilder::VisitDiv() { |
| 1202 BinaryOperationHints hints = BinaryOperationHints::Any(); | 1202 BinaryOperationHint hint = BinaryOperationHint::kAny; |
| 1203 BuildBinaryOp(javascript()->Divide(hints)); | 1203 BuildBinaryOp(javascript()->Divide(hint)); |
| 1204 } | 1204 } |
| 1205 | 1205 |
| 1206 void BytecodeGraphBuilder::VisitMod() { | 1206 void BytecodeGraphBuilder::VisitMod() { |
| 1207 BinaryOperationHints hints = BinaryOperationHints::Any(); | 1207 BinaryOperationHint hint = BinaryOperationHint::kAny; |
| 1208 BuildBinaryOp(javascript()->Modulus(hints)); | 1208 BuildBinaryOp(javascript()->Modulus(hint)); |
| 1209 } | 1209 } |
| 1210 | 1210 |
| 1211 void BytecodeGraphBuilder::VisitBitwiseOr() { | 1211 void BytecodeGraphBuilder::VisitBitwiseOr() { |
| 1212 BinaryOperationHints hints = BinaryOperationHints::Any(); | 1212 BinaryOperationHint hint = BinaryOperationHint::kAny; |
| 1213 BuildBinaryOp(javascript()->BitwiseOr(hints)); | 1213 BuildBinaryOp(javascript()->BitwiseOr(hint)); |
| 1214 } | 1214 } |
| 1215 | 1215 |
| 1216 void BytecodeGraphBuilder::VisitBitwiseXor() { | 1216 void BytecodeGraphBuilder::VisitBitwiseXor() { |
| 1217 BinaryOperationHints hints = BinaryOperationHints::Any(); | 1217 BinaryOperationHint hint = BinaryOperationHint::kAny; |
| 1218 BuildBinaryOp(javascript()->BitwiseXor(hints)); | 1218 BuildBinaryOp(javascript()->BitwiseXor(hint)); |
| 1219 } | 1219 } |
| 1220 | 1220 |
| 1221 void BytecodeGraphBuilder::VisitBitwiseAnd() { | 1221 void BytecodeGraphBuilder::VisitBitwiseAnd() { |
| 1222 BinaryOperationHints hints = BinaryOperationHints::Any(); | 1222 BinaryOperationHint hint = BinaryOperationHint::kAny; |
| 1223 BuildBinaryOp(javascript()->BitwiseAnd(hints)); | 1223 BuildBinaryOp(javascript()->BitwiseAnd(hint)); |
| 1224 } | 1224 } |
| 1225 | 1225 |
| 1226 void BytecodeGraphBuilder::VisitShiftLeft() { | 1226 void BytecodeGraphBuilder::VisitShiftLeft() { |
| 1227 BinaryOperationHints hints = BinaryOperationHints::Any(); | 1227 BinaryOperationHint hint = BinaryOperationHint::kAny; |
| 1228 BuildBinaryOp(javascript()->ShiftLeft(hints)); | 1228 BuildBinaryOp(javascript()->ShiftLeft(hint)); |
| 1229 } | 1229 } |
| 1230 | 1230 |
| 1231 void BytecodeGraphBuilder::VisitShiftRight() { | 1231 void BytecodeGraphBuilder::VisitShiftRight() { |
| 1232 BinaryOperationHints hints = BinaryOperationHints::Any(); | 1232 BinaryOperationHint hint = BinaryOperationHint::kAny; |
| 1233 BuildBinaryOp(javascript()->ShiftRight(hints)); | 1233 BuildBinaryOp(javascript()->ShiftRight(hint)); |
| 1234 } | 1234 } |
| 1235 | 1235 |
| 1236 void BytecodeGraphBuilder::VisitShiftRightLogical() { | 1236 void BytecodeGraphBuilder::VisitShiftRightLogical() { |
| 1237 BinaryOperationHints hints = BinaryOperationHints::Any(); | 1237 BinaryOperationHint hint = BinaryOperationHint::kAny; |
| 1238 BuildBinaryOp(javascript()->ShiftRightLogical(hints)); | 1238 BuildBinaryOp(javascript()->ShiftRightLogical(hint)); |
| 1239 } | 1239 } |
| 1240 | 1240 |
| 1241 void BytecodeGraphBuilder::BuildBinaryOpWithImmediate(const Operator* js_op) { | 1241 void BytecodeGraphBuilder::BuildBinaryOpWithImmediate(const Operator* js_op) { |
| 1242 FrameStateBeforeAndAfter states(this); | 1242 FrameStateBeforeAndAfter states(this); |
| 1243 Node* left = | 1243 Node* left = |
| 1244 environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(1)); | 1244 environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(1)); |
| 1245 Node* right = jsgraph()->Constant(bytecode_iterator().GetImmediateOperand(0)); | 1245 Node* right = jsgraph()->Constant(bytecode_iterator().GetImmediateOperand(0)); |
| 1246 Node* node = NewNode(js_op, left, right); | 1246 Node* node = NewNode(js_op, left, right); |
| 1247 environment()->BindAccumulator(node, &states); | 1247 environment()->BindAccumulator(node, &states); |
| 1248 } | 1248 } |
| 1249 | 1249 |
| 1250 void BytecodeGraphBuilder::VisitAddSmi() { | 1250 void BytecodeGraphBuilder::VisitAddSmi() { |
| 1251 BinaryOperationHints hints = BinaryOperationHints::Any(); | 1251 BinaryOperationHint hint = BinaryOperationHint::kAny; |
| 1252 BuildBinaryOpWithImmediate(javascript()->Add(hints)); | 1252 BuildBinaryOpWithImmediate(javascript()->Add(hint)); |
| 1253 } | 1253 } |
| 1254 | 1254 |
| 1255 void BytecodeGraphBuilder::VisitSubSmi() { | 1255 void BytecodeGraphBuilder::VisitSubSmi() { |
| 1256 BinaryOperationHints hints = BinaryOperationHints::Any(); | 1256 BinaryOperationHint hint = BinaryOperationHint::kAny; |
| 1257 BuildBinaryOpWithImmediate(javascript()->Subtract(hints)); | 1257 BuildBinaryOpWithImmediate(javascript()->Subtract(hint)); |
| 1258 } | 1258 } |
| 1259 | 1259 |
| 1260 void BytecodeGraphBuilder::VisitBitwiseOrSmi() { | 1260 void BytecodeGraphBuilder::VisitBitwiseOrSmi() { |
| 1261 BinaryOperationHints hints = BinaryOperationHints::Any(); | 1261 BinaryOperationHint hint = BinaryOperationHint::kAny; |
| 1262 BuildBinaryOpWithImmediate(javascript()->BitwiseOr(hints)); | 1262 BuildBinaryOpWithImmediate(javascript()->BitwiseOr(hint)); |
| 1263 } | 1263 } |
| 1264 | 1264 |
| 1265 void BytecodeGraphBuilder::VisitBitwiseAndSmi() { | 1265 void BytecodeGraphBuilder::VisitBitwiseAndSmi() { |
| 1266 BinaryOperationHints hints = BinaryOperationHints::Any(); | 1266 BinaryOperationHint hint = BinaryOperationHint::kAny; |
| 1267 BuildBinaryOpWithImmediate(javascript()->BitwiseAnd(hints)); | 1267 BuildBinaryOpWithImmediate(javascript()->BitwiseAnd(hint)); |
| 1268 } | 1268 } |
| 1269 | 1269 |
| 1270 void BytecodeGraphBuilder::VisitShiftLeftSmi() { | 1270 void BytecodeGraphBuilder::VisitShiftLeftSmi() { |
| 1271 BinaryOperationHints hints = BinaryOperationHints::Any(); | 1271 BinaryOperationHint hint = BinaryOperationHint::kAny; |
| 1272 BuildBinaryOpWithImmediate(javascript()->ShiftLeft(hints)); | 1272 BuildBinaryOpWithImmediate(javascript()->ShiftLeft(hint)); |
| 1273 } | 1273 } |
| 1274 | 1274 |
| 1275 void BytecodeGraphBuilder::VisitShiftRightSmi() { | 1275 void BytecodeGraphBuilder::VisitShiftRightSmi() { |
| 1276 BinaryOperationHints hints = BinaryOperationHints::Any(); | 1276 BinaryOperationHint hint = BinaryOperationHint::kAny; |
| 1277 BuildBinaryOpWithImmediate(javascript()->ShiftRight(hints)); | 1277 BuildBinaryOpWithImmediate(javascript()->ShiftRight(hint)); |
| 1278 } | 1278 } |
| 1279 | 1279 |
| 1280 void BytecodeGraphBuilder::VisitInc() { | 1280 void BytecodeGraphBuilder::VisitInc() { |
| 1281 FrameStateBeforeAndAfter states(this); | 1281 FrameStateBeforeAndAfter states(this); |
| 1282 // Note: Use subtract -1 here instead of add 1 to ensure we always convert to | 1282 // Note: Use subtract -1 here instead of add 1 to ensure we always convert to |
| 1283 // a number, not a string. | 1283 // a number, not a string. |
| 1284 const Operator* js_op = javascript()->Subtract(BinaryOperationHints::Any()); | 1284 const Operator* js_op = javascript()->Subtract(BinaryOperationHint::kAny); |
| 1285 Node* node = NewNode(js_op, environment()->LookupAccumulator(), | 1285 Node* node = NewNode(js_op, environment()->LookupAccumulator(), |
| 1286 jsgraph()->Constant(-1.0)); | 1286 jsgraph()->Constant(-1.0)); |
| 1287 environment()->BindAccumulator(node, &states); | 1287 environment()->BindAccumulator(node, &states); |
| 1288 } | 1288 } |
| 1289 | 1289 |
| 1290 void BytecodeGraphBuilder::VisitDec() { | 1290 void BytecodeGraphBuilder::VisitDec() { |
| 1291 FrameStateBeforeAndAfter states(this); | 1291 FrameStateBeforeAndAfter states(this); |
| 1292 const Operator* js_op = javascript()->Subtract(BinaryOperationHints::Any()); | 1292 const Operator* js_op = javascript()->Subtract(BinaryOperationHint::kAny); |
| 1293 Node* node = NewNode(js_op, environment()->LookupAccumulator(), | 1293 Node* node = NewNode(js_op, environment()->LookupAccumulator(), |
| 1294 jsgraph()->OneConstant()); | 1294 jsgraph()->OneConstant()); |
| 1295 environment()->BindAccumulator(node, &states); | 1295 environment()->BindAccumulator(node, &states); |
| 1296 } | 1296 } |
| 1297 | 1297 |
| 1298 void BytecodeGraphBuilder::VisitLogicalNot() { | 1298 void BytecodeGraphBuilder::VisitLogicalNot() { |
| 1299 Node* value = environment()->LookupAccumulator(); | 1299 Node* value = environment()->LookupAccumulator(); |
| 1300 Node* node = NewNode(common()->Select(MachineRepresentation::kTagged), value, | 1300 Node* node = NewNode(common()->Select(MachineRepresentation::kTagged), value, |
| 1301 jsgraph()->FalseConstant(), jsgraph()->TrueConstant()); | 1301 jsgraph()->FalseConstant(), jsgraph()->TrueConstant()); |
| 1302 environment()->BindAccumulator(node); | 1302 environment()->BindAccumulator(node); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1337 void BytecodeGraphBuilder::BuildCompareOp(const Operator* js_op) { | 1337 void BytecodeGraphBuilder::BuildCompareOp(const Operator* js_op) { |
| 1338 FrameStateBeforeAndAfter states(this); | 1338 FrameStateBeforeAndAfter states(this); |
| 1339 Node* left = | 1339 Node* left = |
| 1340 environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); | 1340 environment()->LookupRegister(bytecode_iterator().GetRegisterOperand(0)); |
| 1341 Node* right = environment()->LookupAccumulator(); | 1341 Node* right = environment()->LookupAccumulator(); |
| 1342 Node* node = NewNode(js_op, left, right); | 1342 Node* node = NewNode(js_op, left, right); |
| 1343 environment()->BindAccumulator(node, &states); | 1343 environment()->BindAccumulator(node, &states); |
| 1344 } | 1344 } |
| 1345 | 1345 |
| 1346 void BytecodeGraphBuilder::VisitTestEqual() { | 1346 void BytecodeGraphBuilder::VisitTestEqual() { |
| 1347 CompareOperationHints hints = CompareOperationHints::Any(); | 1347 CompareOperationHint hint = CompareOperationHint::kAny; |
| 1348 BuildCompareOp(javascript()->Equal(hints)); | 1348 BuildCompareOp(javascript()->Equal(hint)); |
| 1349 } | 1349 } |
| 1350 | 1350 |
| 1351 void BytecodeGraphBuilder::VisitTestNotEqual() { | 1351 void BytecodeGraphBuilder::VisitTestNotEqual() { |
| 1352 CompareOperationHints hints = CompareOperationHints::Any(); | 1352 CompareOperationHint hint = CompareOperationHint::kAny; |
| 1353 BuildCompareOp(javascript()->NotEqual(hints)); | 1353 BuildCompareOp(javascript()->NotEqual(hint)); |
| 1354 } | 1354 } |
| 1355 | 1355 |
| 1356 void BytecodeGraphBuilder::VisitTestEqualStrict() { | 1356 void BytecodeGraphBuilder::VisitTestEqualStrict() { |
| 1357 CompareOperationHints hints = CompareOperationHints::Any(); | 1357 CompareOperationHint hint = CompareOperationHint::kAny; |
| 1358 BuildCompareOp(javascript()->StrictEqual(hints)); | 1358 BuildCompareOp(javascript()->StrictEqual(hint)); |
| 1359 } | 1359 } |
| 1360 | 1360 |
| 1361 void BytecodeGraphBuilder::VisitTestLessThan() { | 1361 void BytecodeGraphBuilder::VisitTestLessThan() { |
| 1362 CompareOperationHints hints = CompareOperationHints::Any(); | 1362 CompareOperationHint hint = CompareOperationHint::kAny; |
| 1363 BuildCompareOp(javascript()->LessThan(hints)); | 1363 BuildCompareOp(javascript()->LessThan(hint)); |
| 1364 } | 1364 } |
| 1365 | 1365 |
| 1366 void BytecodeGraphBuilder::VisitTestGreaterThan() { | 1366 void BytecodeGraphBuilder::VisitTestGreaterThan() { |
| 1367 CompareOperationHints hints = CompareOperationHints::Any(); | 1367 CompareOperationHint hint = CompareOperationHint::kAny; |
| 1368 BuildCompareOp(javascript()->GreaterThan(hints)); | 1368 BuildCompareOp(javascript()->GreaterThan(hint)); |
| 1369 } | 1369 } |
| 1370 | 1370 |
| 1371 void BytecodeGraphBuilder::VisitTestLessThanOrEqual() { | 1371 void BytecodeGraphBuilder::VisitTestLessThanOrEqual() { |
| 1372 CompareOperationHints hints = CompareOperationHints::Any(); | 1372 CompareOperationHint hint = CompareOperationHint::kAny; |
| 1373 BuildCompareOp(javascript()->LessThanOrEqual(hints)); | 1373 BuildCompareOp(javascript()->LessThanOrEqual(hint)); |
| 1374 } | 1374 } |
| 1375 | 1375 |
| 1376 void BytecodeGraphBuilder::VisitTestGreaterThanOrEqual() { | 1376 void BytecodeGraphBuilder::VisitTestGreaterThanOrEqual() { |
| 1377 CompareOperationHints hints = CompareOperationHints::Any(); | 1377 CompareOperationHint hint = CompareOperationHint::kAny; |
| 1378 BuildCompareOp(javascript()->GreaterThanOrEqual(hints)); | 1378 BuildCompareOp(javascript()->GreaterThanOrEqual(hint)); |
| 1379 } | 1379 } |
| 1380 | 1380 |
| 1381 void BytecodeGraphBuilder::VisitTestIn() { | 1381 void BytecodeGraphBuilder::VisitTestIn() { |
| 1382 BuildCompareOp(javascript()->HasProperty()); | 1382 BuildCompareOp(javascript()->HasProperty()); |
| 1383 } | 1383 } |
| 1384 | 1384 |
| 1385 void BytecodeGraphBuilder::VisitTestInstanceOf() { | 1385 void BytecodeGraphBuilder::VisitTestInstanceOf() { |
| 1386 BuildCompareOp(javascript()->InstanceOf()); | 1386 BuildCompareOp(javascript()->InstanceOf()); |
| 1387 } | 1387 } |
| 1388 | 1388 |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1679 NewIfTrue(); | 1679 NewIfTrue(); |
| 1680 MergeIntoSuccessorEnvironment(bytecode_iterator().GetJumpTargetOffset()); | 1680 MergeIntoSuccessorEnvironment(bytecode_iterator().GetJumpTargetOffset()); |
| 1681 set_environment(if_false_environment); | 1681 set_environment(if_false_environment); |
| 1682 NewIfFalse(); | 1682 NewIfFalse(); |
| 1683 } | 1683 } |
| 1684 | 1684 |
| 1685 | 1685 |
| 1686 void BytecodeGraphBuilder::BuildJumpIfEqual(Node* comperand) { | 1686 void BytecodeGraphBuilder::BuildJumpIfEqual(Node* comperand) { |
| 1687 Node* accumulator = environment()->LookupAccumulator(); | 1687 Node* accumulator = environment()->LookupAccumulator(); |
| 1688 Node* condition = | 1688 Node* condition = |
| 1689 NewNode(javascript()->StrictEqual(CompareOperationHints::Any()), | 1689 NewNode(javascript()->StrictEqual(CompareOperationHint::kAny), |
| 1690 accumulator, comperand); | 1690 accumulator, comperand); |
| 1691 BuildConditionalJump(condition); | 1691 BuildConditionalJump(condition); |
| 1692 } | 1692 } |
| 1693 | 1693 |
| 1694 | 1694 |
| 1695 void BytecodeGraphBuilder::BuildJumpIfToBooleanEqual(Node* comperand) { | 1695 void BytecodeGraphBuilder::BuildJumpIfToBooleanEqual(Node* comperand) { |
| 1696 Node* accumulator = environment()->LookupAccumulator(); | 1696 Node* accumulator = environment()->LookupAccumulator(); |
| 1697 Node* to_boolean = | 1697 Node* to_boolean = |
| 1698 NewNode(javascript()->ToBoolean(ToBooleanHint::kAny), accumulator); | 1698 NewNode(javascript()->ToBoolean(ToBooleanHint::kAny), accumulator); |
| 1699 Node* condition = | 1699 Node* condition = |
| 1700 NewNode(javascript()->StrictEqual(CompareOperationHints::Any()), | 1700 NewNode(javascript()->StrictEqual(CompareOperationHint::kAny), to_boolean, |
| 1701 to_boolean, comperand); | 1701 comperand); |
| 1702 BuildConditionalJump(condition); | 1702 BuildConditionalJump(condition); |
| 1703 } | 1703 } |
| 1704 | 1704 |
| 1705 void BytecodeGraphBuilder::BuildJumpIfNotHole() { | 1705 void BytecodeGraphBuilder::BuildJumpIfNotHole() { |
| 1706 Node* accumulator = environment()->LookupAccumulator(); | 1706 Node* accumulator = environment()->LookupAccumulator(); |
| 1707 Node* condition = | 1707 Node* condition = |
| 1708 NewNode(javascript()->StrictEqual(CompareOperationHints::Any()), | 1708 NewNode(javascript()->StrictEqual(CompareOperationHint::kAny), |
| 1709 accumulator, jsgraph()->TheHoleConstant()); | 1709 accumulator, jsgraph()->TheHoleConstant()); |
| 1710 Node* node = | 1710 Node* node = |
| 1711 NewNode(common()->Select(MachineRepresentation::kTagged), condition, | 1711 NewNode(common()->Select(MachineRepresentation::kTagged), condition, |
| 1712 jsgraph()->FalseConstant(), jsgraph()->TrueConstant()); | 1712 jsgraph()->FalseConstant(), jsgraph()->TrueConstant()); |
| 1713 BuildConditionalJump(node); | 1713 BuildConditionalJump(node); |
| 1714 } | 1714 } |
| 1715 | 1715 |
| 1716 Node** BytecodeGraphBuilder::EnsureInputBufferSize(int size) { | 1716 Node** BytecodeGraphBuilder::EnsureInputBufferSize(int size) { |
| 1717 if (size > input_buffer_size_) { | 1717 if (size > input_buffer_size_) { |
| 1718 size = size + kInputBufferSizeIncrement + input_buffer_size_; | 1718 size = size + kInputBufferSizeIncrement + input_buffer_size_; |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1895 // Phi does not exist yet, introduce one. | 1895 // Phi does not exist yet, introduce one. |
| 1896 value = NewPhi(inputs, value, control); | 1896 value = NewPhi(inputs, value, control); |
| 1897 value->ReplaceInput(inputs - 1, other); | 1897 value->ReplaceInput(inputs - 1, other); |
| 1898 } | 1898 } |
| 1899 return value; | 1899 return value; |
| 1900 } | 1900 } |
| 1901 | 1901 |
| 1902 } // namespace compiler | 1902 } // namespace compiler |
| 1903 } // namespace internal | 1903 } // namespace internal |
| 1904 } // namespace v8 | 1904 } // namespace v8 |
| OLD | NEW |