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

Side by Side Diff: src/hydrogen.h

Issue 110573004: Merge bleeding_edge 17696:18016. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/parser
Patch Set: Created 7 years 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 935 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 946
947 HArgumentsObject* arguments_object_; 947 HArgumentsObject* arguments_object_;
948 HArgumentsElements* arguments_elements_; 948 HArgumentsElements* arguments_elements_;
949 949
950 FunctionState* outer_; 950 FunctionState* outer_;
951 }; 951 };
952 952
953 953
954 class HIfContinuation V8_FINAL { 954 class HIfContinuation V8_FINAL {
955 public: 955 public:
956 HIfContinuation() : continuation_captured_(false) {} 956 HIfContinuation()
957 : continuation_captured_(false),
958 true_branch_(NULL),
959 false_branch_(NULL) {}
957 HIfContinuation(HBasicBlock* true_branch, 960 HIfContinuation(HBasicBlock* true_branch,
958 HBasicBlock* false_branch) 961 HBasicBlock* false_branch)
959 : continuation_captured_(true), true_branch_(true_branch), 962 : continuation_captured_(true), true_branch_(true_branch),
960 false_branch_(false_branch) {} 963 false_branch_(false_branch) {}
961 ~HIfContinuation() { ASSERT(!continuation_captured_); } 964 ~HIfContinuation() { ASSERT(!continuation_captured_); }
962 965
963 void Capture(HBasicBlock* true_branch, 966 void Capture(HBasicBlock* true_branch,
964 HBasicBlock* false_branch) { 967 HBasicBlock* false_branch) {
965 ASSERT(!continuation_captured_); 968 ASSERT(!continuation_captured_);
966 true_branch_ = true_branch; 969 true_branch_ = true_branch;
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
1246 int position() const { return position_; } 1249 int position() const { return position_; }
1247 1250
1248 protected: 1251 protected:
1249 virtual bool BuildGraph() = 0; 1252 virtual bool BuildGraph() = 0;
1250 1253
1251 HBasicBlock* CreateBasicBlock(HEnvironment* env); 1254 HBasicBlock* CreateBasicBlock(HEnvironment* env);
1252 HBasicBlock* CreateLoopHeaderBlock(); 1255 HBasicBlock* CreateLoopHeaderBlock();
1253 1256
1254 HValue* BuildCheckHeapObject(HValue* object); 1257 HValue* BuildCheckHeapObject(HValue* object);
1255 HValue* BuildCheckMap(HValue* obj, Handle<Map> map); 1258 HValue* BuildCheckMap(HValue* obj, Handle<Map> map);
1259 HValue* BuildCheckString(HValue* string);
1256 HValue* BuildWrapReceiver(HValue* object, HValue* function); 1260 HValue* BuildWrapReceiver(HValue* object, HValue* function);
1257 1261
1258 // Building common constructs 1262 // Building common constructs
1259 HValue* BuildCheckForCapacityGrow(HValue* object, 1263 HValue* BuildCheckForCapacityGrow(HValue* object,
1260 HValue* elements, 1264 HValue* elements,
1261 ElementsKind kind, 1265 ElementsKind kind,
1262 HValue* length, 1266 HValue* length,
1263 HValue* key, 1267 HValue* key,
1264 bool is_js_array); 1268 bool is_js_array);
1265 1269
1266 HValue* BuildCopyElementsOnWrite(HValue* object, 1270 HValue* BuildCopyElementsOnWrite(HValue* object,
1267 HValue* elements, 1271 HValue* elements,
1268 ElementsKind kind, 1272 ElementsKind kind,
1269 HValue* length); 1273 HValue* length);
1270 1274
1271 void BuildTransitionElementsKind(HValue* object, 1275 void BuildTransitionElementsKind(HValue* object,
1272 HValue* map, 1276 HValue* map,
1273 ElementsKind from_kind, 1277 ElementsKind from_kind,
1274 ElementsKind to_kind, 1278 ElementsKind to_kind,
1275 bool is_jsarray); 1279 bool is_jsarray);
1276 1280
1277 HValue* BuildNumberToString(HValue* object, Handle<Type> type); 1281 HValue* BuildNumberToString(HValue* object, Handle<Type> type);
1278 1282
1283 HValue* BuildUncheckedDictionaryElementLoad(HValue* receiver,
1284 HValue* key);
1285
1279 // Computes the size for a sequential string of the given length and encoding. 1286 // Computes the size for a sequential string of the given length and encoding.
1280 HValue* BuildSeqStringSizeFor(HValue* length, 1287 HValue* BuildSeqStringSizeFor(HValue* length,
1281 String::Encoding encoding); 1288 String::Encoding encoding);
1282 // Copies characters from one sequential string to another. 1289 // Copies characters from one sequential string to another.
1283 void BuildCopySeqStringChars(HValue* src, 1290 void BuildCopySeqStringChars(HValue* src,
1284 HValue* src_offset, 1291 HValue* src_offset,
1285 String::Encoding src_encoding, 1292 String::Encoding src_encoding,
1286 HValue* dst, 1293 HValue* dst,
1287 HValue* dst_offset, 1294 HValue* dst_offset,
1288 String::Encoding dst_encoding, 1295 String::Encoding dst_encoding,
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1325 store_map->SkipWriteBarrier(); 1332 store_map->SkipWriteBarrier();
1326 return store_map; 1333 return store_map;
1327 } 1334 }
1328 HLoadNamedField* AddLoadElements(HValue* object); 1335 HLoadNamedField* AddLoadElements(HValue* object);
1329 1336
1330 bool MatchRotateRight(HValue* left, 1337 bool MatchRotateRight(HValue* left,
1331 HValue* right, 1338 HValue* right,
1332 HValue** operand, 1339 HValue** operand,
1333 HValue** shift_amount); 1340 HValue** shift_amount);
1334 1341
1335 HInstruction* BuildBinaryOperation(Token::Value op, 1342 HValue* BuildBinaryOperation(Token::Value op,
1336 HValue* left, 1343 HValue* left,
1337 HValue* right, 1344 HValue* right,
1338 Handle<Type> left_type, 1345 Handle<Type> left_type,
1339 Handle<Type> right_type, 1346 Handle<Type> right_type,
1340 Handle<Type> result_type, 1347 Handle<Type> result_type,
1341 Maybe<int> fixed_right_arg, 1348 Maybe<int> fixed_right_arg);
1342 bool binop_stub = false);
1343 1349
1344 HLoadNamedField* AddLoadFixedArrayLength(HValue *object); 1350 HLoadNamedField* AddLoadFixedArrayLength(HValue *object);
1345 1351
1346 HValue* AddLoadJSBuiltin(Builtins::JavaScript builtin); 1352 HValue* AddLoadJSBuiltin(Builtins::JavaScript builtin);
1347 1353
1348 HValue* EnforceNumberType(HValue* number, Handle<Type> expected); 1354 HValue* EnforceNumberType(HValue* number, Handle<Type> expected);
1349 HValue* TruncateToNumber(HValue* value, Handle<Type>* expected); 1355 HValue* TruncateToNumber(HValue* value, Handle<Type>* expected);
1350 1356
1351 void FinishExitWithHardDeoptimization(const char* reason, 1357 void FinishExitWithHardDeoptimization(const char* reason,
1352 HBasicBlock* continuation); 1358 HBasicBlock* continuation);
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
1486 // // continues after else code of if_whatever or if_something. 1492 // // continues after else code of if_whatever or if_something.
1487 // ... 1493 // ...
1488 // if_finally.End(); 1494 // if_finally.End();
1489 void JoinContinuation(HIfContinuation* continuation); 1495 void JoinContinuation(HIfContinuation* continuation);
1490 1496
1491 void Then(); 1497 void Then();
1492 void Else(); 1498 void Else();
1493 void End(); 1499 void End();
1494 1500
1495 void Deopt(const char* reason); 1501 void Deopt(const char* reason);
1502 void ThenDeopt(const char* reason) {
1503 Then();
1504 Deopt(reason);
1505 }
1496 void ElseDeopt(const char* reason) { 1506 void ElseDeopt(const char* reason) {
1497 Else(); 1507 Else();
1498 Deopt(reason); 1508 Deopt(reason);
1499 } 1509 }
1500 1510
1501 void Return(HValue* value); 1511 void Return(HValue* value);
1502 1512
1503 private: 1513 private:
1504 HControlInstruction* AddCompare(HControlInstruction* compare); 1514 HControlInstruction* AddCompare(HControlInstruction* compare);
1505 1515
1506 HGraphBuilder* builder() const { return builder_; } 1516 HGraphBuilder* builder() const { return builder_; }
1507 1517
1518 void AddMergeAtJoinBlock(bool deopt);
1519
1520 void Finish();
1521 void Finish(HBasicBlock** then_continuation,
1522 HBasicBlock** else_continuation);
1523
1524 class MergeAtJoinBlock : public ZoneObject {
1525 public:
1526 MergeAtJoinBlock(HBasicBlock* block,
1527 bool deopt,
1528 MergeAtJoinBlock* next)
1529 : block_(block),
1530 deopt_(deopt),
1531 next_(next) {}
1532 HBasicBlock* block_;
1533 bool deopt_;
1534 MergeAtJoinBlock* next_;
1535 };
1536
1508 HGraphBuilder* builder_; 1537 HGraphBuilder* builder_;
1509 bool finished_ : 1; 1538 bool finished_ : 1;
1510 bool deopt_then_ : 1;
1511 bool deopt_else_ : 1;
1512 bool did_then_ : 1; 1539 bool did_then_ : 1;
1513 bool did_else_ : 1; 1540 bool did_else_ : 1;
1541 bool did_else_if_ : 1;
1514 bool did_and_ : 1; 1542 bool did_and_ : 1;
1515 bool did_or_ : 1; 1543 bool did_or_ : 1;
1516 bool captured_ : 1; 1544 bool captured_ : 1;
1517 bool needs_compare_ : 1; 1545 bool needs_compare_ : 1;
1546 bool pending_merge_block_ : 1;
1518 HBasicBlock* first_true_block_; 1547 HBasicBlock* first_true_block_;
1519 HBasicBlock* last_true_block_;
1520 HBasicBlock* first_false_block_; 1548 HBasicBlock* first_false_block_;
1521 HBasicBlock* split_edge_merge_block_; 1549 HBasicBlock* split_edge_merge_block_;
1522 HBasicBlock* merge_block_; 1550 MergeAtJoinBlock* merge_at_join_blocks_;
1551 int normal_merge_at_join_block_count_;
1552 int deopt_merge_at_join_block_count_;
1523 }; 1553 };
1524 1554
1525 class LoopBuilder V8_FINAL { 1555 class LoopBuilder V8_FINAL {
1526 public: 1556 public:
1527 enum Direction { 1557 enum Direction {
1528 kPreIncrement, 1558 kPreIncrement,
1529 kPostIncrement, 1559 kPostIncrement,
1530 kPreDecrement, 1560 kPreDecrement,
1531 kPostDecrement 1561 kPostDecrement
1532 }; 1562 };
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1576 class JSArrayBuilder V8_FINAL { 1606 class JSArrayBuilder V8_FINAL {
1577 public: 1607 public:
1578 JSArrayBuilder(HGraphBuilder* builder, 1608 JSArrayBuilder(HGraphBuilder* builder,
1579 ElementsKind kind, 1609 ElementsKind kind,
1580 HValue* allocation_site_payload, 1610 HValue* allocation_site_payload,
1581 HValue* constructor_function, 1611 HValue* constructor_function,
1582 AllocationSiteOverrideMode override_mode); 1612 AllocationSiteOverrideMode override_mode);
1583 1613
1584 JSArrayBuilder(HGraphBuilder* builder, 1614 JSArrayBuilder(HGraphBuilder* builder,
1585 ElementsKind kind, 1615 ElementsKind kind,
1586 HValue* constructor_function); 1616 HValue* constructor_function = NULL);
1617
1618 enum FillMode {
1619 DONT_FILL_WITH_HOLE,
1620 FILL_WITH_HOLE
1621 };
1622
1623 ElementsKind kind() { return kind_; }
1587 1624
1588 HValue* AllocateEmptyArray(); 1625 HValue* AllocateEmptyArray();
1589 HValue* AllocateArray(HValue* capacity, HValue* length_field, 1626 HValue* AllocateArray(HValue* capacity, HValue* length_field,
1590 bool fill_with_hole); 1627 FillMode fill_mode = FILL_WITH_HOLE);
1591 HValue* GetElementsLocation() { return elements_location_; } 1628 HValue* GetElementsLocation() { return elements_location_; }
1629 HValue* EmitMapCode();
1592 1630
1593 private: 1631 private:
1594 Zone* zone() const { return builder_->zone(); } 1632 Zone* zone() const { return builder_->zone(); }
1595 int elements_size() const { 1633 int elements_size() const {
1596 return IsFastDoubleElementsKind(kind_) ? kDoubleSize : kPointerSize; 1634 return IsFastDoubleElementsKind(kind_) ? kDoubleSize : kPointerSize;
1597 } 1635 }
1598 HGraphBuilder* builder() { return builder_; } 1636 HGraphBuilder* builder() { return builder_; }
1599 HGraph* graph() { return builder_->graph(); } 1637 HGraph* graph() { return builder_->graph(); }
1600 int initial_capacity() { 1638 int initial_capacity() {
1601 STATIC_ASSERT(JSArray::kPreallocatedArrayElements > 0); 1639 STATIC_ASSERT(JSArray::kPreallocatedArrayElements > 0);
1602 return JSArray::kPreallocatedArrayElements; 1640 return JSArray::kPreallocatedArrayElements;
1603 } 1641 }
1604 1642
1605 HValue* EmitMapCode();
1606 HValue* EmitInternalMapCode(); 1643 HValue* EmitInternalMapCode();
1607 HValue* EstablishEmptyArrayAllocationSize(); 1644 HValue* EstablishEmptyArrayAllocationSize();
1608 HValue* EstablishAllocationSize(HValue* length_node); 1645 HValue* EstablishAllocationSize(HValue* length_node);
1609 HValue* AllocateArray(HValue* size_in_bytes, HValue* capacity, 1646 HValue* AllocateArray(HValue* size_in_bytes, HValue* capacity,
1610 HValue* length_field, bool fill_with_hole); 1647 HValue* length_field,
1648 FillMode fill_mode = FILL_WITH_HOLE);
1611 1649
1612 HGraphBuilder* builder_; 1650 HGraphBuilder* builder_;
1613 ElementsKind kind_; 1651 ElementsKind kind_;
1614 AllocationSiteMode mode_; 1652 AllocationSiteMode mode_;
1615 HValue* allocation_site_payload_; 1653 HValue* allocation_site_payload_;
1616 HValue* constructor_function_; 1654 HValue* constructor_function_;
1617 HInnerAllocatedObject* elements_location_; 1655 HInnerAllocatedObject* elements_location_;
1618 }; 1656 };
1619 1657
1658 HValue* BuildAllocateArrayFromLength(JSArrayBuilder* array_builder,
1659 HValue* length_argument);
1660
1620 HValue* BuildAllocateElements(ElementsKind kind, 1661 HValue* BuildAllocateElements(ElementsKind kind,
1621 HValue* capacity); 1662 HValue* capacity);
1622 1663
1623 void BuildInitializeElementsHeader(HValue* elements, 1664 void BuildInitializeElementsHeader(HValue* elements,
1624 ElementsKind kind, 1665 ElementsKind kind,
1625 HValue* capacity); 1666 HValue* capacity);
1626 1667
1627 HValue* BuildAllocateElementsAndInitializeElementsHeader(ElementsKind kind, 1668 HValue* BuildAllocateElementsAndInitializeElementsHeader(ElementsKind kind,
1628 HValue* capacity); 1669 HValue* capacity);
1629 1670
(...skipping 26 matching lines...) Expand all
1656 ElementsKind to_elements_kind, 1697 ElementsKind to_elements_kind,
1657 HValue* length, 1698 HValue* length,
1658 HValue* capacity); 1699 HValue* capacity);
1659 1700
1660 HValue* BuildCloneShallowArray(HValue* boilerplate, 1701 HValue* BuildCloneShallowArray(HValue* boilerplate,
1661 HValue* allocation_site, 1702 HValue* allocation_site,
1662 AllocationSiteMode mode, 1703 AllocationSiteMode mode,
1663 ElementsKind kind, 1704 ElementsKind kind,
1664 int length); 1705 int length);
1665 1706
1707 HValue* BuildElementIndexHash(HValue* index);
1708
1666 void BuildCompareNil( 1709 void BuildCompareNil(
1667 HValue* value, 1710 HValue* value,
1668 Handle<Type> type, 1711 Handle<Type> type,
1669 HIfContinuation* continuation); 1712 HIfContinuation* continuation);
1670 1713
1671 HValue* BuildCreateAllocationMemento(HValue* previous_object, 1714 HValue* BuildCreateAllocationMemento(HValue* previous_object,
1672 int previous_object_size, 1715 int previous_object_size,
1673 HValue* payload); 1716 HValue* payload);
1674 1717
1675 HInstruction* BuildConstantMapCheck(Handle<JSObject> constant, 1718 HInstruction* BuildConstantMapCheck(Handle<JSObject> constant,
1676 CompilationInfo* info); 1719 CompilationInfo* info);
1677 HInstruction* BuildCheckPrototypeMaps(Handle<JSObject> prototype, 1720 HInstruction* BuildCheckPrototypeMaps(Handle<JSObject> prototype,
1678 Handle<JSObject> holder); 1721 Handle<JSObject> holder);
1679 1722
1680 HInstruction* BuildGetNativeContext(); 1723 HInstruction* BuildGetNativeContext();
1681 HInstruction* BuildGetArrayFunction(); 1724 HInstruction* BuildGetArrayFunction();
1682 1725
1683 protected: 1726 protected:
1684 void SetSourcePosition(int position) { 1727 void SetSourcePosition(int position) {
1685 ASSERT(position != RelocInfo::kNoPosition); 1728 ASSERT(position != RelocInfo::kNoPosition);
1686 position_ = position; 1729 position_ = position;
1687 } 1730 }
1688 1731
1689 private: 1732 private:
1690 HGraphBuilder(); 1733 HGraphBuilder();
1691 1734
1735 HValue* BuildUncheckedDictionaryElementLoadHelper(
1736 HValue* elements,
1737 HValue* key,
1738 HValue* hash,
1739 HValue* mask,
1740 int current_probe);
1741
1692 void PadEnvironmentForContinuation(HBasicBlock* from, 1742 void PadEnvironmentForContinuation(HBasicBlock* from,
1693 HBasicBlock* continuation); 1743 HBasicBlock* continuation);
1694 1744
1695 CompilationInfo* info_; 1745 CompilationInfo* info_;
1696 HGraph* graph_; 1746 HGraph* graph_;
1697 HBasicBlock* current_block_; 1747 HBasicBlock* current_block_;
1698 int position_; 1748 int position_;
1699 }; 1749 };
1700 1750
1701 1751
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
2094 BailoutId ast_id); 2144 BailoutId ast_id);
2095 2145
2096 void HandlePropertyAssignment(Assignment* expr); 2146 void HandlePropertyAssignment(Assignment* expr);
2097 void HandleCompoundAssignment(Assignment* expr); 2147 void HandleCompoundAssignment(Assignment* expr);
2098 void HandlePolymorphicLoadNamedField(BailoutId ast_id, 2148 void HandlePolymorphicLoadNamedField(BailoutId ast_id,
2099 BailoutId return_id, 2149 BailoutId return_id,
2100 HValue* object, 2150 HValue* object,
2101 SmallMapList* types, 2151 SmallMapList* types,
2102 Handle<String> name); 2152 Handle<String> name);
2103 2153
2154 bool IsCallNewArrayInlineable(CallNew* expr);
2155 void BuildInlinedCallNewArray(CallNew* expr);
2156
2157 void VisitDataViewInitialize(CallRuntime* expr);
2158
2104 class PropertyAccessInfo { 2159 class PropertyAccessInfo {
2105 public: 2160 public:
2106 PropertyAccessInfo(Isolate* isolate, Handle<Map> map, Handle<String> name) 2161 PropertyAccessInfo(Isolate* isolate, Handle<Map> map, Handle<String> name)
2107 : lookup_(isolate), 2162 : lookup_(isolate),
2108 map_(map), 2163 map_(map),
2109 name_(name), 2164 name_(name),
2110 access_(HObjectAccess::ForMap()) { } 2165 access_(HObjectAccess::ForMap()) { }
2111 2166
2112 // Checkes whether this PropertyAccessInfo can be handled as a monomorphic 2167 // Checkes whether this PropertyAccessInfo can be handled as a monomorphic
2113 // load named. It additionally fills in the fields necessary to generate the 2168 // load named. It additionally fills in the fields necessary to generate the
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
2212 Handle<String> name); 2267 Handle<String> name);
2213 void HandleLiteralCompareTypeof(CompareOperation* expr, 2268 void HandleLiteralCompareTypeof(CompareOperation* expr,
2214 Expression* sub_expr, 2269 Expression* sub_expr,
2215 Handle<String> check); 2270 Handle<String> check);
2216 void HandleLiteralCompareNil(CompareOperation* expr, 2271 void HandleLiteralCompareNil(CompareOperation* expr,
2217 Expression* sub_expr, 2272 Expression* sub_expr,
2218 NilValue nil); 2273 NilValue nil);
2219 2274
2220 HInstruction* BuildStringCharCodeAt(HValue* string, 2275 HInstruction* BuildStringCharCodeAt(HValue* string,
2221 HValue* index); 2276 HValue* index);
2222 HInstruction* BuildBinaryOperation(BinaryOperation* expr, 2277 HValue* BuildBinaryOperation(BinaryOperation* expr,
2223 HValue* left, 2278 HValue* left,
2224 HValue* right); 2279 HValue* right);
2225 HInstruction* BuildIncrement(bool returns_original_input, 2280 HInstruction* BuildIncrement(bool returns_original_input,
2226 CountOperation* expr); 2281 CountOperation* expr);
2227 HInstruction* BuildLoadKeyedGeneric(HValue* object, 2282 HInstruction* BuildLoadKeyedGeneric(HValue* object,
2228 HValue* key); 2283 HValue* key);
2229 2284
2230 HInstruction* TryBuildConsolidatedElementLoad(HValue* object, 2285 HInstruction* TryBuildConsolidatedElementLoad(HValue* object,
2231 HValue* key, 2286 HValue* key,
2232 HValue* val, 2287 HValue* val,
2233 SmallMapList* maps); 2288 SmallMapList* maps);
2234 2289
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
2522 } 2577 }
2523 2578
2524 private: 2579 private:
2525 HGraphBuilder* builder_; 2580 HGraphBuilder* builder_;
2526 }; 2581 };
2527 2582
2528 2583
2529 } } // namespace v8::internal 2584 } } // namespace v8::internal
2530 2585
2531 #endif // V8_HYDROGEN_H_ 2586 #endif // V8_HYDROGEN_H_
OLDNEW
« include/v8-platform.h ('K') | « src/heap-snapshot-generator.cc ('k') | src/hydrogen.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698