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

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

Issue 15781006: MIPS: Implement HChange support for Smis and use it in Load/StoreNameField (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 7 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/mips/lithium-codegen-mips.cc ('k') | src/mips/lithium-mips.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 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 V(ConstantD) \ 88 V(ConstantD) \
89 V(ConstantI) \ 89 V(ConstantI) \
90 V(ConstantT) \ 90 V(ConstantT) \
91 V(Context) \ 91 V(Context) \
92 V(DebugBreak) \ 92 V(DebugBreak) \
93 V(DeclareGlobals) \ 93 V(DeclareGlobals) \
94 V(DeleteProperty) \ 94 V(DeleteProperty) \
95 V(Deoptimize) \ 95 V(Deoptimize) \
96 V(DivI) \ 96 V(DivI) \
97 V(DoubleToI) \ 97 V(DoubleToI) \
98 V(DoubleToSmi) \
98 V(DummyUse) \ 99 V(DummyUse) \
99 V(ElementsKind) \ 100 V(ElementsKind) \
100 V(FixedArrayBaseLength) \ 101 V(FixedArrayBaseLength) \
101 V(FunctionLiteral) \ 102 V(FunctionLiteral) \
102 V(GetCachedArrayIndex) \ 103 V(GetCachedArrayIndex) \
103 V(GlobalObject) \ 104 V(GlobalObject) \
104 V(GlobalReceiver) \ 105 V(GlobalReceiver) \
105 V(Goto) \ 106 V(Goto) \
106 V(HasCachedArrayIndexAndBranch) \ 107 V(HasCachedArrayIndexAndBranch) \
107 V(HasInstanceTypeAndBranch) \ 108 V(HasInstanceTypeAndBranch) \
108 V(In) \ 109 V(In) \
109 V(InstanceOf) \ 110 V(InstanceOf) \
110 V(InstanceOfKnownGlobal) \ 111 V(InstanceOfKnownGlobal) \
111 V(InstanceSize) \ 112 V(InstanceSize) \
112 V(InstructionGap) \ 113 V(InstructionGap) \
113 V(Integer32ToDouble) \ 114 V(Integer32ToDouble) \
115 V(Integer32ToSmi) \
114 V(Uint32ToDouble) \ 116 V(Uint32ToDouble) \
115 V(InvokeFunction) \ 117 V(InvokeFunction) \
116 V(IsConstructCallAndBranch) \ 118 V(IsConstructCallAndBranch) \
117 V(IsObjectAndBranch) \ 119 V(IsObjectAndBranch) \
118 V(IsStringAndBranch) \ 120 V(IsStringAndBranch) \
119 V(IsSmiAndBranch) \ 121 V(IsSmiAndBranch) \
120 V(IsUndetectableAndBranch) \ 122 V(IsUndetectableAndBranch) \
121 V(Label) \ 123 V(Label) \
122 V(LazyBailout) \ 124 V(LazyBailout) \
123 V(LoadContextSlot) \ 125 V(LoadContextSlot) \
(...skipping 1770 matching lines...) Expand 10 before | Expand all | Expand 10 after
1894 explicit LInteger32ToDouble(LOperand* value) { 1896 explicit LInteger32ToDouble(LOperand* value) {
1895 inputs_[0] = value; 1897 inputs_[0] = value;
1896 } 1898 }
1897 1899
1898 LOperand* value() { return inputs_[0]; } 1900 LOperand* value() { return inputs_[0]; }
1899 1901
1900 DECLARE_CONCRETE_INSTRUCTION(Integer32ToDouble, "int32-to-double") 1902 DECLARE_CONCRETE_INSTRUCTION(Integer32ToDouble, "int32-to-double")
1901 }; 1903 };
1902 1904
1903 1905
1906 class LInteger32ToSmi: public LTemplateInstruction<1, 1, 0> {
1907 public:
1908 explicit LInteger32ToSmi(LOperand* value) {
1909 inputs_[0] = value;
1910 }
1911
1912 LOperand* value() { return inputs_[0]; }
1913
1914 DECLARE_CONCRETE_INSTRUCTION(Integer32ToSmi, "int32-to-smi")
1915 DECLARE_HYDROGEN_ACCESSOR(Change)
1916 };
1917
1918
1904 class LUint32ToDouble: public LTemplateInstruction<1, 1, 0> { 1919 class LUint32ToDouble: public LTemplateInstruction<1, 1, 0> {
1905 public: 1920 public:
1906 explicit LUint32ToDouble(LOperand* value) { 1921 explicit LUint32ToDouble(LOperand* value) {
1907 inputs_[0] = value; 1922 inputs_[0] = value;
1908 } 1923 }
1909 1924
1910 LOperand* value() { return inputs_[0]; } 1925 LOperand* value() { return inputs_[0]; }
1911 1926
1912 DECLARE_CONCRETE_INSTRUCTION(Uint32ToDouble, "uint32-to-double") 1927 DECLARE_CONCRETE_INSTRUCTION(Uint32ToDouble, "uint32-to-double")
1913 }; 1928 };
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1947 1962
1948 LOperand* value() { return inputs_[0]; } 1963 LOperand* value() { return inputs_[0]; }
1949 LOperand* temp() { return temps_[0]; } 1964 LOperand* temp() { return temps_[0]; }
1950 LOperand* temp2() { return temps_[1]; } 1965 LOperand* temp2() { return temps_[1]; }
1951 1966
1952 DECLARE_CONCRETE_INSTRUCTION(NumberTagD, "number-tag-d") 1967 DECLARE_CONCRETE_INSTRUCTION(NumberTagD, "number-tag-d")
1953 DECLARE_HYDROGEN_ACCESSOR(Change) 1968 DECLARE_HYDROGEN_ACCESSOR(Change)
1954 }; 1969 };
1955 1970
1956 1971
1972 class LDoubleToSmi: public LTemplateInstruction<1, 1, 2> {
1973 public:
1974 LDoubleToSmi(LOperand* value, LOperand* temp, LOperand* temp2) {
1975 inputs_[0] = value;
1976 temps_[0] = temp;
1977 temps_[1] = temp2;
1978 }
1979
1980 LOperand* value() { return inputs_[0]; }
1981 LOperand* temp() { return temps_[0]; }
1982 LOperand* temp2() { return temps_[1]; }
1983
1984 DECLARE_CONCRETE_INSTRUCTION(DoubleToSmi, "double-to-smi")
1985 DECLARE_HYDROGEN_ACCESSOR(UnaryOperation)
1986
1987 bool truncating() { return hydrogen()->CanTruncateToInt32(); }
1988 };
1989
1990
1957 // Sometimes truncating conversion from a tagged value to an int32. 1991 // Sometimes truncating conversion from a tagged value to an int32.
1958 class LDoubleToI: public LTemplateInstruction<1, 1, 2> { 1992 class LDoubleToI: public LTemplateInstruction<1, 1, 2> {
1959 public: 1993 public:
1960 LDoubleToI(LOperand* value, LOperand* temp, LOperand* temp2) { 1994 LDoubleToI(LOperand* value, LOperand* temp, LOperand* temp2) {
1961 inputs_[0] = value; 1995 inputs_[0] = value;
1962 temps_[0] = temp; 1996 temps_[0] = temp;
1963 temps_[1] = temp2; 1997 temps_[1] = temp2;
1964 } 1998 }
1965 1999
1966 LOperand* value() { return inputs_[0]; } 2000 LOperand* value() { return inputs_[0]; }
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
2287 DECLARE_CONCRETE_INSTRUCTION(CheckPrototypeMaps, "check-prototype-maps") 2321 DECLARE_CONCRETE_INSTRUCTION(CheckPrototypeMaps, "check-prototype-maps")
2288 DECLARE_HYDROGEN_ACCESSOR(CheckPrototypeMaps) 2322 DECLARE_HYDROGEN_ACCESSOR(CheckPrototypeMaps)
2289 2323
2290 ZoneList<Handle<JSObject> >* prototypes() const { 2324 ZoneList<Handle<JSObject> >* prototypes() const {
2291 return hydrogen()->prototypes(); 2325 return hydrogen()->prototypes();
2292 } 2326 }
2293 ZoneList<Handle<Map> >* maps() const { return hydrogen()->maps(); } 2327 ZoneList<Handle<Map> >* maps() const { return hydrogen()->maps(); }
2294 }; 2328 };
2295 2329
2296 2330
2297 class LCheckSmi: public LTemplateInstruction<0, 1, 0> { 2331 class LCheckSmi: public LTemplateInstruction<1, 1, 0> {
2298 public: 2332 public:
2299 explicit LCheckSmi(LOperand* value) { 2333 explicit LCheckSmi(LOperand* value) {
2300 inputs_[0] = value; 2334 inputs_[0] = value;
2301 } 2335 }
2302 2336
2303 LOperand* value() { return inputs_[0]; } 2337 LOperand* value() { return inputs_[0]; }
2304 2338
2305 DECLARE_CONCRETE_INSTRUCTION(CheckSmi, "check-smi") 2339 DECLARE_CONCRETE_INSTRUCTION(CheckSmi, "check-smi")
2306 }; 2340 };
2307 2341
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after
2757 2791
2758 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 2792 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
2759 }; 2793 };
2760 2794
2761 #undef DECLARE_HYDROGEN_ACCESSOR 2795 #undef DECLARE_HYDROGEN_ACCESSOR
2762 #undef DECLARE_CONCRETE_INSTRUCTION 2796 #undef DECLARE_CONCRETE_INSTRUCTION
2763 2797
2764 } } // namespace v8::internal 2798 } } // namespace v8::internal
2765 2799
2766 #endif // V8_MIPS_LITHIUM_MIPS_H_ 2800 #endif // V8_MIPS_LITHIUM_MIPS_H_
OLDNEW
« no previous file with comments | « src/mips/lithium-codegen-mips.cc ('k') | src/mips/lithium-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698