OLD | NEW |
---|---|
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 439 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
450 // Set or clear multiple flags at a time. The flags in the mask | 450 // Set or clear multiple flags at a time. The flags in the mask |
451 // are set to the value in "flags", the rest retain the current value | 451 // are set to the value in "flags", the rest retain the current value |
452 // in flags_. | 452 // in flags_. |
453 void SetFlags(intptr_t flags, intptr_t mask) { | 453 void SetFlags(intptr_t flags, intptr_t mask) { |
454 flags_ = (flags_ & ~mask) | (flags & mask); | 454 flags_ = (flags_ & ~mask) | (flags & mask); |
455 } | 455 } |
456 | 456 |
457 // Return all current flags. | 457 // Return all current flags. |
458 intptr_t GetFlags() { return flags_; } | 458 intptr_t GetFlags() { return flags_; } |
459 | 459 |
460 intptr_t parallel_sweeping() const { | 460 |
461 return parallel_sweeping_; | 461 // PARALLEL_SWEEPING_PENDING - This page is ready for parallel sweeping. |
462 // PARALLEL_SWEEPING_COMPLETE - This page was swept by a sweeper thread. | |
463 // PARALLEL_SWEEPING_DONE - The page state when sweeping is complete or | |
464 // sweeping must not be performed on that page. | |
465 enum ParallelSweepingState { | |
466 PARALLEL_SWEEPING_DONE, | |
467 PARALLEL_SWEEPING_COMPLETE, | |
Jarin
2014/02/14 09:04:13
Is not PARALLEL_SWEEPING_COMPLETE more like "in pr
Hannes Payer (out of office)
2014/02/14 12:29:17
Done.
| |
468 PARALLEL_SWEEPING_PENDING | |
469 }; | |
470 | |
471 ParallelSweepingState parallel_sweeping() { | |
472 return static_cast<ParallelSweepingState>(parallel_sweeping_); | |
Jarin
2014/02/14 09:04:13
This should be NoBarrier_Load
Hannes Payer (out of office)
2014/02/14 12:29:17
Ups, I accidentally removed this one.
Done.
| |
462 } | 473 } |
463 | 474 |
464 void set_parallel_sweeping(intptr_t state) { | 475 void set_parallel_sweeping(ParallelSweepingState state) { |
465 parallel_sweeping_ = state; | 476 NoBarrier_Store(¶llel_sweeping_, state); |
466 } | 477 } |
467 | 478 |
468 bool TryParallelSweeping() { | 479 bool TryParallelSweeping() { |
469 return NoBarrier_CompareAndSwap(¶llel_sweeping_, 1, 0) == 1; | 480 return NoBarrier_CompareAndSwap(¶llel_sweeping_, |
481 PARALLEL_SWEEPING_PENDING, | |
482 PARALLEL_SWEEPING_COMPLETE) == | |
483 PARALLEL_SWEEPING_PENDING; | |
470 } | 484 } |
471 | 485 |
472 // Manage live byte count (count of bytes known to be live, | 486 // Manage live byte count (count of bytes known to be live, |
473 // because they are marked black). | 487 // because they are marked black). |
474 void ResetLiveBytes() { | 488 void ResetLiveBytes() { |
475 if (FLAG_gc_verbose) { | 489 if (FLAG_gc_verbose) { |
476 PrintF("ResetLiveBytes:%p:%x->0\n", | 490 PrintF("ResetLiveBytes:%p:%x->0\n", |
477 static_cast<void*>(this), live_byte_count_); | 491 static_cast<void*>(this), live_byte_count_); |
478 } | 492 } |
479 live_byte_count_ = 0; | 493 live_byte_count_ = 0; |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
695 SlotsBuffer* slots_buffer_; | 709 SlotsBuffer* slots_buffer_; |
696 SkipList* skip_list_; | 710 SkipList* skip_list_; |
697 intptr_t write_barrier_counter_; | 711 intptr_t write_barrier_counter_; |
698 // Used by the incremental marker to keep track of the scanning progress in | 712 // Used by the incremental marker to keep track of the scanning progress in |
699 // large objects that have a progress bar and are scanned in increments. | 713 // large objects that have a progress bar and are scanned in increments. |
700 int progress_bar_; | 714 int progress_bar_; |
701 // Assuming the initial allocation on a page is sequential, | 715 // Assuming the initial allocation on a page is sequential, |
702 // count highest number of bytes ever allocated on the page. | 716 // count highest number of bytes ever allocated on the page. |
703 int high_water_mark_; | 717 int high_water_mark_; |
704 | 718 |
705 intptr_t parallel_sweeping_; | 719 AtomicWord parallel_sweeping_; |
706 | 720 |
707 // PagedSpace free-list statistics. | 721 // PagedSpace free-list statistics. |
708 intptr_t available_in_small_free_list_; | 722 intptr_t available_in_small_free_list_; |
709 intptr_t available_in_medium_free_list_; | 723 intptr_t available_in_medium_free_list_; |
710 intptr_t available_in_large_free_list_; | 724 intptr_t available_in_large_free_list_; |
711 intptr_t available_in_huge_free_list_; | 725 intptr_t available_in_huge_free_list_; |
712 intptr_t non_available_small_blocks_; | 726 intptr_t non_available_small_blocks_; |
713 | 727 |
714 static MemoryChunk* Initialize(Heap* heap, | 728 static MemoryChunk* Initialize(Heap* heap, |
715 Address base, | 729 Address base, |
(...skipping 2226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2942 } | 2956 } |
2943 // Must be small, since an iteration is used for lookup. | 2957 // Must be small, since an iteration is used for lookup. |
2944 static const int kMaxComments = 64; | 2958 static const int kMaxComments = 64; |
2945 }; | 2959 }; |
2946 #endif | 2960 #endif |
2947 | 2961 |
2948 | 2962 |
2949 } } // namespace v8::internal | 2963 } } // namespace v8::internal |
2950 | 2964 |
2951 #endif // V8_SPACES_H_ | 2965 #endif // V8_SPACES_H_ |
OLD | NEW |