OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_HEAP_HEAP_H_ | 5 #ifndef V8_HEAP_HEAP_H_ |
6 #define V8_HEAP_HEAP_H_ | 6 #define V8_HEAP_HEAP_H_ |
7 | 7 |
8 #include <cmath> | 8 #include <cmath> |
9 | 9 |
10 #include "src/allocation.h" | 10 #include "src/allocation.h" |
(...skipping 695 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
706 inline Object* ToBoolean(bool condition); | 706 inline Object* ToBoolean(bool condition); |
707 | 707 |
708 // Performs garbage collection operation. | 708 // Performs garbage collection operation. |
709 // Returns whether there is a chance that another major GC could | 709 // Returns whether there is a chance that another major GC could |
710 // collect more garbage. | 710 // collect more garbage. |
711 inline bool CollectGarbage( | 711 inline bool CollectGarbage( |
712 AllocationSpace space, const char* gc_reason = NULL, | 712 AllocationSpace space, const char* gc_reason = NULL, |
713 const GCCallbackFlags gc_callback_flags = kNoGCCallbackFlags); | 713 const GCCallbackFlags gc_callback_flags = kNoGCCallbackFlags); |
714 | 714 |
715 static const int kNoGCFlags = 0; | 715 static const int kNoGCFlags = 0; |
716 static const int kSweepPreciselyMask = 1; | 716 static const int kReduceMemoryFootprintMask = 1; |
717 static const int kReduceMemoryFootprintMask = 2; | 717 static const int kAbortIncrementalMarkingMask = 2; |
718 static const int kAbortIncrementalMarkingMask = 4; | |
719 | 718 |
720 // Making the heap iterable requires us to sweep precisely and abort any | 719 // Making the heap iterable requires us to abort incremental marking. |
721 // incremental marking as well. | 720 static const int kMakeHeapIterableMask = kAbortIncrementalMarkingMask; |
722 static const int kMakeHeapIterableMask = | |
723 kSweepPreciselyMask | kAbortIncrementalMarkingMask; | |
724 | 721 |
725 // Performs a full garbage collection. If (flags & kMakeHeapIterableMask) is | 722 // Performs a full garbage collection. If (flags & kMakeHeapIterableMask) is |
726 // non-zero, then the slower precise sweeper is used, which leaves the heap | 723 // non-zero, then the slower precise sweeper is used, which leaves the heap |
727 // in a state where we can iterate over the heap visiting all objects. | 724 // in a state where we can iterate over the heap visiting all objects. |
728 void CollectAllGarbage( | 725 void CollectAllGarbage( |
729 int flags, const char* gc_reason = NULL, | 726 int flags, const char* gc_reason = NULL, |
730 const GCCallbackFlags gc_callback_flags = kNoGCCallbackFlags); | 727 const GCCallbackFlags gc_callback_flags = kNoGCCallbackFlags); |
731 | 728 |
732 // Last hope GC, should try to squeeze as much as possible. | 729 // Last hope GC, should try to squeeze as much as possible. |
733 void CollectAllAvailableGarbage(const char* gc_reason = NULL); | 730 void CollectAllAvailableGarbage(const char* gc_reason = NULL); |
(...skipping 1786 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2520 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. | 2517 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. |
2521 | 2518 |
2522 private: | 2519 private: |
2523 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); | 2520 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); |
2524 }; | 2521 }; |
2525 #endif // DEBUG | 2522 #endif // DEBUG |
2526 } | 2523 } |
2527 } // namespace v8::internal | 2524 } // namespace v8::internal |
2528 | 2525 |
2529 #endif // V8_HEAP_HEAP_H_ | 2526 #endif // V8_HEAP_HEAP_H_ |
OLD | NEW |