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

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

Issue 5961016: Optimize array-length and fast element loads.... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 9 years, 11 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 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 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 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 // LParameter 97 // LParameter
98 // LRegExpConstructResult 98 // LRegExpConstructResult
99 // LStackCheck 99 // LStackCheck
100 // LStoreKeyed 100 // LStoreKeyed
101 // LStoreKeyedFastElement 101 // LStoreKeyedFastElement
102 // LStoreKeyedGeneric 102 // LStoreKeyedGeneric
103 // LStoreNamed 103 // LStoreNamed
104 // LStoreNamedField 104 // LStoreNamedField
105 // LStoreNamedGeneric 105 // LStoreNamedGeneric
106 // LUnaryOperation 106 // LUnaryOperation
107 // LArrayLength
108 // LBitNotI 107 // LBitNotI
109 // LBranch 108 // LBranch
110 // LCallNew 109 // LCallNew
111 // LCheckFunction 110 // LCheckFunction
112 // LCheckInstanceType 111 // LCheckInstanceType
113 // LCheckMap 112 // LCheckMap
114 // LCheckPrototypeMaps 113 // LCheckPrototypeMaps
115 // LCheckSmi 114 // LCheckSmi
116 // LClassOfTest 115 // LClassOfTest
117 // LClassOfTestAndBranch 116 // LClassOfTestAndBranch
118 // LDeleteProperty 117 // LDeleteProperty
119 // LDoubleToI 118 // LDoubleToI
119 // LFixedArrayLength
120 // LHasCachedArrayIndex 120 // LHasCachedArrayIndex
121 // LHasCachedArrayIndexAndBranch 121 // LHasCachedArrayIndexAndBranch
122 // LHasInstanceType 122 // LHasInstanceType
123 // LHasInstanceTypeAndBranch 123 // LHasInstanceTypeAndBranch
124 // LInteger32ToDouble 124 // LInteger32ToDouble
125 // LIsNull 125 // LIsNull
126 // LIsNullAndBranch 126 // LIsNullAndBranch
127 // LIsObject 127 // LIsObject
128 // LIsObjectAndBranch 128 // LIsObjectAndBranch
129 // LIsSmi 129 // LIsSmi
130 // LIsSmiAndBranch 130 // LIsSmiAndBranch
131 // LJSArrayLength
131 // LLoadNamedField 132 // LLoadNamedField
132 // LLoadNamedGeneric 133 // LLoadNamedGeneric
133 // LLoadFunctionPrototype 134 // LLoadFunctionPrototype
134 // LNumberTagD 135 // LNumberTagD
135 // LNumberTagI 136 // LNumberTagI
136 // LPushArgument 137 // LPushArgument
137 // LReturn 138 // LReturn
138 // LSmiTag 139 // LSmiTag
139 // LStoreGlobal 140 // LStoreGlobal
140 // LTaggedToI 141 // LTaggedToI
(...skipping 17 matching lines...) Expand all
158 159
159 160
160 #define LITHIUM_CONCRETE_INSTRUCTION_LIST(V) \ 161 #define LITHIUM_CONCRETE_INSTRUCTION_LIST(V) \
161 V(AccessArgumentsAt) \ 162 V(AccessArgumentsAt) \
162 V(AddI) \ 163 V(AddI) \
163 V(ApplyArguments) \ 164 V(ApplyArguments) \
164 V(ArgumentsElements) \ 165 V(ArgumentsElements) \
165 V(ArgumentsLength) \ 166 V(ArgumentsLength) \
166 V(ArithmeticD) \ 167 V(ArithmeticD) \
167 V(ArithmeticT) \ 168 V(ArithmeticT) \
168 V(ArrayLength) \
169 V(ArrayLiteral) \ 169 V(ArrayLiteral) \
170 V(BitI) \ 170 V(BitI) \
171 V(BitNotI) \ 171 V(BitNotI) \
172 V(BoundsCheck) \ 172 V(BoundsCheck) \
173 V(Branch) \ 173 V(Branch) \
174 V(CallConstantFunction) \ 174 V(CallConstantFunction) \
175 V(CallFunction) \ 175 V(CallFunction) \
176 V(CallGlobal) \ 176 V(CallGlobal) \
177 V(CallKeyed) \ 177 V(CallKeyed) \
178 V(CallKnownGlobal) \ 178 V(CallKnownGlobal) \
(...skipping 18 matching lines...) Expand all
197 V(ConstantT) \ 197 V(ConstantT) \
198 V(DeleteProperty) \ 198 V(DeleteProperty) \
199 V(Deoptimize) \ 199 V(Deoptimize) \
200 V(DivI) \ 200 V(DivI) \
201 V(DoubleToI) \ 201 V(DoubleToI) \
202 V(FunctionLiteral) \ 202 V(FunctionLiteral) \
203 V(Gap) \ 203 V(Gap) \
204 V(GlobalObject) \ 204 V(GlobalObject) \
205 V(GlobalReceiver) \ 205 V(GlobalReceiver) \
206 V(Goto) \ 206 V(Goto) \
207 V(FixedArrayLength) \
207 V(InstanceOf) \ 208 V(InstanceOf) \
208 V(InstanceOfAndBranch) \ 209 V(InstanceOfAndBranch) \
209 V(Integer32ToDouble) \ 210 V(Integer32ToDouble) \
210 V(IsNull) \ 211 V(IsNull) \
211 V(IsNullAndBranch) \ 212 V(IsNullAndBranch) \
212 V(IsObject) \ 213 V(IsObject) \
213 V(IsObjectAndBranch) \ 214 V(IsObjectAndBranch) \
214 V(IsSmi) \ 215 V(IsSmi) \
215 V(IsSmiAndBranch) \ 216 V(IsSmiAndBranch) \
217 V(JSArrayLength) \
216 V(HasInstanceType) \ 218 V(HasInstanceType) \
217 V(HasInstanceTypeAndBranch) \ 219 V(HasInstanceTypeAndBranch) \
218 V(HasCachedArrayIndex) \ 220 V(HasCachedArrayIndex) \
219 V(HasCachedArrayIndexAndBranch) \ 221 V(HasCachedArrayIndexAndBranch) \
220 V(ClassOfTest) \ 222 V(ClassOfTest) \
221 V(ClassOfTestAndBranch) \ 223 V(ClassOfTestAndBranch) \
222 V(Label) \ 224 V(Label) \
223 V(LazyBailout) \ 225 V(LazyBailout) \
224 V(LoadElements) \ 226 V(LoadElements) \
225 V(LoadGlobal) \ 227 V(LoadGlobal) \
(...skipping 915 matching lines...) Expand 10 before | Expand all | Expand 10 after
1141 int true_block_id() const { return true_block_id_; } 1143 int true_block_id() const { return true_block_id_; }
1142 int false_block_id() const { return false_block_id_; } 1144 int false_block_id() const { return false_block_id_; }
1143 1145
1144 private: 1146 private:
1145 Handle<Map> map_; 1147 Handle<Map> map_;
1146 int true_block_id_; 1148 int true_block_id_;
1147 int false_block_id_; 1149 int false_block_id_;
1148 }; 1150 };
1149 1151
1150 1152
1151 class LArrayLength: public LUnaryOperation { 1153 class LJSArrayLength: public LUnaryOperation {
1152 public: 1154 public:
1153 LArrayLength(LOperand* input, LOperand* temporary) 1155 explicit LJSArrayLength(LOperand* input) : LUnaryOperation(input) { }
1154 : LUnaryOperation(input), temporary_(temporary) { }
1155 1156
1156 LOperand* temporary() const { return temporary_; } 1157 DECLARE_CONCRETE_INSTRUCTION(JSArrayLength, "js-array-length")
1157 1158 DECLARE_HYDROGEN_ACCESSOR(JSArrayLength)
1158 DECLARE_CONCRETE_INSTRUCTION(ArrayLength, "array-length")
1159 DECLARE_HYDROGEN_ACCESSOR(ArrayLength)
1160
1161 private:
1162 LOperand* temporary_;
1163 }; 1159 };
1164 1160
1165 1161
1162 class LFixedArrayLength: public LUnaryOperation {
1163 public:
1164 explicit LFixedArrayLength(LOperand* input) : LUnaryOperation(input) { }
1165
1166 DECLARE_CONCRETE_INSTRUCTION(FixedArrayLength, "fixed-array-length")
1167 DECLARE_HYDROGEN_ACCESSOR(FixedArrayLength)
1168 };
1169
1170
1166 class LValueOf: public LUnaryOperation { 1171 class LValueOf: public LUnaryOperation {
1167 public: 1172 public:
1168 LValueOf(LOperand* input, LOperand* temporary) 1173 LValueOf(LOperand* input, LOperand* temporary)
1169 : LUnaryOperation(input), temporary_(temporary) { } 1174 : LUnaryOperation(input), temporary_(temporary) { }
1170 1175
1171 LOperand* temporary() const { return temporary_; } 1176 LOperand* temporary() const { return temporary_; }
1172 1177
1173 DECLARE_CONCRETE_INSTRUCTION(ValueOf, "value-of") 1178 DECLARE_CONCRETE_INSTRUCTION(ValueOf, "value-of")
1174 DECLARE_HYDROGEN_ACCESSOR(ValueOf) 1179 DECLARE_HYDROGEN_ACCESSOR(ValueOf)
1175 1180
(...skipping 961 matching lines...) Expand 10 before | Expand all | Expand 10 after
2137 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 2142 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
2138 }; 2143 };
2139 2144
2140 #undef DECLARE_HYDROGEN_ACCESSOR 2145 #undef DECLARE_HYDROGEN_ACCESSOR
2141 #undef DECLARE_INSTRUCTION 2146 #undef DECLARE_INSTRUCTION
2142 #undef DECLARE_CONCRETE_INSTRUCTION 2147 #undef DECLARE_CONCRETE_INSTRUCTION
2143 2148
2144 } } // namespace v8::internal 2149 } } // namespace v8::internal
2145 2150
2146 #endif // V8_IA32_LITHIUM_IA32_H_ 2151 #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