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

Side by Side Diff: runtime/vm/flow_graph_allocator.h

Issue 10831261: Build and use stack maps in the SSA compiler. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 4 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
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #ifndef VM_FLOW_GRAPH_ALLOCATOR_H_ 5 #ifndef VM_FLOW_GRAPH_ALLOCATOR_H_
6 #define VM_FLOW_GRAPH_ALLOCATOR_H_ 6 #define VM_FLOW_GRAPH_ALLOCATOR_H_
7 7
8 #include "vm/growable_array.h" 8 #include "vm/growable_array.h"
9 #include "vm/intermediate_language.h" 9 #include "vm/intermediate_language.h"
10 10
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 // Per register lists of allocated live ranges. Contain only those 213 // Per register lists of allocated live ranges. Contain only those
214 // ranges that can be affected by future allocation decisions. 214 // ranges that can be affected by future allocation decisions.
215 // Those live ranges that end before the start of the current live range are 215 // Those live ranges that end before the start of the current live range are
216 // removed from the list and will not be affected. 216 // removed from the list and will not be affected.
217 GrowableArray<LiveRange*> cpu_regs_[kNumberOfCpuRegisters]; 217 GrowableArray<LiveRange*> cpu_regs_[kNumberOfCpuRegisters];
218 218
219 // List of used spill slots. Contains positions after which spill slots 219 // List of used spill slots. Contains positions after which spill slots
220 // become free and can be reused for allocation. 220 // become free and can be reused for allocation.
221 GrowableArray<intptr_t> spill_slots_; 221 GrowableArray<intptr_t> spill_slots_;
222 222
223 // List of safepoints.
224 struct Safepoint {
Vyacheslav Egorov (Google) 2012/08/13 12:54:46 : public ValueObject ?
Kevin Millikin (Google) 2012/08/13 15:10:37 Nah. The comment in that class indicates that Val
225 intptr_t position;
226 BitmapBuilder* stack_bitmap;
227 };
228 GrowableArray<Safepoint> safepoints_;
229
223 bool blocked_cpu_regs_[kNumberOfCpuRegisters]; 230 bool blocked_cpu_regs_[kNumberOfCpuRegisters];
224 231
225 DISALLOW_COPY_AND_ASSIGN(FlowGraphAllocator); 232 DISALLOW_COPY_AND_ASSIGN(FlowGraphAllocator);
226 }; 233 };
227 234
228 235
229 // Additional information about a block that is not contained in a 236 // Additional information about a block that is not contained in a
230 // block entry. 237 // block entry.
231 class BlockInfo : public ZoneAllocated { 238 class BlockInfo : public ZoneAllocated {
232 public: 239 public:
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 void Print(); 428 void Print();
422 429
423 void AssignLocation(UseInterval* use, Location loc); 430 void AssignLocation(UseInterval* use, Location loc);
424 431
425 LiveRange* SplitAt(intptr_t pos); 432 LiveRange* SplitAt(intptr_t pos);
426 433
427 bool CanCover(intptr_t pos) const { 434 bool CanCover(intptr_t pos) const {
428 return (Start() <= pos) && (pos < End()); 435 return (Start() <= pos) && (pos < End());
429 } 436 }
430 437
438 bool Covers(intptr_t pos) const;
srdjan 2012/08/10 23:11:05 Could you add a brief comment differentiating betw
Vyacheslav Egorov (Google) 2012/08/13 12:54:46 I suggest renaming Covers to Contains to match nam
Kevin Millikin (Google) 2012/08/13 15:10:37 Done.
439
431 Location spill_slot() const { 440 Location spill_slot() const {
432 return spill_slot_; 441 return spill_slot_;
433 } 442 }
434 443
435 private: 444 private:
436 LiveRange(intptr_t vreg, 445 LiveRange(intptr_t vreg,
437 UsePosition* uses, 446 UsePosition* uses,
438 UseInterval* first_use_interval, 447 UseInterval* first_use_interval,
439 UseInterval* last_use_interval, 448 UseInterval* last_use_interval,
440 LiveRange* next_sibling) 449 LiveRange* next_sibling)
(...skipping 18 matching lines...) Expand all
459 468
460 AllocationFinger finger_; 469 AllocationFinger finger_;
461 470
462 DISALLOW_COPY_AND_ASSIGN(LiveRange); 471 DISALLOW_COPY_AND_ASSIGN(LiveRange);
463 }; 472 };
464 473
465 474
466 } // namespace dart 475 } // namespace dart
467 476
468 #endif // VM_FLOW_GRAPH_ALLOCATOR_H_ 477 #endif // VM_FLOW_GRAPH_ALLOCATOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698