| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 1083 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1094 explicit LConstantT(Handle<Object> value) : value_(value) { } | 1094 explicit LConstantT(Handle<Object> value) : value_(value) { } |
| 1095 Handle<Object> value() const { return value_; } | 1095 Handle<Object> value() const { return value_; } |
| 1096 | 1096 |
| 1097 DECLARE_CONCRETE_INSTRUCTION(ConstantT, "constant-t") | 1097 DECLARE_CONCRETE_INSTRUCTION(ConstantT, "constant-t") |
| 1098 | 1098 |
| 1099 private: | 1099 private: |
| 1100 Handle<Object> value_; | 1100 Handle<Object> value_; |
| 1101 }; | 1101 }; |
| 1102 | 1102 |
| 1103 | 1103 |
| 1104 class LBranch: public LUnaryOperation<1> { | 1104 class LBranch: public LUnaryOperation<0> { |
| 1105 public: | 1105 public: |
| 1106 LBranch(LOperand* input, int true_block_id, int false_block_id) | 1106 LBranch(LOperand* input, int true_block_id, int false_block_id) |
| 1107 : LUnaryOperation<1>(input), | 1107 : LUnaryOperation<0>(input), |
| 1108 true_block_id_(true_block_id), | 1108 true_block_id_(true_block_id), |
| 1109 false_block_id_(false_block_id) { } | 1109 false_block_id_(false_block_id) { } |
| 1110 | 1110 |
| 1111 DECLARE_CONCRETE_INSTRUCTION(Branch, "branch") | 1111 DECLARE_CONCRETE_INSTRUCTION(Branch, "branch") |
| 1112 DECLARE_HYDROGEN_ACCESSOR(Value) | 1112 DECLARE_HYDROGEN_ACCESSOR(Value) |
| 1113 | 1113 |
| 1114 virtual void PrintDataTo(StringStream* stream); | 1114 virtual void PrintDataTo(StringStream* stream); |
| 1115 virtual bool IsControl() const { return true; } | 1115 virtual bool IsControl() const { return true; } |
| 1116 | 1116 |
| 1117 int true_block_id() const { return true_block_id_; } | 1117 int true_block_id() const { return true_block_id_; } |
| 1118 int false_block_id() const { return false_block_id_; } | 1118 int false_block_id() const { return false_block_id_; } |
| 1119 | 1119 |
| 1120 private: | 1120 private: |
| 1121 int true_block_id_; | 1121 int true_block_id_; |
| 1122 int false_block_id_; | 1122 int false_block_id_; |
| 1123 }; | 1123 }; |
| 1124 | 1124 |
| 1125 | 1125 |
| 1126 class LCmpMapAndBranch: public LUnaryOperation<1> { | 1126 class LCmpMapAndBranch: public LUnaryOperation<0> { |
| 1127 public: | 1127 public: |
| 1128 explicit LCmpMapAndBranch(LOperand* value) : LUnaryOperation<1>(value) { } | 1128 explicit LCmpMapAndBranch(LOperand* value) : LUnaryOperation<0>(value) { } |
| 1129 | 1129 |
| 1130 DECLARE_CONCRETE_INSTRUCTION(CmpMapAndBranch, "cmp-map-and-branch") | 1130 DECLARE_CONCRETE_INSTRUCTION(CmpMapAndBranch, "cmp-map-and-branch") |
| 1131 DECLARE_HYDROGEN_ACCESSOR(CompareMapAndBranch) | 1131 DECLARE_HYDROGEN_ACCESSOR(CompareMapAndBranch) |
| 1132 | 1132 |
| 1133 virtual bool IsControl() const { return true; } | 1133 virtual bool IsControl() const { return true; } |
| 1134 | 1134 |
| 1135 Handle<Map> map() const { return hydrogen()->map(); } | 1135 Handle<Map> map() const { return hydrogen()->map(); } |
| 1136 int true_block_id() const { | 1136 int true_block_id() const { |
| 1137 return hydrogen()->true_destination()->block_id(); | 1137 return hydrogen()->true_destination()->block_id(); |
| 1138 } | 1138 } |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1234 virtual void CompileToNative(LCodeGen* generator); | 1234 virtual void CompileToNative(LCodeGen* generator); |
| 1235 virtual const char* Mnemonic() const; | 1235 virtual const char* Mnemonic() const; |
| 1236 | 1236 |
| 1237 Token::Value op() const { return op_; } | 1237 Token::Value op() const { return op_; } |
| 1238 | 1238 |
| 1239 private: | 1239 private: |
| 1240 Token::Value op_; | 1240 Token::Value op_; |
| 1241 }; | 1241 }; |
| 1242 | 1242 |
| 1243 | 1243 |
| 1244 class LReturn: public LUnaryOperation<1> { | 1244 class LReturn: public LUnaryOperation<0> { |
| 1245 public: | 1245 public: |
| 1246 explicit LReturn(LOperand* use) : LUnaryOperation<1>(use) { } | 1246 explicit LReturn(LOperand* use) : LUnaryOperation<0>(use) { } |
| 1247 | 1247 |
| 1248 DECLARE_CONCRETE_INSTRUCTION(Return, "return") | 1248 DECLARE_CONCRETE_INSTRUCTION(Return, "return") |
| 1249 }; | 1249 }; |
| 1250 | 1250 |
| 1251 | 1251 |
| 1252 class LLoadNamedField: public LUnaryOperation<1> { | 1252 class LLoadNamedField: public LUnaryOperation<1> { |
| 1253 public: | 1253 public: |
| 1254 explicit LLoadNamedField(LOperand* object) : LUnaryOperation<1>(object) { } | 1254 explicit LLoadNamedField(LOperand* object) : LUnaryOperation<1>(object) { } |
| 1255 | 1255 |
| 1256 DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field") | 1256 DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field") |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1289 class LLoadElements: public LUnaryOperation<1> { | 1289 class LLoadElements: public LUnaryOperation<1> { |
| 1290 public: | 1290 public: |
| 1291 explicit LLoadElements(LOperand* obj) : LUnaryOperation<1>(obj) { } | 1291 explicit LLoadElements(LOperand* obj) : LUnaryOperation<1>(obj) { } |
| 1292 | 1292 |
| 1293 DECLARE_CONCRETE_INSTRUCTION(LoadElements, "load-elements") | 1293 DECLARE_CONCRETE_INSTRUCTION(LoadElements, "load-elements") |
| 1294 }; | 1294 }; |
| 1295 | 1295 |
| 1296 | 1296 |
| 1297 class LLoadKeyedFastElement: public LBinaryOperation { | 1297 class LLoadKeyedFastElement: public LBinaryOperation { |
| 1298 public: | 1298 public: |
| 1299 LLoadKeyedFastElement(LOperand* elements, | 1299 LLoadKeyedFastElement(LOperand* elements, LOperand* key) |
| 1300 LOperand* key, | 1300 : LBinaryOperation(elements, key) { } |
| 1301 LOperand* load_result) | |
| 1302 : LBinaryOperation(elements, key), | |
| 1303 load_result_(load_result) { } | |
| 1304 | 1301 |
| 1305 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastElement, "load-keyed-fast-element") | 1302 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastElement, "load-keyed-fast-element") |
| 1306 DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastElement) | 1303 DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastElement) |
| 1307 | 1304 |
| 1308 LOperand* elements() const { return left(); } | 1305 LOperand* elements() const { return left(); } |
| 1309 LOperand* key() const { return right(); } | 1306 LOperand* key() const { return right(); } |
| 1310 LOperand* load_result() const { return load_result_; } | |
| 1311 | |
| 1312 private: | |
| 1313 LOperand* load_result_; | |
| 1314 }; | 1307 }; |
| 1315 | 1308 |
| 1316 | 1309 |
| 1317 class LLoadKeyedGeneric: public LBinaryOperation { | 1310 class LLoadKeyedGeneric: public LBinaryOperation { |
| 1318 public: | 1311 public: |
| 1319 LLoadKeyedGeneric(LOperand* obj, LOperand* key) | 1312 LLoadKeyedGeneric(LOperand* obj, LOperand* key) |
| 1320 : LBinaryOperation(obj, key) { } | 1313 : LBinaryOperation(obj, key) { } |
| 1321 | 1314 |
| 1322 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic") | 1315 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic") |
| 1323 | 1316 |
| 1324 LOperand* object() const { return left(); } | 1317 LOperand* object() const { return left(); } |
| 1325 LOperand* key() const { return right(); } | 1318 LOperand* key() const { return right(); } |
| 1326 }; | 1319 }; |
| 1327 | 1320 |
| 1328 | 1321 |
| 1329 class LLoadGlobal: public LTemplateInstruction<1> { | 1322 class LLoadGlobal: public LTemplateInstruction<1> { |
| 1330 public: | 1323 public: |
| 1331 DECLARE_CONCRETE_INSTRUCTION(LoadGlobal, "load-global") | 1324 DECLARE_CONCRETE_INSTRUCTION(LoadGlobal, "load-global") |
| 1332 DECLARE_HYDROGEN_ACCESSOR(LoadGlobal) | 1325 DECLARE_HYDROGEN_ACCESSOR(LoadGlobal) |
| 1333 }; | 1326 }; |
| 1334 | 1327 |
| 1335 | 1328 |
| 1336 class LStoreGlobal: public LUnaryOperation<1> { | 1329 class LStoreGlobal: public LUnaryOperation<0> { |
| 1337 public: | 1330 public: |
| 1338 explicit LStoreGlobal(LOperand* value) : LUnaryOperation<1>(value) {} | 1331 explicit LStoreGlobal(LOperand* value) : LUnaryOperation<0>(value) {} |
| 1339 | 1332 |
| 1340 DECLARE_CONCRETE_INSTRUCTION(StoreGlobal, "store-global") | 1333 DECLARE_CONCRETE_INSTRUCTION(StoreGlobal, "store-global") |
| 1341 DECLARE_HYDROGEN_ACCESSOR(StoreGlobal) | 1334 DECLARE_HYDROGEN_ACCESSOR(StoreGlobal) |
| 1342 }; | 1335 }; |
| 1343 | 1336 |
| 1344 | 1337 |
| 1345 class LPushArgument: public LUnaryOperation<1> { | 1338 class LPushArgument: public LUnaryOperation<0> { |
| 1346 public: | 1339 public: |
| 1347 explicit LPushArgument(LOperand* argument) : LUnaryOperation<1>(argument) {} | 1340 explicit LPushArgument(LOperand* argument) : LUnaryOperation<0>(argument) {} |
| 1348 | 1341 |
| 1349 DECLARE_CONCRETE_INSTRUCTION(PushArgument, "push-argument") | 1342 DECLARE_CONCRETE_INSTRUCTION(PushArgument, "push-argument") |
| 1350 }; | 1343 }; |
| 1351 | 1344 |
| 1352 | 1345 |
| 1353 class LGlobalObject: public LTemplateInstruction<1> { | 1346 class LGlobalObject: public LTemplateInstruction<1> { |
| 1354 public: | 1347 public: |
| 1355 DECLARE_CONCRETE_INSTRUCTION(GlobalObject, "global-object") | 1348 DECLARE_CONCRETE_INSTRUCTION(GlobalObject, "global-object") |
| 1356 }; | 1349 }; |
| 1357 | 1350 |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1537 | 1530 |
| 1538 bool needs_check() const { return needs_check_; } | 1531 bool needs_check() const { return needs_check_; } |
| 1539 | 1532 |
| 1540 private: | 1533 private: |
| 1541 bool needs_check_; | 1534 bool needs_check_; |
| 1542 }; | 1535 }; |
| 1543 | 1536 |
| 1544 | 1537 |
| 1545 class LStoreNamed: public LTemplateInstruction<0> { | 1538 class LStoreNamed: public LTemplateInstruction<0> { |
| 1546 public: | 1539 public: |
| 1547 LStoreNamed(LOperand* obj, Handle<Object> name, LOperand* val) | 1540 LStoreNamed(LOperand* obj, LOperand* val) : object_(obj), value_(val) { } |
| 1548 : object_(obj), name_(name), value_(val) { } | |
| 1549 | 1541 |
| 1550 DECLARE_INSTRUCTION(StoreNamed) | 1542 DECLARE_INSTRUCTION(StoreNamed) |
| 1543 DECLARE_HYDROGEN_ACCESSOR(StoreNamed) |
| 1551 | 1544 |
| 1552 virtual void PrintDataTo(StringStream* stream); | 1545 virtual void PrintDataTo(StringStream* stream); |
| 1553 | 1546 |
| 1554 LOperand* object() const { return object_; } | 1547 LOperand* object() const { return object_; } |
| 1555 Handle<Object> name() const { return name_; } | 1548 Handle<Object> name() const { return hydrogen()->name(); } |
| 1556 LOperand* value() const { return value_; } | 1549 LOperand* value() const { return value_; } |
| 1557 | 1550 |
| 1558 private: | 1551 private: |
| 1559 LOperand* object_; | 1552 LOperand* object_; |
| 1560 Handle<Object> name_; | |
| 1561 LOperand* value_; | 1553 LOperand* value_; |
| 1562 }; | 1554 }; |
| 1563 | 1555 |
| 1564 | 1556 |
| 1565 class LStoreNamedField: public LStoreNamed { | 1557 class LStoreNamedField: public LStoreNamed { |
| 1566 public: | 1558 public: |
| 1567 LStoreNamedField(LOperand* obj, | 1559 LStoreNamedField(LOperand* obj, LOperand* val, LOperand* temp) |
| 1568 Handle<Object> name, | 1560 : LStoreNamed(obj, val), temp_(temp) { } |
| 1569 LOperand* val, | |
| 1570 bool in_object, | |
| 1571 int offset, | |
| 1572 LOperand* temp, | |
| 1573 bool needs_write_barrier, | |
| 1574 Handle<Map> transition) | |
| 1575 : LStoreNamed(obj, name, val), | |
| 1576 is_in_object_(in_object), | |
| 1577 offset_(offset), | |
| 1578 temp_(temp), | |
| 1579 needs_write_barrier_(needs_write_barrier), | |
| 1580 transition_(transition) { } | |
| 1581 | 1561 |
| 1582 DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field") | 1562 DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field") |
| 1563 DECLARE_HYDROGEN_ACCESSOR(StoreNamedField) |
| 1583 | 1564 |
| 1584 bool is_in_object() { return is_in_object_; } | 1565 bool is_in_object() { return hydrogen()->is_in_object(); } |
| 1585 int offset() { return offset_; } | 1566 int offset() { return hydrogen()->offset(); } |
| 1586 LOperand* temp() { return temp_; } | 1567 LOperand* temp() { return temp_; } |
| 1587 bool needs_write_barrier() { return needs_write_barrier_; } | 1568 bool needs_write_barrier() { return hydrogen()->NeedsWriteBarrier(); } |
| 1588 Handle<Map> transition() const { return transition_; } | 1569 Handle<Map> transition() const { return hydrogen()->transition(); } |
| 1589 void set_transition(Handle<Map> map) { transition_ = map; } | |
| 1590 | 1570 |
| 1591 private: | 1571 private: |
| 1592 bool is_in_object_; | |
| 1593 int offset_; | |
| 1594 LOperand* temp_; | 1572 LOperand* temp_; |
| 1595 bool needs_write_barrier_; | |
| 1596 Handle<Map> transition_; | |
| 1597 }; | 1573 }; |
| 1598 | 1574 |
| 1599 | 1575 |
| 1600 class LStoreNamedGeneric: public LStoreNamed { | 1576 class LStoreNamedGeneric: public LStoreNamed { |
| 1601 public: | 1577 public: |
| 1602 LStoreNamedGeneric(LOperand* obj, | 1578 LStoreNamedGeneric(LOperand* obj, LOperand* val) |
| 1603 Handle<Object> name, | 1579 : LStoreNamed(obj, val) { } |
| 1604 LOperand* val) | |
| 1605 : LStoreNamed(obj, name, val) { } | |
| 1606 | 1580 |
| 1607 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") | 1581 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") |
| 1582 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) |
| 1608 }; | 1583 }; |
| 1609 | 1584 |
| 1610 | 1585 |
| 1611 class LStoreKeyed: public LTemplateInstruction<0> { | 1586 class LStoreKeyed: public LTemplateInstruction<0> { |
| 1612 public: | 1587 public: |
| 1613 LStoreKeyed(LOperand* obj, LOperand* key, LOperand* val) | 1588 LStoreKeyed(LOperand* obj, LOperand* key, LOperand* val) |
| 1614 : object_(obj), key_(key), value_(val) { } | 1589 : object_(obj), key_(key), value_(val) { } |
| 1615 | 1590 |
| 1616 DECLARE_INSTRUCTION(StoreKeyed) | 1591 DECLARE_INSTRUCTION(StoreKeyed) |
| 1617 | 1592 |
| (...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2140 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); | 2115 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
| 2141 }; | 2116 }; |
| 2142 | 2117 |
| 2143 #undef DECLARE_HYDROGEN_ACCESSOR | 2118 #undef DECLARE_HYDROGEN_ACCESSOR |
| 2144 #undef DECLARE_INSTRUCTION | 2119 #undef DECLARE_INSTRUCTION |
| 2145 #undef DECLARE_CONCRETE_INSTRUCTION | 2120 #undef DECLARE_CONCRETE_INSTRUCTION |
| 2146 | 2121 |
| 2147 } } // namespace v8::internal | 2122 } } // namespace v8::internal |
| 2148 | 2123 |
| 2149 #endif // V8_IA32_LITHIUM_IA32_H_ | 2124 #endif // V8_IA32_LITHIUM_IA32_H_ |
| OLD | NEW |