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

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

Issue 146213004: A64: Synchronize with r16849. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/a64
Patch Set: Created 6 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 | « src/ia32/lithium-codegen-ia32.cc ('k') | src/ia32/lithium-ia32.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 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 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 V(InstanceOfKnownGlobal) \ 109 V(InstanceOfKnownGlobal) \
110 V(InstanceSize) \ 110 V(InstanceSize) \
111 V(InstructionGap) \ 111 V(InstructionGap) \
112 V(Integer32ToDouble) \ 112 V(Integer32ToDouble) \
113 V(Integer32ToSmi) \ 113 V(Integer32ToSmi) \
114 V(InvokeFunction) \ 114 V(InvokeFunction) \
115 V(IsConstructCallAndBranch) \ 115 V(IsConstructCallAndBranch) \
116 V(IsObjectAndBranch) \ 116 V(IsObjectAndBranch) \
117 V(IsStringAndBranch) \ 117 V(IsStringAndBranch) \
118 V(IsSmiAndBranch) \ 118 V(IsSmiAndBranch) \
119 V(IsNumberAndBranch) \
120 V(IsUndetectableAndBranch) \ 119 V(IsUndetectableAndBranch) \
121 V(Label) \ 120 V(Label) \
122 V(LazyBailout) \ 121 V(LazyBailout) \
123 V(LoadContextSlot) \ 122 V(LoadContextSlot) \
124 V(LoadExternalArrayPointer) \ 123 V(LoadExternalArrayPointer) \
125 V(LoadFieldByIndex) \ 124 V(LoadFieldByIndex) \
126 V(LoadFunctionPrototype) \ 125 V(LoadFunctionPrototype) \
127 V(LoadGlobalCell) \ 126 V(LoadGlobalCell) \
128 V(LoadGlobalGeneric) \ 127 V(LoadGlobalGeneric) \
129 V(LoadKeyed) \ 128 V(LoadKeyed) \
130 V(LoadKeyedGeneric) \ 129 V(LoadKeyedGeneric) \
131 V(LoadNamedField) \ 130 V(LoadNamedField) \
132 V(LoadNamedGeneric) \ 131 V(LoadNamedGeneric) \
132 V(LoadRoot) \
133 V(MapEnumLength) \ 133 V(MapEnumLength) \
134 V(MathAbs) \ 134 V(MathAbs) \
135 V(MathCos) \ 135 V(MathCos) \
136 V(MathExp) \ 136 V(MathExp) \
137 V(MathFloor) \ 137 V(MathFloor) \
138 V(MathFloorOfDiv) \ 138 V(MathFloorOfDiv) \
139 V(MathLog) \ 139 V(MathLog) \
140 V(MathMinMax) \ 140 V(MathMinMax) \
141 V(MathPowHalf) \ 141 V(MathPowHalf) \
142 V(MathRound) \ 142 V(MathRound) \
(...skipping 772 matching lines...) Expand 10 before | Expand all | Expand 10 after
915 915
916 LOperand* value() { return inputs_[0]; } 916 LOperand* value() { return inputs_[0]; }
917 LOperand* temp() { return temps_[0]; } 917 LOperand* temp() { return temps_[0]; }
918 918
919 DECLARE_CONCRETE_INSTRUCTION(IsObjectAndBranch, "is-object-and-branch") 919 DECLARE_CONCRETE_INSTRUCTION(IsObjectAndBranch, "is-object-and-branch")
920 920
921 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 921 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
922 }; 922 };
923 923
924 924
925 class LIsNumberAndBranch V8_FINAL : public LControlInstruction<1, 0> {
926 public:
927 explicit LIsNumberAndBranch(LOperand* value) {
928 inputs_[0] = value;
929 }
930
931 LOperand* value() { return inputs_[0]; }
932
933 DECLARE_CONCRETE_INSTRUCTION(IsNumberAndBranch, "is-number-and-branch")
934 DECLARE_HYDROGEN_ACCESSOR(IsNumberAndBranch)
935 };
936
937
938 class LIsStringAndBranch V8_FINAL : public LControlInstruction<1, 1> { 925 class LIsStringAndBranch V8_FINAL : public LControlInstruction<1, 1> {
939 public: 926 public:
940 LIsStringAndBranch(LOperand* value, LOperand* temp) { 927 LIsStringAndBranch(LOperand* value, LOperand* temp) {
941 inputs_[0] = value; 928 inputs_[0] = value;
942 temps_[0] = temp; 929 temps_[0] = temp;
943 } 930 }
944 931
945 LOperand* value() { return inputs_[0]; } 932 LOperand* value() { return inputs_[0]; }
946 LOperand* temp() { return temps_[0]; } 933 LOperand* temp() { return temps_[0]; }
947 934
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
1302 public: 1289 public:
1303 explicit LCmpMapAndBranch(LOperand* value) { 1290 explicit LCmpMapAndBranch(LOperand* value) {
1304 inputs_[0] = value; 1291 inputs_[0] = value;
1305 } 1292 }
1306 1293
1307 LOperand* value() { return inputs_[0]; } 1294 LOperand* value() { return inputs_[0]; }
1308 1295
1309 DECLARE_CONCRETE_INSTRUCTION(CmpMapAndBranch, "cmp-map-and-branch") 1296 DECLARE_CONCRETE_INSTRUCTION(CmpMapAndBranch, "cmp-map-and-branch")
1310 DECLARE_HYDROGEN_ACCESSOR(CompareMap) 1297 DECLARE_HYDROGEN_ACCESSOR(CompareMap)
1311 1298
1312 Handle<Map> map() const { return hydrogen()->map(); } 1299 Handle<Map> map() const { return hydrogen()->map().handle(); }
1313 }; 1300 };
1314 1301
1315 1302
1316 class LMapEnumLength V8_FINAL : public LTemplateInstruction<1, 1, 0> { 1303 class LMapEnumLength V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1317 public: 1304 public:
1318 explicit LMapEnumLength(LOperand* value) { 1305 explicit LMapEnumLength(LOperand* value) {
1319 inputs_[0] = value; 1306 inputs_[0] = value;
1320 } 1307 }
1321 1308
1322 LOperand* value() { return inputs_[0]; } 1309 LOperand* value() { return inputs_[0]; }
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
1598 } 1585 }
1599 1586
1600 LOperand* function() { return inputs_[0]; } 1587 LOperand* function() { return inputs_[0]; }
1601 LOperand* temp() { return temps_[0]; } 1588 LOperand* temp() { return temps_[0]; }
1602 1589
1603 DECLARE_CONCRETE_INSTRUCTION(LoadFunctionPrototype, "load-function-prototype") 1590 DECLARE_CONCRETE_INSTRUCTION(LoadFunctionPrototype, "load-function-prototype")
1604 DECLARE_HYDROGEN_ACCESSOR(LoadFunctionPrototype) 1591 DECLARE_HYDROGEN_ACCESSOR(LoadFunctionPrototype)
1605 }; 1592 };
1606 1593
1607 1594
1595 class LLoadRoot V8_FINAL : public LTemplateInstruction<1, 0, 0> {
1596 public:
1597 DECLARE_CONCRETE_INSTRUCTION(LoadRoot, "load-root")
1598 DECLARE_HYDROGEN_ACCESSOR(LoadRoot)
1599
1600 Heap::RootListIndex index() const { return hydrogen()->index(); }
1601 };
1602
1603
1608 class LLoadExternalArrayPointer V8_FINAL 1604 class LLoadExternalArrayPointer V8_FINAL
1609 : public LTemplateInstruction<1, 1, 0> { 1605 : public LTemplateInstruction<1, 1, 0> {
1610 public: 1606 public:
1611 explicit LLoadExternalArrayPointer(LOperand* object) { 1607 explicit LLoadExternalArrayPointer(LOperand* object) {
1612 inputs_[0] = object; 1608 inputs_[0] = object;
1613 } 1609 }
1614 1610
1615 LOperand* object() { return inputs_[0]; } 1611 LOperand* object() { return inputs_[0]; }
1616 1612
1617 DECLARE_CONCRETE_INSTRUCTION(LoadExternalArrayPointer, 1613 DECLARE_CONCRETE_INSTRUCTION(LoadExternalArrayPointer,
1618 "load-external-array-pointer") 1614 "load-external-array-pointer")
1619 }; 1615 };
1620 1616
1621 1617
1622 class LLoadKeyed V8_FINAL : public LTemplateInstruction<1, 2, 0> { 1618 class LLoadKeyed V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1623 public: 1619 public:
1624 LLoadKeyed(LOperand* elements, LOperand* key) { 1620 LLoadKeyed(LOperand* elements, LOperand* key) {
1625 inputs_[0] = elements; 1621 inputs_[0] = elements;
1626 inputs_[1] = key; 1622 inputs_[1] = key;
1627 } 1623 }
1628 LOperand* elements() { return inputs_[0]; } 1624 LOperand* elements() { return inputs_[0]; }
1629 LOperand* key() { return inputs_[1]; } 1625 LOperand* key() { return inputs_[1]; }
1630 ElementsKind elements_kind() const { 1626 ElementsKind elements_kind() const {
1631 return hydrogen()->elements_kind(); 1627 return hydrogen()->elements_kind();
1632 } 1628 }
1633 bool is_external() const { 1629 bool is_external() const {
1634 return hydrogen()->is_external(); 1630 return hydrogen()->is_external();
1635 } 1631 }
1636 1632
1637 virtual bool ClobbersDoubleRegisters() const V8_OVERRIDE {
1638 return !CpuFeatures::IsSupported(SSE2) &&
1639 !IsDoubleOrFloatElementsKind(hydrogen()->elements_kind());
1640 }
1641
1642 DECLARE_CONCRETE_INSTRUCTION(LoadKeyed, "load-keyed") 1633 DECLARE_CONCRETE_INSTRUCTION(LoadKeyed, "load-keyed")
1643 DECLARE_HYDROGEN_ACCESSOR(LoadKeyed) 1634 DECLARE_HYDROGEN_ACCESSOR(LoadKeyed)
1644 1635
1645 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 1636 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1646 uint32_t additional_index() const { return hydrogen()->index_offset(); } 1637 uint32_t additional_index() const { return hydrogen()->index_offset(); }
1647 bool key_is_smi() { 1638 bool key_is_smi() {
1648 return hydrogen()->key()->representation().IsTagged(); 1639 return hydrogen()->key()->representation().IsTagged();
1649 } 1640 }
1650 }; 1641 };
1651 1642
(...skipping 1275 matching lines...) Expand 10 before | Expand all | Expand 10 after
2927 2918
2928 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 2919 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
2929 }; 2920 };
2930 2921
2931 #undef DECLARE_HYDROGEN_ACCESSOR 2922 #undef DECLARE_HYDROGEN_ACCESSOR
2932 #undef DECLARE_CONCRETE_INSTRUCTION 2923 #undef DECLARE_CONCRETE_INSTRUCTION
2933 2924
2934 } } // namespace v8::internal 2925 } } // namespace v8::internal
2935 2926
2936 #endif // V8_IA32_LITHIUM_IA32_H_ 2927 #endif // V8_IA32_LITHIUM_IA32_H_
OLDNEW
« no previous file with comments | « src/ia32/lithium-codegen-ia32.cc ('k') | src/ia32/lithium-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698