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

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

Issue 2228983002: [turbofan] Simplify BinaryOperationHints and CompareOperationHints. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix compile for realz Created 4 years, 4 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
« no previous file with comments | « src/compiler/bytecode-graph-builder.h ('k') | src/compiler/js-operator.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 1154 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
OLDNEW
« no previous file with comments | « src/compiler/bytecode-graph-builder.h ('k') | src/compiler/js-operator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698