| 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 24 matching lines...) Expand all Loading... |
| 35 | 35 |
| 36 namespace v8 { | 36 namespace v8 { |
| 37 namespace internal { | 37 namespace internal { |
| 38 | 38 |
| 39 // Forward declarations. | 39 // Forward declarations. |
| 40 class LCodeGen; | 40 class LCodeGen; |
| 41 | 41 |
| 42 #define LITHIUM_ALL_INSTRUCTION_LIST(V) \ | 42 #define LITHIUM_ALL_INSTRUCTION_LIST(V) \ |
| 43 V(ControlInstruction) \ | 43 V(ControlInstruction) \ |
| 44 V(Call) \ | 44 V(Call) \ |
| 45 V(StoreKeyed) \ | |
| 46 V(StoreNamed) \ | |
| 47 LITHIUM_CONCRETE_INSTRUCTION_LIST(V) | 45 LITHIUM_CONCRETE_INSTRUCTION_LIST(V) |
| 48 | 46 |
| 49 | 47 |
| 50 #define LITHIUM_CONCRETE_INSTRUCTION_LIST(V) \ | 48 #define LITHIUM_CONCRETE_INSTRUCTION_LIST(V) \ |
| 51 V(AccessArgumentsAt) \ | 49 V(AccessArgumentsAt) \ |
| 52 V(AddI) \ | 50 V(AddI) \ |
| 53 V(ApplyArguments) \ | 51 V(ApplyArguments) \ |
| 54 V(ArgumentsElements) \ | 52 V(ArgumentsElements) \ |
| 55 V(ArgumentsLength) \ | 53 V(ArgumentsLength) \ |
| 56 V(ArithmeticD) \ | 54 V(ArithmeticD) \ |
| (...skipping 1405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1462 | 1460 |
| 1463 DECLARE_CONCRETE_INSTRUCTION(SmiUntag, "smi-untag") | 1461 DECLARE_CONCRETE_INSTRUCTION(SmiUntag, "smi-untag") |
| 1464 | 1462 |
| 1465 bool needs_check() const { return needs_check_; } | 1463 bool needs_check() const { return needs_check_; } |
| 1466 | 1464 |
| 1467 private: | 1465 private: |
| 1468 bool needs_check_; | 1466 bool needs_check_; |
| 1469 }; | 1467 }; |
| 1470 | 1468 |
| 1471 | 1469 |
| 1472 class LStoreNamed: public LTemplateInstruction<0, 2, 1> { | 1470 class LStoreNamedField: public LTemplateInstruction<0, 2, 1> { |
| 1473 public: | 1471 public: |
| 1474 LStoreNamed(LOperand* object, LOperand* value) { | 1472 LStoreNamedField(LOperand* object, LOperand* value, LOperand* temp) { |
| 1475 inputs_[0] = object; | 1473 inputs_[0] = object; |
| 1476 inputs_[1] = value; | 1474 inputs_[1] = value; |
| 1477 } | |
| 1478 | |
| 1479 DECLARE_INSTRUCTION(StoreNamed) | |
| 1480 DECLARE_HYDROGEN_ACCESSOR(StoreNamed) | |
| 1481 | |
| 1482 virtual void PrintDataTo(StringStream* stream); | |
| 1483 | |
| 1484 LOperand* object() { return inputs_[0]; } | |
| 1485 LOperand* value() { return inputs_[1]; } | |
| 1486 Handle<Object> name() const { return hydrogen()->name(); } | |
| 1487 }; | |
| 1488 | |
| 1489 | |
| 1490 class LStoreNamedField: public LStoreNamed { | |
| 1491 public: | |
| 1492 LStoreNamedField(LOperand* object, LOperand* value, LOperand* temp) | |
| 1493 : LStoreNamed(object, value) { | |
| 1494 temps_[0] = temp; | 1475 temps_[0] = temp; |
| 1495 } | 1476 } |
| 1496 | 1477 |
| 1497 DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field") | 1478 DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field") |
| 1498 DECLARE_HYDROGEN_ACCESSOR(StoreNamedField) | 1479 DECLARE_HYDROGEN_ACCESSOR(StoreNamedField) |
| 1499 | 1480 |
| 1481 virtual void PrintDataTo(StringStream* stream); |
| 1482 |
| 1483 LOperand* object() { return inputs_[0]; } |
| 1484 LOperand* value() { return inputs_[1]; } |
| 1485 |
| 1486 Handle<Object> name() const { return hydrogen()->name(); } |
| 1500 bool is_in_object() { return hydrogen()->is_in_object(); } | 1487 bool is_in_object() { return hydrogen()->is_in_object(); } |
| 1501 int offset() { return hydrogen()->offset(); } | 1488 int offset() { return hydrogen()->offset(); } |
| 1502 bool needs_write_barrier() { return hydrogen()->NeedsWriteBarrier(); } | 1489 bool needs_write_barrier() { return hydrogen()->NeedsWriteBarrier(); } |
| 1503 Handle<Map> transition() const { return hydrogen()->transition(); } | 1490 Handle<Map> transition() const { return hydrogen()->transition(); } |
| 1504 }; | 1491 }; |
| 1505 | 1492 |
| 1506 | 1493 |
| 1507 class LStoreNamedGeneric: public LStoreNamed { | 1494 class LStoreNamedGeneric: public LTemplateInstruction<0, 2, 0> { |
| 1508 public: | 1495 public: |
| 1509 LStoreNamedGeneric(LOperand* object, LOperand* value) | 1496 LStoreNamedGeneric(LOperand* object, LOperand* value) { |
| 1510 : LStoreNamed(object, value) { } | 1497 inputs_[0] = object; |
| 1498 inputs_[1] = value; |
| 1499 } |
| 1511 | 1500 |
| 1512 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") | 1501 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") |
| 1513 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) | 1502 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) |
| 1503 |
| 1504 virtual void PrintDataTo(StringStream* stream); |
| 1505 |
| 1506 LOperand* object() { return inputs_[0]; } |
| 1507 LOperand* value() { return inputs_[1]; } |
| 1508 Handle<Object> name() const { return hydrogen()->name(); } |
| 1514 }; | 1509 }; |
| 1515 | 1510 |
| 1516 | 1511 |
| 1517 class LStoreKeyed: public LTemplateInstruction<0, 3, 0> { | 1512 class LStoreKeyedFastElement: public LTemplateInstruction<0, 3, 0> { |
| 1518 public: | 1513 public: |
| 1519 LStoreKeyed(LOperand* obj, LOperand* key, LOperand* val) { | 1514 LStoreKeyedFastElement(LOperand* obj, LOperand* key, LOperand* val) { |
| 1520 inputs_[0] = obj; | 1515 inputs_[0] = obj; |
| 1521 inputs_[1] = key; | 1516 inputs_[1] = key; |
| 1522 inputs_[2] = val; | 1517 inputs_[2] = val; |
| 1523 } | 1518 } |
| 1524 | 1519 |
| 1525 DECLARE_INSTRUCTION(StoreKeyed) | 1520 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastElement, |
| 1521 "store-keyed-fast-element") |
| 1522 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastElement) |
| 1526 | 1523 |
| 1527 virtual void PrintDataTo(StringStream* stream); | 1524 virtual void PrintDataTo(StringStream* stream); |
| 1528 | 1525 |
| 1529 LOperand* object() { return inputs_[0]; } | 1526 LOperand* object() { return inputs_[0]; } |
| 1530 LOperand* key() { return inputs_[1]; } | 1527 LOperand* key() { return inputs_[1]; } |
| 1531 LOperand* value() { return inputs_[2]; } | 1528 LOperand* value() { return inputs_[2]; } |
| 1532 }; | 1529 }; |
| 1533 | 1530 |
| 1534 | 1531 |
| 1535 class LStoreKeyedFastElement: public LStoreKeyed { | |
| 1536 public: | |
| 1537 LStoreKeyedFastElement(LOperand* obj, LOperand* key, LOperand* val) | |
| 1538 : LStoreKeyed(obj, key, val) {} | |
| 1539 | |
| 1540 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastElement, | |
| 1541 "store-keyed-fast-element") | |
| 1542 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastElement) | |
| 1543 }; | |
| 1544 | |
| 1545 | |
| 1546 class LStorePixelArrayElement: public LTemplateInstruction<0, 3, 0> { | 1532 class LStorePixelArrayElement: public LTemplateInstruction<0, 3, 0> { |
| 1547 public: | 1533 public: |
| 1548 LStorePixelArrayElement(LOperand* external_pointer, | 1534 LStorePixelArrayElement(LOperand* external_pointer, |
| 1549 LOperand* key, | 1535 LOperand* key, |
| 1550 LOperand* val) { | 1536 LOperand* val) { |
| 1551 inputs_[0] = external_pointer; | 1537 inputs_[0] = external_pointer; |
| 1552 inputs_[1] = key; | 1538 inputs_[1] = key; |
| 1553 inputs_[2] = val; | 1539 inputs_[2] = val; |
| 1554 } | 1540 } |
| 1555 | 1541 |
| 1556 DECLARE_CONCRETE_INSTRUCTION(StorePixelArrayElement, | 1542 DECLARE_CONCRETE_INSTRUCTION(StorePixelArrayElement, |
| 1557 "store-pixel-array-element") | 1543 "store-pixel-array-element") |
| 1558 DECLARE_HYDROGEN_ACCESSOR(StorePixelArrayElement) | 1544 DECLARE_HYDROGEN_ACCESSOR(StorePixelArrayElement) |
| 1559 | 1545 |
| 1560 LOperand* external_pointer() { return inputs_[0]; } | 1546 LOperand* external_pointer() { return inputs_[0]; } |
| 1561 LOperand* key() { return inputs_[1]; } | 1547 LOperand* key() { return inputs_[1]; } |
| 1562 LOperand* value() { return inputs_[2]; } | 1548 LOperand* value() { return inputs_[2]; } |
| 1563 }; | 1549 }; |
| 1564 | 1550 |
| 1565 | 1551 |
| 1566 class LStoreKeyedGeneric: public LStoreKeyed { | 1552 class LStoreKeyedGeneric: public LTemplateInstruction<0, 3, 0> { |
| 1567 public: | 1553 public: |
| 1568 LStoreKeyedGeneric(LOperand* object, LOperand* key, LOperand* value) | 1554 LStoreKeyedGeneric(LOperand* object, LOperand* key, LOperand* value) { |
| 1569 : LStoreKeyed(object, key, value) { } | 1555 inputs_[0] = object; |
| 1556 inputs_[1] = key; |
| 1557 inputs_[2] = value; |
| 1558 } |
| 1570 | 1559 |
| 1571 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic") | 1560 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic") |
| 1561 |
| 1562 virtual void PrintDataTo(StringStream* stream); |
| 1563 |
| 1564 LOperand* object() { return inputs_[0]; } |
| 1565 LOperand* key() { return inputs_[1]; } |
| 1566 LOperand* value() { return inputs_[2]; } |
| 1572 }; | 1567 }; |
| 1573 | 1568 |
| 1574 | 1569 |
| 1575 class LStringCharCodeAt: public LTemplateInstruction<1, 2, 0> { | 1570 class LStringCharCodeAt: public LTemplateInstruction<1, 2, 0> { |
| 1576 public: | 1571 public: |
| 1577 LStringCharCodeAt(LOperand* string, LOperand* index) { | 1572 LStringCharCodeAt(LOperand* string, LOperand* index) { |
| 1578 inputs_[0] = string; | 1573 inputs_[0] = string; |
| 1579 inputs_[1] = index; | 1574 inputs_[1] = index; |
| 1580 } | 1575 } |
| 1581 | 1576 |
| (...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2013 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); | 2008 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
| 2014 }; | 2009 }; |
| 2015 | 2010 |
| 2016 #undef DECLARE_HYDROGEN_ACCESSOR | 2011 #undef DECLARE_HYDROGEN_ACCESSOR |
| 2017 #undef DECLARE_INSTRUCTION | 2012 #undef DECLARE_INSTRUCTION |
| 2018 #undef DECLARE_CONCRETE_INSTRUCTION | 2013 #undef DECLARE_CONCRETE_INSTRUCTION |
| 2019 | 2014 |
| 2020 } } // namespace v8::int | 2015 } } // namespace v8::int |
| 2021 | 2016 |
| 2022 #endif // V8_X64_LITHIUM_X64_H_ | 2017 #endif // V8_X64_LITHIUM_X64_H_ |
| OLD | NEW |