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

Side by Side Diff: src/hydrogen.h

Issue 11365174: A change in the way we place TransitionElementKinds in the tree. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Visited set needs to consider edges, not vertexes on down propagation through the network. Created 8 years 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
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 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 235
236 private: 236 private:
237 void AddBlock(HBasicBlock* block); 237 void AddBlock(HBasicBlock* block);
238 238
239 ZoneList<HBasicBlock*> back_edges_; 239 ZoneList<HBasicBlock*> back_edges_;
240 HBasicBlock* loop_header_; 240 HBasicBlock* loop_header_;
241 ZoneList<HBasicBlock*> blocks_; 241 ZoneList<HBasicBlock*> blocks_;
242 HStackCheck* stack_check_; 242 HStackCheck* stack_check_;
243 }; 243 };
244 244
245
245 class BoundsCheckTable; 246 class BoundsCheckTable;
246 class HGraph: public ZoneObject { 247 class HGraph: public ZoneObject {
247 public: 248 public:
248 explicit HGraph(CompilationInfo* info); 249 explicit HGraph(CompilationInfo* info);
249 250
250 Isolate* isolate() { return isolate_; } 251 Isolate* isolate() { return isolate_; }
251 Zone* zone() const { return zone_; } 252 Zone* zone() const { return zone_; }
252 CompilationInfo* info() const { return info_; } 253 CompilationInfo* info() const { return info_; }
253 254
254 const ZoneList<HBasicBlock*>* blocks() const { return &blocks_; } 255 const ZoneList<HBasicBlock*>* blocks() const { return &blocks_; }
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 uint32_instructions_->Add(instr, zone()); 371 uint32_instructions_->Add(instr, zone());
371 } 372 }
372 373
373 private: 374 private:
374 HConstant* GetConstant(SetOncePointer<HConstant>* pointer, 375 HConstant* GetConstant(SetOncePointer<HConstant>* pointer,
375 Handle<Object> value); 376 Handle<Object> value);
376 HConstant* GetConstantInt32(SetOncePointer<HConstant>* pointer, 377 HConstant* GetConstantInt32(SetOncePointer<HConstant>* pointer,
377 int32_t integer_value); 378 int32_t integer_value);
378 379
379 void MarkAsDeoptimizingRecursively(HBasicBlock* block); 380 void MarkAsDeoptimizingRecursively(HBasicBlock* block);
381 void InsertElementsTransitions();
380 void InsertTypeConversions(HInstruction* instr); 382 void InsertTypeConversions(HInstruction* instr);
381 void PropagateMinusZeroChecks(HValue* value, BitVector* visited); 383 void PropagateMinusZeroChecks(HValue* value, BitVector* visited);
382 void RecursivelyMarkPhiDeoptimizeOnUndefined(HPhi* phi); 384 void RecursivelyMarkPhiDeoptimizeOnUndefined(HPhi* phi);
383 void InsertRepresentationChangeForUse(HValue* value, 385 void InsertRepresentationChangeForUse(HValue* value,
384 HValue* use_value, 386 HValue* use_value,
385 int use_index, 387 int use_index,
386 Representation to); 388 Representation to);
387 void InsertRepresentationChangesForValue(HValue* value); 389 void InsertRepresentationChangesForValue(HValue* value);
388 void InferTypes(ZoneList<HValue*>* worklist); 390 void InferTypes(ZoneList<HValue*>* worklist);
389 void InitializeInferredTypes(int from_inclusive, int to_inclusive); 391 void InitializeInferredTypes(int from_inclusive, int to_inclusive);
(...skipping 742 matching lines...) Expand 10 before | Expand all | Expand 10 after
1132 NilValue nil); 1134 NilValue nil);
1133 1135
1134 HStringCharCodeAt* BuildStringCharCodeAt(HValue* context, 1136 HStringCharCodeAt* BuildStringCharCodeAt(HValue* context,
1135 HValue* string, 1137 HValue* string,
1136 HValue* index); 1138 HValue* index);
1137 HInstruction* BuildBinaryOperation(BinaryOperation* expr, 1139 HInstruction* BuildBinaryOperation(BinaryOperation* expr,
1138 HValue* left, 1140 HValue* left,
1139 HValue* right); 1141 HValue* right);
1140 HInstruction* BuildIncrement(bool returns_original_input, 1142 HInstruction* BuildIncrement(bool returns_original_input,
1141 CountOperation* expr); 1143 CountOperation* expr);
1142 HInstruction* BuildFastElementAccess(HValue* elements, 1144 ArrayInstruction* BuildFastElementAccess(HValue* elements,
1143 HValue* checked_key, 1145 HValue* checked_key,
1144 HValue* val, 1146 HValue* val,
1145 HValue* dependency, 1147 HValue* dependency,
1146 ElementsKind elements_kind, 1148 ElementsKind elements_kind,
1147 bool is_store); 1149 bool is_store);
1148 1150
1149 HInstruction* TryBuildConsolidatedElementLoad(HValue* object, 1151 ArrayInstruction* TryBuildConsolidatedElementLoad(HValue* object,
1150 HValue* key, 1152 HValue* key,
1151 HValue* val, 1153 HValue* val,
1152 SmallMapList* maps); 1154 SmallMapList* maps);
1153 1155
1154 HInstruction* BuildUncheckedMonomorphicElementAccess(HValue* object, 1156 ArrayInstruction* BuildUncheckedMonomorphicElementAccess(HValue* object,
1155 HValue* key, 1157 HValue* key,
1156 HValue* val, 1158 HValue* val,
1157 HCheckMaps* mapcheck, 1159 HCheckMaps* mapcheck,
1158 Handle<Map> map, 1160 Handle<Map> map,
1159 bool is_store); 1161 bool is_store);
1160 1162
1161 HInstruction* BuildMonomorphicElementAccess(HValue* object, 1163 ArrayInstruction* BuildMonomorphicElementAccess(HValue* object,
1162 HValue* key, 1164 HValue* key,
1163 HValue* val, 1165 HValue* val,
1164 HValue* dependency, 1166 HValue* dependency,
1165 Handle<Map> map, 1167 Handle<Map> map,
1166 bool is_store); 1168 bool is_store);
1167 1169
1168 HValue* HandlePolymorphicElementAccess(HValue* object, 1170 HValue* HandlePolymorphicElementAccess(HValue* object,
1169 HValue* key, 1171 HValue* key,
1170 HValue* val, 1172 HValue* val,
1171 Expression* prop, 1173 Expression* prop,
1172 BailoutId ast_id, 1174 BailoutId ast_id,
1173 int position, 1175 int position,
1174 bool is_store, 1176 bool is_store,
1175 bool* has_side_effects); 1177 bool* has_side_effects);
1176 1178
(...skipping 14 matching lines...) Expand all
1191 Property* expr); 1193 Property* expr);
1192 HInstruction* BuildCallGetter(HValue* object, 1194 HInstruction* BuildCallGetter(HValue* object,
1193 Handle<Map> map, 1195 Handle<Map> map,
1194 Handle<JSFunction> getter, 1196 Handle<JSFunction> getter,
1195 Handle<JSObject> holder); 1197 Handle<JSObject> holder);
1196 HInstruction* BuildLoadNamedMonomorphic(HValue* object, 1198 HInstruction* BuildLoadNamedMonomorphic(HValue* object,
1197 Handle<String> name, 1199 Handle<String> name,
1198 Property* expr, 1200 Property* expr,
1199 Handle<Map> map); 1201 Handle<Map> map);
1200 HInstruction* BuildLoadKeyedGeneric(HValue* object, HValue* key); 1202 HInstruction* BuildLoadKeyedGeneric(HValue* object, HValue* key);
1201 HInstruction* BuildExternalArrayElementAccess( 1203 ArrayInstruction* BuildExternalArrayElementAccess(
1202 HValue* external_elements, 1204 HValue* external_elements,
1203 HValue* checked_key, 1205 HValue* checked_key,
1204 HValue* val, 1206 HValue* val,
1205 HValue* dependency, 1207 HValue* dependency,
1206 ElementsKind elements_kind, 1208 ElementsKind elements_kind,
1207 bool is_store); 1209 bool is_store);
1208 1210
1209 void AddCheckMapsWithTransitions(HValue* object, 1211 void AddCheckMapsWithTransitions(HValue* object,
1210 Handle<Map> map); 1212 Handle<Map> map);
1211 1213
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
1527 const char* filename_; 1529 const char* filename_;
1528 HeapStringAllocator string_allocator_; 1530 HeapStringAllocator string_allocator_;
1529 StringStream trace_; 1531 StringStream trace_;
1530 int indent_; 1532 int indent_;
1531 }; 1533 };
1532 1534
1533 1535
1534 } } // namespace v8::internal 1536 } } // namespace v8::internal
1535 1537
1536 #endif // V8_HYDROGEN_H_ 1538 #endif // V8_HYDROGEN_H_
OLDNEW
« no previous file with comments | « src/flag-definitions.h ('k') | src/hydrogen.cc » ('j') | src/hydrogen-instructions.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698