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

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

Issue 15303004: Implement HChange support for Smis and use it in Load/StoreNameField (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Review feedback 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 | « no previous file | src/arm/lithium-arm.cc » ('j') | src/ia32/lithium-ia32.cc » ('J')
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 1823 matching lines...) Expand 10 before | Expand all | Expand 10 after
1947 explicit LInteger32ToDouble(LOperand* value) { 1949 explicit LInteger32ToDouble(LOperand* value) {
1948 inputs_[0] = value; 1950 inputs_[0] = value;
1949 } 1951 }
1950 1952
1951 LOperand* value() { return inputs_[0]; } 1953 LOperand* value() { return inputs_[0]; }
1952 1954
1953 DECLARE_CONCRETE_INSTRUCTION(Integer32ToDouble, "int32-to-double") 1955 DECLARE_CONCRETE_INSTRUCTION(Integer32ToDouble, "int32-to-double")
1954 }; 1956 };
1955 1957
1956 1958
1959 class LInteger32ToSmi: public LTemplateInstruction<1, 1, 0> {
1960 public:
1961 explicit LInteger32ToSmi(LOperand* value) {
1962 inputs_[0] = value;
1963 }
1964
1965 LOperand* value() { return inputs_[0]; }
1966
1967 DECLARE_CONCRETE_INSTRUCTION(Integer32ToSmi, "int32-to-smi")
1968 DECLARE_HYDROGEN_ACCESSOR(Change)
1969 };
1970
1971
1957 class LUint32ToDouble: public LTemplateInstruction<1, 1, 0> { 1972 class LUint32ToDouble: public LTemplateInstruction<1, 1, 0> {
1958 public: 1973 public:
1959 explicit LUint32ToDouble(LOperand* value) { 1974 explicit LUint32ToDouble(LOperand* value) {
1960 inputs_[0] = value; 1975 inputs_[0] = value;
1961 } 1976 }
1962 1977
1963 LOperand* value() { return inputs_[0]; } 1978 LOperand* value() { return inputs_[0]; }
1964 1979
1965 DECLARE_CONCRETE_INSTRUCTION(Uint32ToDouble, "uint32-to-double") 1980 DECLARE_CONCRETE_INSTRUCTION(Uint32ToDouble, "uint32-to-double")
1966 }; 1981 };
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
2000 2015
2001 LOperand* value() { return inputs_[0]; } 2016 LOperand* value() { return inputs_[0]; }
2002 LOperand* temp() { return temps_[0]; } 2017 LOperand* temp() { return temps_[0]; }
2003 LOperand* temp2() { return temps_[1]; } 2018 LOperand* temp2() { return temps_[1]; }
2004 2019
2005 DECLARE_CONCRETE_INSTRUCTION(NumberTagD, "number-tag-d") 2020 DECLARE_CONCRETE_INSTRUCTION(NumberTagD, "number-tag-d")
2006 DECLARE_HYDROGEN_ACCESSOR(Change) 2021 DECLARE_HYDROGEN_ACCESSOR(Change)
2007 }; 2022 };
2008 2023
2009 2024
2025 class LDoubleToSmi: public LTemplateInstruction<1, 1, 2> {
2026 public:
2027 LDoubleToSmi(LOperand* value, LOperand* temp, LOperand* temp2) {
2028 inputs_[0] = value;
2029 temps_[0] = temp;
2030 temps_[1] = temp2;
2031 }
2032
2033 LOperand* value() { return inputs_[0]; }
2034 LOperand* temp() { return temps_[0]; }
2035 LOperand* temp2() { return temps_[1]; }
2036
2037 DECLARE_CONCRETE_INSTRUCTION(DoubleToSmi, "double-to-smi")
2038 DECLARE_HYDROGEN_ACCESSOR(UnaryOperation)
2039
2040 bool truncating() { return hydrogen()->CanTruncateToInt32(); }
2041 };
2042
2043
2010 // Sometimes truncating conversion from a tagged value to an int32. 2044 // Sometimes truncating conversion from a tagged value to an int32.
2011 class LDoubleToI: public LTemplateInstruction<1, 1, 2> { 2045 class LDoubleToI: public LTemplateInstruction<1, 1, 2> {
2012 public: 2046 public:
2013 LDoubleToI(LOperand* value, LOperand* temp, LOperand* temp2) { 2047 LDoubleToI(LOperand* value, LOperand* temp, LOperand* temp2) {
2014 inputs_[0] = value; 2048 inputs_[0] = value;
2015 temps_[0] = temp; 2049 temps_[0] = temp;
2016 temps_[1] = temp2; 2050 temps_[1] = temp2;
2017 } 2051 }
2018 2052
2019 LOperand* value() { return inputs_[0]; } 2053 LOperand* value() { return inputs_[0]; }
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
2345 DECLARE_CONCRETE_INSTRUCTION(CheckPrototypeMaps, "check-prototype-maps") 2379 DECLARE_CONCRETE_INSTRUCTION(CheckPrototypeMaps, "check-prototype-maps")
2346 DECLARE_HYDROGEN_ACCESSOR(CheckPrototypeMaps) 2380 DECLARE_HYDROGEN_ACCESSOR(CheckPrototypeMaps)
2347 2381
2348 ZoneList<Handle<JSObject> >* prototypes() const { 2382 ZoneList<Handle<JSObject> >* prototypes() const {
2349 return hydrogen()->prototypes(); 2383 return hydrogen()->prototypes();
2350 } 2384 }
2351 ZoneList<Handle<Map> >* maps() const { return hydrogen()->maps(); } 2385 ZoneList<Handle<Map> >* maps() const { return hydrogen()->maps(); }
2352 }; 2386 };
2353 2387
2354 2388
2355 class LCheckSmi: public LTemplateInstruction<0, 1, 0> { 2389 class LCheckSmi: public LTemplateInstruction<1, 1, 0> {
2356 public: 2390 public:
2357 explicit LCheckSmi(LOperand* value) { 2391 explicit LCheckSmi(LOperand* value) {
2358 inputs_[0] = value; 2392 inputs_[0] = value;
2359 } 2393 }
2360 2394
2361 LOperand* value() { return inputs_[0]; } 2395 LOperand* value() { return inputs_[0]; }
2362 2396
2363 DECLARE_CONCRETE_INSTRUCTION(CheckSmi, "check-smi") 2397 DECLARE_CONCRETE_INSTRUCTION(CheckSmi, "check-smi")
2364 }; 2398 };
2365 2399
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
2820 2854
2821 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 2855 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
2822 }; 2856 };
2823 2857
2824 #undef DECLARE_HYDROGEN_ACCESSOR 2858 #undef DECLARE_HYDROGEN_ACCESSOR
2825 #undef DECLARE_CONCRETE_INSTRUCTION 2859 #undef DECLARE_CONCRETE_INSTRUCTION
2826 2860
2827 } } // namespace v8::internal 2861 } } // namespace v8::internal
2828 2862
2829 #endif // V8_ARM_LITHIUM_ARM_H_ 2863 #endif // V8_ARM_LITHIUM_ARM_H_
OLDNEW
« no previous file with comments | « no previous file | src/arm/lithium-arm.cc » ('j') | src/ia32/lithium-ia32.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698