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

Side by Side Diff: src/arm/lithium-arm.h

Issue 6538080: Add template parameter for hydrogen input operands. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: added other platforms Created 9 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | src/arm/lithium-arm.cc » ('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 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
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 1446 matching lines...) Expand 10 before | Expand all | Expand 10 after
1503 1501
1504 DECLARE_CONCRETE_INSTRUCTION(SmiUntag, "smi-untag") 1502 DECLARE_CONCRETE_INSTRUCTION(SmiUntag, "smi-untag")
1505 1503
1506 bool needs_check() const { return needs_check_; } 1504 bool needs_check() const { return needs_check_; }
1507 1505
1508 private: 1506 private:
1509 bool needs_check_; 1507 bool needs_check_;
1510 }; 1508 };
1511 1509
1512 1510
1513 class LStoreNamed: public LTemplateInstruction<0, 2, 0> { 1511 class LStoreNamedField: public LTemplateInstruction<0, 2, 0> {
1514 public: 1512 public:
1515 LStoreNamed(LOperand* obj, LOperand* val) { 1513 LStoreNamedField(LOperand* obj, LOperand* val) {
1516 inputs_[0] = obj; 1514 inputs_[0] = obj;
1517 inputs_[1] = val; 1515 inputs_[1] = val;
1518 } 1516 }
1519 1517
1520 DECLARE_INSTRUCTION(StoreNamed) 1518 DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field")
1521 DECLARE_HYDROGEN_ACCESSOR(StoreNamed) 1519 DECLARE_HYDROGEN_ACCESSOR(StoreNamedField)
1522 1520
1523 virtual void PrintDataTo(StringStream* stream); 1521 virtual void PrintDataTo(StringStream* stream);
1524 1522
1525 LOperand* object() { return inputs_[0]; } 1523 LOperand* object() { return inputs_[0]; }
1526 LOperand* value() { return inputs_[1]; } 1524 LOperand* value() { return inputs_[1]; }
1525
1527 Handle<Object> name() const { return hydrogen()->name(); } 1526 Handle<Object> name() const { return hydrogen()->name(); }
1528 };
1529
1530
1531 class LStoreNamedField: public LStoreNamed {
1532 public:
1533 LStoreNamedField(LOperand* obj, LOperand* val)
1534 : LStoreNamed(obj, val) { }
1535
1536 DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field")
1537 DECLARE_HYDROGEN_ACCESSOR(StoreNamedField)
1538
1539 bool is_in_object() { return hydrogen()->is_in_object(); } 1527 bool is_in_object() { return hydrogen()->is_in_object(); }
1540 int offset() { return hydrogen()->offset(); } 1528 int offset() { return hydrogen()->offset(); }
1541 bool needs_write_barrier() { return hydrogen()->NeedsWriteBarrier(); } 1529 bool needs_write_barrier() { return hydrogen()->NeedsWriteBarrier(); }
1542 Handle<Map> transition() const { return hydrogen()->transition(); } 1530 Handle<Map> transition() const { return hydrogen()->transition(); }
1543 }; 1531 };
1544 1532
1545 1533
1546 class LStoreNamedGeneric: public LStoreNamed { 1534 class LStoreNamedGeneric: public LTemplateInstruction<0, 2, 0> {
1547 public: 1535 public:
1548 LStoreNamedGeneric(LOperand* obj, LOperand* val) 1536 LStoreNamedGeneric(LOperand* obj, LOperand* val) {
1549 : LStoreNamed(obj, val) { } 1537 inputs_[0] = obj;
1538 inputs_[1] = val;
1539 }
1550 1540
1551 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") 1541 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic")
1552 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) 1542 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric)
1543
1544 virtual void PrintDataTo(StringStream* stream);
1545
1546 LOperand* object() { return inputs_[0]; }
1547 LOperand* value() { return inputs_[1]; }
1548 Handle<Object> name() const { return hydrogen()->name(); }
1553 }; 1549 };
1554 1550
1555 1551
1556 class LStoreKeyed: public LTemplateInstruction<0, 3, 0> { 1552 class LStoreKeyedFastElement: public LTemplateInstruction<0, 3, 0> {
1557 public: 1553 public:
1558 LStoreKeyed(LOperand* obj, LOperand* key, LOperand* val) { 1554 LStoreKeyedFastElement(LOperand* obj, LOperand* key, LOperand* val) {
1559 inputs_[0] = obj; 1555 inputs_[0] = obj;
1560 inputs_[1] = key; 1556 inputs_[1] = key;
1561 inputs_[2] = val; 1557 inputs_[2] = val;
1562 } 1558 }
1563 1559
1564 DECLARE_INSTRUCTION(StoreKeyed) 1560 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastElement,
1561 "store-keyed-fast-element")
1562 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastElement)
1565 1563
1566 virtual void PrintDataTo(StringStream* stream); 1564 virtual void PrintDataTo(StringStream* stream);
1567 1565
1568 LOperand* object() { return inputs_[0]; } 1566 LOperand* object() { return inputs_[0]; }
1569 LOperand* key() { return inputs_[1]; } 1567 LOperand* key() { return inputs_[1]; }
1570 LOperand* value() { return inputs_[2]; } 1568 LOperand* value() { return inputs_[2]; }
1571 }; 1569 };
1572 1570
1573 1571
1574 class LStoreKeyedFastElement: public LStoreKeyed { 1572 class LStoreKeyedGeneric: public LTemplateInstruction<0, 3, 0> {
1575 public: 1573 public:
1576 LStoreKeyedFastElement(LOperand* obj, LOperand* key, LOperand* val) 1574 LStoreKeyedGeneric(LOperand* obj, LOperand* key, LOperand* val) {
1577 : LStoreKeyed(obj, key, val) {} 1575 inputs_[0] = obj;
1576 inputs_[1] = key;
1577 inputs_[2] = val;
1578 }
1578 1579
1579 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastElement, 1580 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic")
1580 "store-keyed-fast-element") 1581
1581 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastElement) 1582 virtual void PrintDataTo(StringStream* stream);
1583
1584 LOperand* object() { return inputs_[0]; }
1585 LOperand* key() { return inputs_[1]; }
1586 LOperand* value() { return inputs_[2]; }
1582 }; 1587 };
1583 1588
1584 1589
1585 class LStoreKeyedGeneric: public LStoreKeyed {
1586 public:
1587 LStoreKeyedGeneric(LOperand* obj, LOperand* key, LOperand* val)
1588 : LStoreKeyed(obj, key, val) { }
1589
1590 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic")
1591 };
1592
1593
1594 class LStringCharCodeAt: public LTemplateInstruction<1, 2, 0> { 1590 class LStringCharCodeAt: public LTemplateInstruction<1, 2, 0> {
1595 public: 1591 public:
1596 LStringCharCodeAt(LOperand* string, LOperand* index) { 1592 LStringCharCodeAt(LOperand* string, LOperand* index) {
1597 inputs_[0] = string; 1593 inputs_[0] = string;
1598 inputs_[1] = index; 1594 inputs_[1] = index;
1599 } 1595 }
1600 1596
1601 DECLARE_CONCRETE_INSTRUCTION(StringCharCodeAt, "string-char-code-at") 1597 DECLARE_CONCRETE_INSTRUCTION(StringCharCodeAt, "string-char-code-at")
1602 DECLARE_HYDROGEN_ACCESSOR(StringCharCodeAt) 1598 DECLARE_HYDROGEN_ACCESSOR(StringCharCodeAt)
1603 1599
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after
2028 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 2024 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
2029 }; 2025 };
2030 2026
2031 #undef DECLARE_HYDROGEN_ACCESSOR 2027 #undef DECLARE_HYDROGEN_ACCESSOR
2032 #undef DECLARE_INSTRUCTION 2028 #undef DECLARE_INSTRUCTION
2033 #undef DECLARE_CONCRETE_INSTRUCTION 2029 #undef DECLARE_CONCRETE_INSTRUCTION
2034 2030
2035 } } // namespace v8::internal 2031 } } // namespace v8::internal
2036 2032
2037 #endif // V8_ARM_LITHIUM_ARM_H_ 2033 #endif // V8_ARM_LITHIUM_ARM_H_
OLDNEW
« no previous file with comments | « no previous file | src/arm/lithium-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698