| OLD | NEW |
| 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 1028 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1039 protected: | 1039 protected: |
| 1040 virtual bool BuildGraph() = 0; | 1040 virtual bool BuildGraph() = 0; |
| 1041 | 1041 |
| 1042 HBasicBlock* CreateBasicBlock(HEnvironment* env); | 1042 HBasicBlock* CreateBasicBlock(HEnvironment* env); |
| 1043 HBasicBlock* CreateLoopHeaderBlock(); | 1043 HBasicBlock* CreateLoopHeaderBlock(); |
| 1044 | 1044 |
| 1045 HValue* BuildCheckHeapObject(HValue* object); | 1045 HValue* BuildCheckHeapObject(HValue* object); |
| 1046 HValue* BuildCheckMap(HValue* obj, Handle<Map> map); | 1046 HValue* BuildCheckMap(HValue* obj, Handle<Map> map); |
| 1047 | 1047 |
| 1048 // Building common constructs | 1048 // Building common constructs |
| 1049 HInstruction* BuildExternalArrayElementAccess( | |
| 1050 HValue* external_elements, | |
| 1051 HValue* checked_key, | |
| 1052 HValue* val, | |
| 1053 HValue* dependency, | |
| 1054 ElementsKind elements_kind, | |
| 1055 bool is_store); | |
| 1056 | |
| 1057 HInstruction* BuildFastElementAccess( | |
| 1058 HValue* elements, | |
| 1059 HValue* checked_key, | |
| 1060 HValue* val, | |
| 1061 HValue* dependency, | |
| 1062 ElementsKind elements_kind, | |
| 1063 bool is_store, | |
| 1064 LoadKeyedHoleMode load_mode, | |
| 1065 KeyedAccessStoreMode store_mode); | |
| 1066 | |
| 1067 HValue* BuildCheckForCapacityGrow(HValue* object, | 1049 HValue* BuildCheckForCapacityGrow(HValue* object, |
| 1068 HValue* elements, | 1050 HValue* elements, |
| 1069 ElementsKind kind, | 1051 ElementsKind kind, |
| 1070 HValue* length, | 1052 HValue* length, |
| 1071 HValue* key, | 1053 HValue* key, |
| 1072 bool is_js_array); | 1054 bool is_js_array); |
| 1073 | 1055 |
| 1074 HValue* BuildCopyElementsOnWrite(HValue* object, | 1056 HValue* BuildCopyElementsOnWrite(HValue* object, |
| 1075 HValue* elements, | 1057 HValue* elements, |
| 1076 ElementsKind kind, | 1058 ElementsKind kind, |
| 1077 HValue* length); | 1059 HValue* length); |
| 1078 | 1060 |
| 1061 void BuildTransitionElementsKind(HValue* object, |
| 1062 HValue* map, |
| 1063 ElementsKind from_kind, |
| 1064 ElementsKind to_kind, |
| 1065 bool is_jsarray); |
| 1066 |
| 1079 HInstruction* BuildUncheckedMonomorphicElementAccess( | 1067 HInstruction* BuildUncheckedMonomorphicElementAccess( |
| 1080 HValue* object, | 1068 HValue* object, |
| 1081 HValue* key, | 1069 HValue* key, |
| 1082 HValue* val, | 1070 HValue* val, |
| 1083 HCheckMaps* mapcheck, | 1071 HCheckMaps* mapcheck, |
| 1084 bool is_js_array, | 1072 bool is_js_array, |
| 1085 ElementsKind elements_kind, | 1073 ElementsKind elements_kind, |
| 1086 bool is_store, | 1074 bool is_store, |
| 1087 LoadKeyedHoleMode load_mode, | 1075 LoadKeyedHoleMode load_mode, |
| 1088 KeyedAccessStoreMode store_mode); | 1076 KeyedAccessStoreMode store_mode); |
| 1089 | 1077 |
| 1090 HLoadNamedField* AddLoad( | 1078 HLoadNamedField* AddLoad( |
| 1091 HValue *object, | 1079 HValue *object, |
| 1092 HObjectAccess access, | 1080 HObjectAccess access, |
| 1093 HValue *typecheck = NULL, | 1081 HValue *typecheck = NULL, |
| 1094 Representation representation = Representation::Tagged()); | 1082 Representation representation = Representation::Tagged()); |
| 1095 | 1083 |
| 1096 HLoadNamedField* BuildLoadNamedField( | 1084 HLoadNamedField* BuildLoadNamedField( |
| 1097 HValue* object, | 1085 HValue* object, |
| 1098 HObjectAccess access, | 1086 HObjectAccess access, |
| 1099 Representation representation); | 1087 Representation representation); |
| 1100 | 1088 |
| 1089 HInstruction* AddExternalArrayElementAccess( |
| 1090 HValue* external_elements, |
| 1091 HValue* checked_key, |
| 1092 HValue* val, |
| 1093 HValue* dependency, |
| 1094 ElementsKind elements_kind, |
| 1095 bool is_store); |
| 1096 |
| 1097 HInstruction* AddFastElementAccess( |
| 1098 HValue* elements, |
| 1099 HValue* checked_key, |
| 1100 HValue* val, |
| 1101 HValue* dependency, |
| 1102 ElementsKind elements_kind, |
| 1103 bool is_store, |
| 1104 LoadKeyedHoleMode load_mode, |
| 1105 KeyedAccessStoreMode store_mode); |
| 1106 |
| 1101 HStoreNamedField* AddStore( | 1107 HStoreNamedField* AddStore( |
| 1102 HValue *object, | 1108 HValue *object, |
| 1103 HObjectAccess access, | 1109 HObjectAccess access, |
| 1104 HValue *val, | 1110 HValue *val, |
| 1105 Representation representation = Representation::Tagged()); | 1111 Representation representation = Representation::Tagged()); |
| 1106 | 1112 |
| 1107 HStoreNamedField* AddStoreMapConstant(HValue *object, Handle<Map>); | 1113 HStoreNamedField* AddStoreMapConstant(HValue *object, Handle<Map>); |
| 1108 | 1114 |
| 1109 HLoadNamedField* AddLoadElements(HValue *object, HValue *typecheck = NULL); | 1115 HLoadNamedField* AddLoadElements(HValue *object, HValue *typecheck = NULL); |
| 1110 | 1116 |
| (...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1354 | 1360 |
| 1355 void BuildInitializeElementsHeader(HValue* elements, | 1361 void BuildInitializeElementsHeader(HValue* elements, |
| 1356 ElementsKind kind, | 1362 ElementsKind kind, |
| 1357 HValue* capacity); | 1363 HValue* capacity); |
| 1358 | 1364 |
| 1359 HValue* BuildAllocateElementsAndInitializeElementsHeader(HValue* context, | 1365 HValue* BuildAllocateElementsAndInitializeElementsHeader(HValue* context, |
| 1360 ElementsKind kind, | 1366 ElementsKind kind, |
| 1361 HValue* capacity); | 1367 HValue* capacity); |
| 1362 | 1368 |
| 1363 // array must have been allocated with enough room for | 1369 // array must have been allocated with enough room for |
| 1364 // 1) the JSArray, 2) a AllocationSiteInfo if mode requires it, | 1370 // 1) the JSArray, 2) a AllocationMemento if mode requires it, |
| 1365 // 3) a FixedArray or FixedDoubleArray. | 1371 // 3) a FixedArray or FixedDoubleArray. |
| 1366 // A pointer to the Fixed(Double)Array is returned. | 1372 // A pointer to the Fixed(Double)Array is returned. |
| 1367 HInnerAllocatedObject* BuildJSArrayHeader(HValue* array, | 1373 HInnerAllocatedObject* BuildJSArrayHeader(HValue* array, |
| 1368 HValue* array_map, | 1374 HValue* array_map, |
| 1369 AllocationSiteMode mode, | 1375 AllocationSiteMode mode, |
| 1370 HValue* allocation_site_payload, | 1376 HValue* allocation_site_payload, |
| 1371 HValue* length_field); | 1377 HValue* length_field); |
| 1372 | 1378 |
| 1373 HValue* BuildGrowElementsCapacity(HValue* object, | 1379 HValue* BuildGrowElementsCapacity(HValue* object, |
| 1374 HValue* elements, | 1380 HValue* elements, |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1400 | 1406 |
| 1401 HInstruction* BuildUnaryMathOp( | 1407 HInstruction* BuildUnaryMathOp( |
| 1402 HValue* value, Handle<Type> type, Token::Value token); | 1408 HValue* value, Handle<Type> type, Token::Value token); |
| 1403 | 1409 |
| 1404 void BuildCompareNil( | 1410 void BuildCompareNil( |
| 1405 HValue* value, | 1411 HValue* value, |
| 1406 Handle<Type> type, | 1412 Handle<Type> type, |
| 1407 int position, | 1413 int position, |
| 1408 HIfContinuation* continuation); | 1414 HIfContinuation* continuation); |
| 1409 | 1415 |
| 1410 HValue* BuildCreateAllocationSiteInfo(HValue* previous_object, | 1416 HValue* BuildCreateAllocationMemento(HValue* previous_object, |
| 1411 int previous_object_size, | 1417 int previous_object_size, |
| 1412 HValue* payload); | 1418 HValue* payload); |
| 1413 | 1419 |
| 1414 HInstruction* BuildGetNativeContext(HValue* context); | 1420 HInstruction* BuildGetNativeContext(HValue* context); |
| 1415 HInstruction* BuildGetArrayFunction(HValue* context); | 1421 HInstruction* BuildGetArrayFunction(HValue* context); |
| 1416 | 1422 |
| 1417 private: | 1423 private: |
| 1418 HGraphBuilder(); | 1424 HGraphBuilder(); |
| 1419 CompilationInfo* info_; | 1425 CompilationInfo* info_; |
| 1420 HGraph* graph_; | 1426 HGraph* graph_; |
| 1421 HBasicBlock* current_block_; | 1427 HBasicBlock* current_block_; |
| 1422 int no_side_effects_scope_count_; | 1428 int no_side_effects_scope_count_; |
| (...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1728 void HandlePropertyAssignment(Assignment* expr); | 1734 void HandlePropertyAssignment(Assignment* expr); |
| 1729 void HandleCompoundAssignment(Assignment* expr); | 1735 void HandleCompoundAssignment(Assignment* expr); |
| 1730 void HandlePolymorphicLoadNamedField(Property* expr, | 1736 void HandlePolymorphicLoadNamedField(Property* expr, |
| 1731 HValue* object, | 1737 HValue* object, |
| 1732 SmallMapList* types, | 1738 SmallMapList* types, |
| 1733 Handle<String> name); | 1739 Handle<String> name); |
| 1734 HInstruction* TryLoadPolymorphicAsMonomorphic(Property* expr, | 1740 HInstruction* TryLoadPolymorphicAsMonomorphic(Property* expr, |
| 1735 HValue* object, | 1741 HValue* object, |
| 1736 SmallMapList* types, | 1742 SmallMapList* types, |
| 1737 Handle<String> name); | 1743 Handle<String> name); |
| 1738 void HandlePolymorphicStoreNamedField(BailoutId id, | 1744 void HandlePolymorphicStoreNamedField(int position, |
| 1739 int position, | |
| 1740 BailoutId assignment_id, | 1745 BailoutId assignment_id, |
| 1741 HValue* object, | 1746 HValue* object, |
| 1742 HValue* value, | 1747 HValue* value, |
| 1743 HValue* result, | 1748 HValue* result, |
| 1744 SmallMapList* types, | 1749 SmallMapList* types, |
| 1745 Handle<String> name); | 1750 Handle<String> name); |
| 1746 bool TryStorePolymorphicAsMonomorphic(int position, | 1751 bool TryStorePolymorphicAsMonomorphic(int position, |
| 1747 BailoutId assignment_id, | 1752 BailoutId assignment_id, |
| 1748 HValue* object, | 1753 HValue* object, |
| 1749 HValue* value, | 1754 HValue* value, |
| 1750 HValue* result, | 1755 HValue* result, |
| 1751 SmallMapList* types, | 1756 SmallMapList* types, |
| 1752 Handle<String> name); | 1757 Handle<String> name); |
| 1753 void HandlePolymorphicCallNamed(Call* expr, | 1758 void HandlePolymorphicCallNamed(Call* expr, |
| 1754 HValue* receiver, | 1759 HValue* receiver, |
| 1755 SmallMapList* types, | 1760 SmallMapList* types, |
| 1756 Handle<String> name); | 1761 Handle<String> name); |
| 1757 bool TryCallPolymorphicAsMonomorphic(Call* expr, | 1762 bool TryCallPolymorphicAsMonomorphic(Call* expr, |
| 1758 HValue* receiver, | 1763 HValue* receiver, |
| 1759 SmallMapList* types, | 1764 SmallMapList* types, |
| 1760 Handle<String> name); | 1765 Handle<String> name); |
| 1761 void HandleLiteralCompareTypeof(CompareOperation* expr, | 1766 void HandleLiteralCompareTypeof(CompareOperation* expr, |
| 1762 HTypeof* typeof_expr, | 1767 Expression* sub_expr, |
| 1763 Handle<String> check); | 1768 Handle<String> check); |
| 1764 void HandleLiteralCompareNil(CompareOperation* expr, | 1769 void HandleLiteralCompareNil(CompareOperation* expr, |
| 1765 HValue* value, | 1770 Expression* sub_expr, |
| 1766 NilValue nil); | 1771 NilValue nil); |
| 1767 | 1772 |
| 1768 HInstruction* BuildStringCharCodeAt(HValue* context, | 1773 HInstruction* BuildStringCharCodeAt(HValue* context, |
| 1769 HValue* string, | 1774 HValue* string, |
| 1770 HValue* index); | 1775 HValue* index); |
| 1771 HInstruction* BuildBinaryOperation(BinaryOperation* expr, | 1776 HInstruction* BuildBinaryOperation(BinaryOperation* expr, |
| 1772 HValue* left, | 1777 HValue* left, |
| 1773 HValue* right); | 1778 HValue* right); |
| 1774 HInstruction* BuildIncrement(bool returns_original_input, | 1779 HInstruction* BuildIncrement(bool returns_original_input, |
| 1775 CountOperation* expr); | 1780 CountOperation* expr); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1825 void AddCheckMapsWithTransitions(HValue* object, | 1830 void AddCheckMapsWithTransitions(HValue* object, |
| 1826 Handle<Map> map); | 1831 Handle<Map> map); |
| 1827 | 1832 |
| 1828 void BuildStoreNamed(Expression* expression, | 1833 void BuildStoreNamed(Expression* expression, |
| 1829 BailoutId id, | 1834 BailoutId id, |
| 1830 int position, | 1835 int position, |
| 1831 BailoutId assignment_id, | 1836 BailoutId assignment_id, |
| 1832 Property* prop, | 1837 Property* prop, |
| 1833 HValue* object, | 1838 HValue* object, |
| 1834 HValue* store_value, | 1839 HValue* store_value, |
| 1835 HValue* result_value = NULL); | 1840 HValue* result_value); |
| 1836 | 1841 |
| 1837 HInstruction* BuildStoreNamedField(HValue* object, | 1842 HInstruction* BuildStoreNamedField(HValue* object, |
| 1838 Handle<String> name, | 1843 Handle<String> name, |
| 1839 HValue* value, | 1844 HValue* value, |
| 1840 Handle<Map> map, | 1845 Handle<Map> map, |
| 1841 LookupResult* lookup); | 1846 LookupResult* lookup); |
| 1842 HInstruction* BuildStoreNamedGeneric(HValue* object, | 1847 HInstruction* BuildStoreNamedGeneric(HValue* object, |
| 1843 Handle<String> name, | 1848 Handle<String> name, |
| 1844 HValue* value); | 1849 HValue* value); |
| 1845 HInstruction* BuildStoreNamedMonomorphic(HValue* object, | 1850 HInstruction* BuildStoreNamedMonomorphic(HValue* object, |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2090 EmbeddedVector<char, 64> filename_; | 2095 EmbeddedVector<char, 64> filename_; |
| 2091 HeapStringAllocator string_allocator_; | 2096 HeapStringAllocator string_allocator_; |
| 2092 StringStream trace_; | 2097 StringStream trace_; |
| 2093 int indent_; | 2098 int indent_; |
| 2094 }; | 2099 }; |
| 2095 | 2100 |
| 2096 | 2101 |
| 2097 } } // namespace v8::internal | 2102 } } // namespace v8::internal |
| 2098 | 2103 |
| 2099 #endif // V8_HYDROGEN_H_ | 2104 #endif // V8_HYDROGEN_H_ |
| OLD | NEW |