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

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

Issue 6066010: Merge 6095:6198 from bleeding_edge to experimental/gc. (Closed) Base URL: http://v8.googlecode.com/svn/branches/experimental/gc/
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
134 // LLoadFunctionPrototype
133 // LNumberTagD 135 // LNumberTagD
134 // LNumberTagI 136 // LNumberTagI
135 // LPushArgument 137 // LPushArgument
136 // LReturn 138 // LReturn
137 // LSmiTag 139 // LSmiTag
138 // LStoreGlobal 140 // LStoreGlobal
139 // LTaggedToI 141 // LTaggedToI
140 // LThrow 142 // LThrow
141 // LTypeof 143 // LTypeof
142 // LTypeofIs 144 // LTypeofIs
(...skipping 14 matching lines...) Expand all
157 159
158 160
159 #define LITHIUM_CONCRETE_INSTRUCTION_LIST(V) \ 161 #define LITHIUM_CONCRETE_INSTRUCTION_LIST(V) \
160 V(AccessArgumentsAt) \ 162 V(AccessArgumentsAt) \
161 V(AddI) \ 163 V(AddI) \
162 V(ApplyArguments) \ 164 V(ApplyArguments) \
163 V(ArgumentsElements) \ 165 V(ArgumentsElements) \
164 V(ArgumentsLength) \ 166 V(ArgumentsLength) \
165 V(ArithmeticD) \ 167 V(ArithmeticD) \
166 V(ArithmeticT) \ 168 V(ArithmeticT) \
167 V(ArrayLength) \
168 V(ArrayLiteral) \ 169 V(ArrayLiteral) \
169 V(BitI) \ 170 V(BitI) \
170 V(BitNotI) \ 171 V(BitNotI) \
171 V(BoundsCheck) \ 172 V(BoundsCheck) \
172 V(Branch) \ 173 V(Branch) \
173 V(CallConstantFunction) \ 174 V(CallConstantFunction) \
174 V(CallFunction) \ 175 V(CallFunction) \
175 V(CallGlobal) \ 176 V(CallGlobal) \
176 V(CallKeyed) \ 177 V(CallKeyed) \
177 V(CallKnownGlobal) \ 178 V(CallKnownGlobal) \
(...skipping 18 matching lines...) Expand all
196 V(ConstantT) \ 197 V(ConstantT) \
197 V(DeleteProperty) \ 198 V(DeleteProperty) \
198 V(Deoptimize) \ 199 V(Deoptimize) \
199 V(DivI) \ 200 V(DivI) \
200 V(DoubleToI) \ 201 V(DoubleToI) \
201 V(FunctionLiteral) \ 202 V(FunctionLiteral) \
202 V(Gap) \ 203 V(Gap) \
203 V(GlobalObject) \ 204 V(GlobalObject) \
204 V(GlobalReceiver) \ 205 V(GlobalReceiver) \
205 V(Goto) \ 206 V(Goto) \
207 V(FixedArrayLength) \
206 V(InstanceOf) \ 208 V(InstanceOf) \
207 V(InstanceOfAndBranch) \ 209 V(InstanceOfAndBranch) \
208 V(Integer32ToDouble) \ 210 V(Integer32ToDouble) \
209 V(IsNull) \ 211 V(IsNull) \
210 V(IsNullAndBranch) \ 212 V(IsNullAndBranch) \
211 V(IsObject) \ 213 V(IsObject) \
212 V(IsObjectAndBranch) \ 214 V(IsObjectAndBranch) \
213 V(IsSmi) \ 215 V(IsSmi) \
214 V(IsSmiAndBranch) \ 216 V(IsSmiAndBranch) \
217 V(JSArrayLength) \
215 V(HasInstanceType) \ 218 V(HasInstanceType) \
216 V(HasInstanceTypeAndBranch) \ 219 V(HasInstanceTypeAndBranch) \
217 V(HasCachedArrayIndex) \ 220 V(HasCachedArrayIndex) \
218 V(HasCachedArrayIndexAndBranch) \ 221 V(HasCachedArrayIndexAndBranch) \
219 V(ClassOfTest) \ 222 V(ClassOfTest) \
220 V(ClassOfTestAndBranch) \ 223 V(ClassOfTestAndBranch) \
221 V(Label) \ 224 V(Label) \
222 V(LazyBailout) \ 225 V(LazyBailout) \
223 V(LoadElements) \ 226 V(LoadElements) \
224 V(LoadGlobal) \ 227 V(LoadGlobal) \
225 V(LoadKeyedFastElement) \ 228 V(LoadKeyedFastElement) \
226 V(LoadKeyedGeneric) \ 229 V(LoadKeyedGeneric) \
227 V(LoadNamedField) \ 230 V(LoadNamedField) \
228 V(LoadNamedGeneric) \ 231 V(LoadNamedGeneric) \
232 V(LoadFunctionPrototype) \
229 V(ModI) \ 233 V(ModI) \
230 V(MulI) \ 234 V(MulI) \
231 V(NumberTagD) \ 235 V(NumberTagD) \
232 V(NumberTagI) \ 236 V(NumberTagI) \
233 V(NumberUntagD) \ 237 V(NumberUntagD) \
234 V(ObjectLiteral) \ 238 V(ObjectLiteral) \
235 V(OsrEntry) \ 239 V(OsrEntry) \
236 V(Parameter) \ 240 V(Parameter) \
237 V(Power) \ 241 V(Power) \
238 V(PushArgument) \ 242 V(PushArgument) \
(...skipping 900 matching lines...) Expand 10 before | Expand all | Expand 10 after
1139 int true_block_id() const { return true_block_id_; } 1143 int true_block_id() const { return true_block_id_; }
1140 int false_block_id() const { return false_block_id_; } 1144 int false_block_id() const { return false_block_id_; }
1141 1145
1142 private: 1146 private:
1143 Handle<Map> map_; 1147 Handle<Map> map_;
1144 int true_block_id_; 1148 int true_block_id_;
1145 int false_block_id_; 1149 int false_block_id_;
1146 }; 1150 };
1147 1151
1148 1152
1149 class LArrayLength: public LUnaryOperation { 1153 class LJSArrayLength: public LUnaryOperation {
1150 public: 1154 public:
1151 LArrayLength(LOperand* input, LOperand* temporary) 1155 explicit LJSArrayLength(LOperand* input) : LUnaryOperation(input) { }
1152 : LUnaryOperation(input), temporary_(temporary) { }
1153 1156
1154 LOperand* temporary() const { return temporary_; } 1157 DECLARE_CONCRETE_INSTRUCTION(JSArrayLength, "js-array-length")
1155 1158 DECLARE_HYDROGEN_ACCESSOR(JSArrayLength)
1156 DECLARE_CONCRETE_INSTRUCTION(ArrayLength, "array-length")
1157 DECLARE_HYDROGEN_ACCESSOR(ArrayLength)
1158
1159 private:
1160 LOperand* temporary_;
1161 }; 1159 };
1162 1160
1163 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
1164 class LValueOf: public LUnaryOperation { 1171 class LValueOf: public LUnaryOperation {
1165 public: 1172 public:
1166 LValueOf(LOperand* input, LOperand* temporary) 1173 LValueOf(LOperand* input, LOperand* temporary)
1167 : LUnaryOperation(input), temporary_(temporary) { } 1174 : LUnaryOperation(input), temporary_(temporary) { }
1168 1175
1169 LOperand* temporary() const { return temporary_; } 1176 LOperand* temporary() const { return temporary_; }
1170 1177
1171 DECLARE_CONCRETE_INSTRUCTION(ValueOf, "value-of") 1178 DECLARE_CONCRETE_INSTRUCTION(ValueOf, "value-of")
1172 DECLARE_HYDROGEN_ACCESSOR(ValueOf) 1179 DECLARE_HYDROGEN_ACCESSOR(ValueOf)
1173 1180
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1264 explicit LLoadNamedGeneric(LOperand* object) : LUnaryOperation(object) { } 1271 explicit LLoadNamedGeneric(LOperand* object) : LUnaryOperation(object) { }
1265 1272
1266 DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric, "load-named-generic") 1273 DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric, "load-named-generic")
1267 DECLARE_HYDROGEN_ACCESSOR(LoadNamedGeneric) 1274 DECLARE_HYDROGEN_ACCESSOR(LoadNamedGeneric)
1268 1275
1269 LOperand* object() const { return input(); } 1276 LOperand* object() const { return input(); }
1270 Handle<Object> name() const { return hydrogen()->name(); } 1277 Handle<Object> name() const { return hydrogen()->name(); }
1271 }; 1278 };
1272 1279
1273 1280
1281 class LLoadFunctionPrototype: public LUnaryOperation {
1282 public:
1283 LLoadFunctionPrototype(LOperand* function, LOperand* temporary)
1284 : LUnaryOperation(function), temporary_(temporary) { }
1285
1286 DECLARE_CONCRETE_INSTRUCTION(LoadFunctionPrototype, "load-function-prototype")
1287 DECLARE_HYDROGEN_ACCESSOR(LoadFunctionPrototype)
1288
1289 LOperand* function() const { return input(); }
1290 LOperand* temporary() const { return temporary_; }
1291
1292 private:
1293 LOperand* temporary_;
1294 };
1295
1296
1274 class LLoadElements: public LUnaryOperation { 1297 class LLoadElements: public LUnaryOperation {
1275 public: 1298 public:
1276 explicit LLoadElements(LOperand* obj) : LUnaryOperation(obj) { } 1299 explicit LLoadElements(LOperand* obj) : LUnaryOperation(obj) { }
1277 1300
1278 DECLARE_CONCRETE_INSTRUCTION(LoadElements, "load-elements") 1301 DECLARE_CONCRETE_INSTRUCTION(LoadElements, "load-elements")
1279 }; 1302 };
1280 1303
1281 1304
1282 class LLoadKeyedFastElement: public LBinaryOperation { 1305 class LLoadKeyedFastElement: public LBinaryOperation {
1283 public: 1306 public:
(...skipping 773 matching lines...) Expand 10 before | Expand all | Expand 10 after
2057 LOperand* UseOrConstantAtStart(HValue* value); 2080 LOperand* UseOrConstantAtStart(HValue* value);
2058 LOperand* UseRegisterOrConstant(HValue* value); 2081 LOperand* UseRegisterOrConstant(HValue* value);
2059 LOperand* UseRegisterOrConstantAtStart(HValue* value); 2082 LOperand* UseRegisterOrConstantAtStart(HValue* value);
2060 2083
2061 // Methods for setting up define-use relationships. 2084 // Methods for setting up define-use relationships.
2062 // Return the same instruction that they are passed. 2085 // Return the same instruction that they are passed.
2063 LInstruction* Define(LInstruction* instr, LUnallocated* result); 2086 LInstruction* Define(LInstruction* instr, LUnallocated* result);
2064 LInstruction* Define(LInstruction* instr); 2087 LInstruction* Define(LInstruction* instr);
2065 LInstruction* DefineAsRegister(LInstruction* instr); 2088 LInstruction* DefineAsRegister(LInstruction* instr);
2066 LInstruction* DefineAsSpilled(LInstruction* instr, int index); 2089 LInstruction* DefineAsSpilled(LInstruction* instr, int index);
2067 LInstruction* DefineSameAsAny(LInstruction* instr);
2068 LInstruction* DefineSameAsFirst(LInstruction* instr); 2090 LInstruction* DefineSameAsFirst(LInstruction* instr);
2069 LInstruction* DefineFixed(LInstruction* instr, Register reg); 2091 LInstruction* DefineFixed(LInstruction* instr, Register reg);
2070 LInstruction* DefineFixedDouble(LInstruction* instr, XMMRegister reg); 2092 LInstruction* DefineFixedDouble(LInstruction* instr, XMMRegister reg);
2071 LInstruction* AssignEnvironment(LInstruction* instr); 2093 LInstruction* AssignEnvironment(LInstruction* instr);
2072 LInstruction* AssignPointerMap(LInstruction* instr); 2094 LInstruction* AssignPointerMap(LInstruction* instr);
2073 2095
2074 enum CanDeoptimize { CAN_DEOPTIMIZE_EAGERLY, CANNOT_DEOPTIMIZE_EAGERLY }; 2096 enum CanDeoptimize { CAN_DEOPTIMIZE_EAGERLY, CANNOT_DEOPTIMIZE_EAGERLY };
2075 2097
2076 // By default we assume that instruction sequences generated for calls 2098 // By default we assume that instruction sequences generated for calls
2077 // cannot deoptimize eagerly and we do not attach environment to this 2099 // cannot deoptimize eagerly and we do not attach environment to this
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
2119 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 2141 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
2120 }; 2142 };
2121 2143
2122 #undef DECLARE_HYDROGEN_ACCESSOR 2144 #undef DECLARE_HYDROGEN_ACCESSOR
2123 #undef DECLARE_INSTRUCTION 2145 #undef DECLARE_INSTRUCTION
2124 #undef DECLARE_CONCRETE_INSTRUCTION 2146 #undef DECLARE_CONCRETE_INSTRUCTION
2125 2147
2126 } } // namespace v8::internal 2148 } } // namespace v8::internal
2127 2149
2128 #endif // V8_IA32_LITHIUM_IA32_H_ 2150 #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