| 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 30 matching lines...) Expand all Loading... |
| 87 V(ConstantI) \ | 85 V(ConstantI) \ |
| 88 V(ConstantT) \ | 86 V(ConstantT) \ |
| 89 V(Context) \ | 87 V(Context) \ |
| 90 V(DeleteProperty) \ | 88 V(DeleteProperty) \ |
| 91 V(Deoptimize) \ | 89 V(Deoptimize) \ |
| 92 V(DivI) \ | 90 V(DivI) \ |
| 93 V(DoubleToI) \ | 91 V(DoubleToI) \ |
| 94 V(FixedArrayLength) \ | 92 V(FixedArrayLength) \ |
| 95 V(FunctionLiteral) \ | 93 V(FunctionLiteral) \ |
| 96 V(Gap) \ | 94 V(Gap) \ |
| 95 V(GetCachedArrayIndex) \ |
| 97 V(GlobalObject) \ | 96 V(GlobalObject) \ |
| 98 V(GlobalReceiver) \ | 97 V(GlobalReceiver) \ |
| 99 V(Goto) \ | 98 V(Goto) \ |
| 100 V(HasCachedArrayIndex) \ | 99 V(HasCachedArrayIndex) \ |
| 101 V(HasCachedArrayIndexAndBranch) \ | 100 V(HasCachedArrayIndexAndBranch) \ |
| 102 V(HasInstanceType) \ | 101 V(HasInstanceType) \ |
| 103 V(HasInstanceTypeAndBranch) \ | 102 V(HasInstanceTypeAndBranch) \ |
| 104 V(InstanceOf) \ | 103 V(InstanceOf) \ |
| 105 V(InstanceOfAndBranch) \ | 104 V(InstanceOfAndBranch) \ |
| 106 V(InstanceOfKnownGlobal) \ | 105 V(InstanceOfKnownGlobal) \ |
| 107 V(Integer32ToDouble) \ | 106 V(Integer32ToDouble) \ |
| 108 V(IsNull) \ | 107 V(IsNull) \ |
| 109 V(IsNullAndBranch) \ | 108 V(IsNullAndBranch) \ |
| 110 V(IsObject) \ | 109 V(IsObject) \ |
| 111 V(IsObjectAndBranch) \ | 110 V(IsObjectAndBranch) \ |
| 112 V(IsSmi) \ | 111 V(IsSmi) \ |
| 113 V(IsSmiAndBranch) \ | 112 V(IsSmiAndBranch) \ |
| 114 V(JSArrayLength) \ | 113 V(JSArrayLength) \ |
| 115 V(Label) \ | 114 V(Label) \ |
| 116 V(LazyBailout) \ | 115 V(LazyBailout) \ |
| 117 V(LoadContextSlot) \ | 116 V(LoadContextSlot) \ |
| 118 V(LoadElements) \ | 117 V(LoadElements) \ |
| 119 V(LoadFunctionPrototype) \ | 118 V(LoadFunctionPrototype) \ |
| 120 V(LoadGlobal) \ | 119 V(LoadGlobal) \ |
| 121 V(LoadKeyedFastElement) \ | 120 V(LoadKeyedFastElement) \ |
| 122 V(LoadKeyedGeneric) \ | 121 V(LoadKeyedGeneric) \ |
| 123 V(LoadNamedField) \ | 122 V(LoadNamedField) \ |
| 124 V(LoadNamedGeneric) \ | 123 V(LoadNamedGeneric) \ |
| 124 V(LoadPixelArrayElement) \ |
| 125 V(LoadPixelArrayExternalPointer) \ |
| 125 V(ModI) \ | 126 V(ModI) \ |
| 126 V(MulI) \ | 127 V(MulI) \ |
| 127 V(NumberTagD) \ | 128 V(NumberTagD) \ |
| 128 V(NumberTagI) \ | 129 V(NumberTagI) \ |
| 129 V(NumberUntagD) \ | 130 V(NumberUntagD) \ |
| 130 V(ObjectLiteral) \ | 131 V(ObjectLiteral) \ |
| 131 V(OsrEntry) \ | 132 V(OsrEntry) \ |
| 132 V(OuterContext) \ | 133 V(OuterContext) \ |
| 133 V(Parameter) \ | 134 V(Parameter) \ |
| 135 V(PixelArrayLength) \ |
| 136 V(Power) \ |
| 134 V(PushArgument) \ | 137 V(PushArgument) \ |
| 135 V(RegExpLiteral) \ | 138 V(RegExpLiteral) \ |
| 136 V(Return) \ | 139 V(Return) \ |
| 137 V(ShiftI) \ | 140 V(ShiftI) \ |
| 138 V(SmiTag) \ | 141 V(SmiTag) \ |
| 139 V(SmiUntag) \ | 142 V(SmiUntag) \ |
| 140 V(StackCheck) \ | 143 V(StackCheck) \ |
| 141 V(StoreContextSlot) \ | 144 V(StoreContextSlot) \ |
| 142 V(StoreGlobal) \ | 145 V(StoreGlobal) \ |
| 143 V(StoreKeyedFastElement) \ | 146 V(StoreKeyedFastElement) \ |
| (...skipping 585 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 729 public: | 732 public: |
| 730 explicit LHasCachedArrayIndex(LOperand* value) { | 733 explicit LHasCachedArrayIndex(LOperand* value) { |
| 731 inputs_[0] = value; | 734 inputs_[0] = value; |
| 732 } | 735 } |
| 733 | 736 |
| 734 DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndex, "has-cached-array-index") | 737 DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndex, "has-cached-array-index") |
| 735 DECLARE_HYDROGEN_ACCESSOR(HasCachedArrayIndex) | 738 DECLARE_HYDROGEN_ACCESSOR(HasCachedArrayIndex) |
| 736 }; | 739 }; |
| 737 | 740 |
| 738 | 741 |
| 742 class LGetCachedArrayIndex: public LTemplateInstruction<1, 1, 0> { |
| 743 public: |
| 744 explicit LGetCachedArrayIndex(LOperand* value) { |
| 745 inputs_[0] = value; |
| 746 } |
| 747 |
| 748 DECLARE_CONCRETE_INSTRUCTION(GetCachedArrayIndex, "get-cached-array-index") |
| 749 DECLARE_HYDROGEN_ACCESSOR(GetCachedArrayIndex) |
| 750 }; |
| 751 |
| 752 |
| 739 class LHasCachedArrayIndexAndBranch: public LControlInstruction<1, 0> { | 753 class LHasCachedArrayIndexAndBranch: public LControlInstruction<1, 0> { |
| 740 public: | 754 public: |
| 741 explicit LHasCachedArrayIndexAndBranch(LOperand* value) { | 755 explicit LHasCachedArrayIndexAndBranch(LOperand* value) { |
| 742 inputs_[0] = value; | 756 inputs_[0] = value; |
| 743 } | 757 } |
| 744 | 758 |
| 745 DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndexAndBranch, | 759 DECLARE_CONCRETE_INSTRUCTION(HasCachedArrayIndexAndBranch, |
| 746 "has-cached-array-index-and-branch") | 760 "has-cached-array-index-and-branch") |
| 747 virtual void PrintDataTo(StringStream* stream); | 761 virtual void PrintDataTo(StringStream* stream); |
| 748 }; | 762 }; |
| (...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 970 public: | 984 public: |
| 971 explicit LJSArrayLength(LOperand* value) { | 985 explicit LJSArrayLength(LOperand* value) { |
| 972 inputs_[0] = value; | 986 inputs_[0] = value; |
| 973 } | 987 } |
| 974 | 988 |
| 975 DECLARE_CONCRETE_INSTRUCTION(JSArrayLength, "js-array-length") | 989 DECLARE_CONCRETE_INSTRUCTION(JSArrayLength, "js-array-length") |
| 976 DECLARE_HYDROGEN_ACCESSOR(JSArrayLength) | 990 DECLARE_HYDROGEN_ACCESSOR(JSArrayLength) |
| 977 }; | 991 }; |
| 978 | 992 |
| 979 | 993 |
| 994 class LPixelArrayLength: public LTemplateInstruction<1, 1, 0> { |
| 995 public: |
| 996 explicit LPixelArrayLength(LOperand* value) { |
| 997 inputs_[0] = value; |
| 998 } |
| 999 |
| 1000 DECLARE_CONCRETE_INSTRUCTION(PixelArrayLength, "pixel-array-length") |
| 1001 DECLARE_HYDROGEN_ACCESSOR(PixelArrayLength) |
| 1002 }; |
| 1003 |
| 1004 |
| 980 class LFixedArrayLength: public LTemplateInstruction<1, 1, 0> { | 1005 class LFixedArrayLength: public LTemplateInstruction<1, 1, 0> { |
| 981 public: | 1006 public: |
| 982 explicit LFixedArrayLength(LOperand* value) { | 1007 explicit LFixedArrayLength(LOperand* value) { |
| 983 inputs_[0] = value; | 1008 inputs_[0] = value; |
| 984 } | 1009 } |
| 985 | 1010 |
| 986 DECLARE_CONCRETE_INSTRUCTION(FixedArrayLength, "fixed-array-length") | 1011 DECLARE_CONCRETE_INSTRUCTION(FixedArrayLength, "fixed-array-length") |
| 987 DECLARE_HYDROGEN_ACCESSOR(FixedArrayLength) | 1012 DECLARE_HYDROGEN_ACCESSOR(FixedArrayLength) |
| 988 }; | 1013 }; |
| 989 | 1014 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1025 LAddI(LOperand* left, LOperand* right) { | 1050 LAddI(LOperand* left, LOperand* right) { |
| 1026 inputs_[0] = left; | 1051 inputs_[0] = left; |
| 1027 inputs_[1] = right; | 1052 inputs_[1] = right; |
| 1028 } | 1053 } |
| 1029 | 1054 |
| 1030 DECLARE_CONCRETE_INSTRUCTION(AddI, "add-i") | 1055 DECLARE_CONCRETE_INSTRUCTION(AddI, "add-i") |
| 1031 DECLARE_HYDROGEN_ACCESSOR(Add) | 1056 DECLARE_HYDROGEN_ACCESSOR(Add) |
| 1032 }; | 1057 }; |
| 1033 | 1058 |
| 1034 | 1059 |
| 1060 class LPower: public LTemplateInstruction<1, 2, 0> { |
| 1061 public: |
| 1062 LPower(LOperand* left, LOperand* right) { |
| 1063 inputs_[0] = left; |
| 1064 inputs_[1] = right; |
| 1065 } |
| 1066 |
| 1067 DECLARE_CONCRETE_INSTRUCTION(Power, "power") |
| 1068 DECLARE_HYDROGEN_ACCESSOR(Power) |
| 1069 }; |
| 1070 |
| 1071 |
| 1035 class LArithmeticD: public LTemplateInstruction<1, 2, 0> { | 1072 class LArithmeticD: public LTemplateInstruction<1, 2, 0> { |
| 1036 public: | 1073 public: |
| 1037 LArithmeticD(Token::Value op, LOperand* left, LOperand* right) | 1074 LArithmeticD(Token::Value op, LOperand* left, LOperand* right) |
| 1038 : op_(op) { | 1075 : op_(op) { |
| 1039 inputs_[0] = left; | 1076 inputs_[0] = left; |
| 1040 inputs_[1] = right; | 1077 inputs_[1] = right; |
| 1041 } | 1078 } |
| 1042 | 1079 |
| 1043 Token::Value op() const { return op_; } | 1080 Token::Value op() const { return op_; } |
| 1044 | 1081 |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1119 class LLoadElements: public LTemplateInstruction<1, 1, 0> { | 1156 class LLoadElements: public LTemplateInstruction<1, 1, 0> { |
| 1120 public: | 1157 public: |
| 1121 explicit LLoadElements(LOperand* object) { | 1158 explicit LLoadElements(LOperand* object) { |
| 1122 inputs_[0] = object; | 1159 inputs_[0] = object; |
| 1123 } | 1160 } |
| 1124 | 1161 |
| 1125 DECLARE_CONCRETE_INSTRUCTION(LoadElements, "load-elements") | 1162 DECLARE_CONCRETE_INSTRUCTION(LoadElements, "load-elements") |
| 1126 }; | 1163 }; |
| 1127 | 1164 |
| 1128 | 1165 |
| 1166 class LLoadPixelArrayExternalPointer: public LTemplateInstruction<1, 1, 0> { |
| 1167 public: |
| 1168 explicit LLoadPixelArrayExternalPointer(LOperand* object) { |
| 1169 inputs_[0] = object; |
| 1170 } |
| 1171 |
| 1172 DECLARE_CONCRETE_INSTRUCTION(LoadPixelArrayExternalPointer, |
| 1173 "load-pixel-array-external-pointer") |
| 1174 }; |
| 1175 |
| 1176 |
| 1129 class LLoadKeyedFastElement: public LTemplateInstruction<1, 2, 0> { | 1177 class LLoadKeyedFastElement: public LTemplateInstruction<1, 2, 0> { |
| 1130 public: | 1178 public: |
| 1131 LLoadKeyedFastElement(LOperand* elements, LOperand* key) { | 1179 LLoadKeyedFastElement(LOperand* elements, LOperand* key) { |
| 1132 inputs_[0] = elements; | 1180 inputs_[0] = elements; |
| 1133 inputs_[1] = key; | 1181 inputs_[1] = key; |
| 1134 } | 1182 } |
| 1135 | 1183 |
| 1136 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastElement, "load-keyed-fast-element") | 1184 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastElement, "load-keyed-fast-element") |
| 1137 DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastElement) | 1185 DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastElement) |
| 1138 | 1186 |
| 1139 LOperand* elements() { return inputs_[0]; } | 1187 LOperand* elements() { return inputs_[0]; } |
| 1140 LOperand* key() { return inputs_[1]; } | 1188 LOperand* key() { return inputs_[1]; } |
| 1141 }; | 1189 }; |
| 1142 | 1190 |
| 1143 | 1191 |
| 1192 class LLoadPixelArrayElement: public LTemplateInstruction<1, 2, 0> { |
| 1193 public: |
| 1194 LLoadPixelArrayElement(LOperand* external_pointer, LOperand* key) { |
| 1195 inputs_[0] = external_pointer; |
| 1196 inputs_[1] = key; |
| 1197 } |
| 1198 |
| 1199 DECLARE_CONCRETE_INSTRUCTION(LoadPixelArrayElement, |
| 1200 "load-pixel-array-element") |
| 1201 DECLARE_HYDROGEN_ACCESSOR(LoadPixelArrayElement) |
| 1202 |
| 1203 LOperand* external_pointer() { return inputs_[0]; } |
| 1204 LOperand* key() { return inputs_[1]; } |
| 1205 }; |
| 1206 |
| 1207 |
| 1144 class LLoadKeyedGeneric: public LTemplateInstruction<1, 2, 0> { | 1208 class LLoadKeyedGeneric: public LTemplateInstruction<1, 2, 0> { |
| 1145 public: | 1209 public: |
| 1146 LLoadKeyedGeneric(LOperand* obj, LOperand* key) { | 1210 LLoadKeyedGeneric(LOperand* obj, LOperand* key) { |
| 1147 inputs_[0] = obj; | 1211 inputs_[0] = obj; |
| 1148 inputs_[1] = key; | 1212 inputs_[1] = key; |
| 1149 } | 1213 } |
| 1150 | 1214 |
| 1151 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic") | 1215 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic") |
| 1152 | 1216 |
| 1153 LOperand* object() { return inputs_[0]; } | 1217 LOperand* object() { return inputs_[0]; } |
| (...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1450 | 1514 |
| 1451 DECLARE_CONCRETE_INSTRUCTION(SmiUntag, "smi-untag") | 1515 DECLARE_CONCRETE_INSTRUCTION(SmiUntag, "smi-untag") |
| 1452 | 1516 |
| 1453 bool needs_check() const { return needs_check_; } | 1517 bool needs_check() const { return needs_check_; } |
| 1454 | 1518 |
| 1455 private: | 1519 private: |
| 1456 bool needs_check_; | 1520 bool needs_check_; |
| 1457 }; | 1521 }; |
| 1458 | 1522 |
| 1459 | 1523 |
| 1460 class LStoreNamed: public LTemplateInstruction<0, 2, 0> { | 1524 class LStoreNamedField: public LTemplateInstruction<0, 2, 0> { |
| 1461 public: | 1525 public: |
| 1462 LStoreNamed(LOperand* obj, LOperand* val) { | 1526 LStoreNamedField(LOperand* obj, LOperand* val) { |
| 1463 inputs_[0] = obj; | 1527 inputs_[0] = obj; |
| 1464 inputs_[1] = val; | 1528 inputs_[1] = val; |
| 1465 } | 1529 } |
| 1466 | 1530 |
| 1467 DECLARE_INSTRUCTION(StoreNamed) | 1531 DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field") |
| 1468 DECLARE_HYDROGEN_ACCESSOR(StoreNamed) | 1532 DECLARE_HYDROGEN_ACCESSOR(StoreNamedField) |
| 1469 | 1533 |
| 1470 virtual void PrintDataTo(StringStream* stream); | 1534 virtual void PrintDataTo(StringStream* stream); |
| 1471 | 1535 |
| 1472 LOperand* object() { return inputs_[0]; } | 1536 LOperand* object() { return inputs_[0]; } |
| 1473 LOperand* value() { return inputs_[1]; } | 1537 LOperand* value() { return inputs_[1]; } |
| 1538 |
| 1474 Handle<Object> name() const { return hydrogen()->name(); } | 1539 Handle<Object> name() const { return hydrogen()->name(); } |
| 1475 }; | |
| 1476 | |
| 1477 | |
| 1478 class LStoreNamedField: public LStoreNamed { | |
| 1479 public: | |
| 1480 LStoreNamedField(LOperand* obj, LOperand* val) | |
| 1481 : LStoreNamed(obj, val) { } | |
| 1482 | |
| 1483 DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field") | |
| 1484 DECLARE_HYDROGEN_ACCESSOR(StoreNamedField) | |
| 1485 | |
| 1486 bool is_in_object() { return hydrogen()->is_in_object(); } | 1540 bool is_in_object() { return hydrogen()->is_in_object(); } |
| 1487 int offset() { return hydrogen()->offset(); } | 1541 int offset() { return hydrogen()->offset(); } |
| 1488 bool needs_write_barrier() { return hydrogen()->NeedsWriteBarrier(); } | 1542 bool needs_write_barrier() { return hydrogen()->NeedsWriteBarrier(); } |
| 1489 Handle<Map> transition() const { return hydrogen()->transition(); } | 1543 Handle<Map> transition() const { return hydrogen()->transition(); } |
| 1490 }; | 1544 }; |
| 1491 | 1545 |
| 1492 | 1546 |
| 1493 class LStoreNamedGeneric: public LStoreNamed { | 1547 class LStoreNamedGeneric: public LTemplateInstruction<0, 2, 0> { |
| 1494 public: | 1548 public: |
| 1495 LStoreNamedGeneric(LOperand* obj, LOperand* val) | 1549 LStoreNamedGeneric(LOperand* obj, LOperand* val) { |
| 1496 : LStoreNamed(obj, val) { } | 1550 inputs_[0] = obj; |
| 1551 inputs_[1] = val; |
| 1552 } |
| 1497 | 1553 |
| 1498 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") | 1554 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") |
| 1499 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) | 1555 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) |
| 1556 |
| 1557 virtual void PrintDataTo(StringStream* stream); |
| 1558 |
| 1559 LOperand* object() { return inputs_[0]; } |
| 1560 LOperand* value() { return inputs_[1]; } |
| 1561 Handle<Object> name() const { return hydrogen()->name(); } |
| 1500 }; | 1562 }; |
| 1501 | 1563 |
| 1502 | 1564 |
| 1503 class LStoreKeyed: public LTemplateInstruction<0, 3, 0> { | 1565 class LStoreKeyedFastElement: public LTemplateInstruction<0, 3, 0> { |
| 1504 public: | 1566 public: |
| 1505 LStoreKeyed(LOperand* obj, LOperand* key, LOperand* val) { | 1567 LStoreKeyedFastElement(LOperand* obj, LOperand* key, LOperand* val) { |
| 1506 inputs_[0] = obj; | 1568 inputs_[0] = obj; |
| 1507 inputs_[1] = key; | 1569 inputs_[1] = key; |
| 1508 inputs_[2] = val; | 1570 inputs_[2] = val; |
| 1509 } | 1571 } |
| 1510 | 1572 |
| 1511 DECLARE_INSTRUCTION(StoreKeyed) | 1573 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastElement, |
| 1574 "store-keyed-fast-element") |
| 1575 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastElement) |
| 1512 | 1576 |
| 1513 virtual void PrintDataTo(StringStream* stream); | 1577 virtual void PrintDataTo(StringStream* stream); |
| 1514 | 1578 |
| 1515 LOperand* object() { return inputs_[0]; } | 1579 LOperand* object() { return inputs_[0]; } |
| 1516 LOperand* key() { return inputs_[1]; } | 1580 LOperand* key() { return inputs_[1]; } |
| 1517 LOperand* value() { return inputs_[2]; } | 1581 LOperand* value() { return inputs_[2]; } |
| 1518 }; | 1582 }; |
| 1519 | 1583 |
| 1520 | 1584 |
| 1521 class LStoreKeyedFastElement: public LStoreKeyed { | 1585 class LStoreKeyedGeneric: public LTemplateInstruction<0, 3, 0> { |
| 1522 public: | 1586 public: |
| 1523 LStoreKeyedFastElement(LOperand* obj, LOperand* key, LOperand* val) | 1587 LStoreKeyedGeneric(LOperand* obj, LOperand* key, LOperand* val) { |
| 1524 : LStoreKeyed(obj, key, val) {} | 1588 inputs_[0] = obj; |
| 1589 inputs_[1] = key; |
| 1590 inputs_[2] = val; |
| 1591 } |
| 1525 | 1592 |
| 1526 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastElement, | 1593 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic") |
| 1527 "store-keyed-fast-element") | 1594 |
| 1528 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastElement) | 1595 virtual void PrintDataTo(StringStream* stream); |
| 1596 |
| 1597 LOperand* object() { return inputs_[0]; } |
| 1598 LOperand* key() { return inputs_[1]; } |
| 1599 LOperand* value() { return inputs_[2]; } |
| 1529 }; | 1600 }; |
| 1530 | 1601 |
| 1531 | 1602 |
| 1532 class LStoreKeyedGeneric: public LStoreKeyed { | |
| 1533 public: | |
| 1534 LStoreKeyedGeneric(LOperand* obj, LOperand* key, LOperand* val) | |
| 1535 : LStoreKeyed(obj, key, val) { } | |
| 1536 | |
| 1537 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic") | |
| 1538 }; | |
| 1539 | |
| 1540 | |
| 1541 class LStringCharCodeAt: public LTemplateInstruction<1, 2, 0> { | 1603 class LStringCharCodeAt: public LTemplateInstruction<1, 2, 0> { |
| 1542 public: | 1604 public: |
| 1543 LStringCharCodeAt(LOperand* string, LOperand* index) { | 1605 LStringCharCodeAt(LOperand* string, LOperand* index) { |
| 1544 inputs_[0] = string; | 1606 inputs_[0] = string; |
| 1545 inputs_[1] = index; | 1607 inputs_[1] = index; |
| 1546 } | 1608 } |
| 1547 | 1609 |
| 1548 DECLARE_CONCRETE_INSTRUCTION(StringCharCodeAt, "string-char-code-at") | 1610 DECLARE_CONCRETE_INSTRUCTION(StringCharCodeAt, "string-char-code-at") |
| 1549 DECLARE_HYDROGEN_ACCESSOR(StringCharCodeAt) | 1611 DECLARE_HYDROGEN_ACCESSOR(StringCharCodeAt) |
| 1550 | 1612 |
| (...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1975 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); | 2037 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
| 1976 }; | 2038 }; |
| 1977 | 2039 |
| 1978 #undef DECLARE_HYDROGEN_ACCESSOR | 2040 #undef DECLARE_HYDROGEN_ACCESSOR |
| 1979 #undef DECLARE_INSTRUCTION | 2041 #undef DECLARE_INSTRUCTION |
| 1980 #undef DECLARE_CONCRETE_INSTRUCTION | 2042 #undef DECLARE_CONCRETE_INSTRUCTION |
| 1981 | 2043 |
| 1982 } } // namespace v8::internal | 2044 } } // namespace v8::internal |
| 1983 | 2045 |
| 1984 #endif // V8_ARM_LITHIUM_ARM_H_ | 2046 #endif // V8_ARM_LITHIUM_ARM_H_ |
| OLD | NEW |