| 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 #include "src/heap/heap.h" | 5 #include "src/heap/heap.h" |
| 6 | 6 |
| 7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
| 8 #include "src/api.h" | 8 #include "src/api.h" |
| 9 #include "src/ast/context-slot-cache.h" | 9 #include "src/ast/context-slot-cache.h" |
| 10 #include "src/base/bits.h" | 10 #include "src/base/bits.h" |
| (...skipping 885 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 896 } | 896 } |
| 897 } | 897 } |
| 898 set_current_gc_flags(kNoGCFlags); | 898 set_current_gc_flags(kNoGCFlags); |
| 899 new_space_.Shrink(); | 899 new_space_.Shrink(); |
| 900 UncommitFromSpace(); | 900 UncommitFromSpace(); |
| 901 } | 901 } |
| 902 | 902 |
| 903 | 903 |
| 904 void Heap::ReportExternalMemoryPressure(const char* gc_reason) { | 904 void Heap::ReportExternalMemoryPressure(const char* gc_reason) { |
| 905 if (incremental_marking()->IsStopped()) { | 905 if (incremental_marking()->IsStopped()) { |
| 906 v8::GCCallbackFlags flags = static_cast<v8::GCCallbackFlags>( |
| 907 kGCCallbackFlagSynchronousPhantomCallbackProcessing | |
| 908 kGCCallbackFlagCollectAllExternalMemory); |
| 906 if (incremental_marking()->CanBeActivated()) { | 909 if (incremental_marking()->CanBeActivated()) { |
| 907 StartIncrementalMarking( | 910 StartIncrementalMarking(i::Heap::kNoGCFlags, flags, gc_reason); |
| 908 i::Heap::kNoGCFlags, | |
| 909 kGCCallbackFlagSynchronousPhantomCallbackProcessing, gc_reason); | |
| 910 } else { | 911 } else { |
| 911 CollectAllGarbage(i::Heap::kNoGCFlags, gc_reason, | 912 CollectAllGarbage(i::Heap::kNoGCFlags, gc_reason, flags); |
| 912 kGCCallbackFlagSynchronousPhantomCallbackProcessing); | |
| 913 } | 913 } |
| 914 } else { | 914 } else { |
| 915 // Incremental marking is turned on an has already been started. | 915 // Incremental marking is turned on an has already been started. |
| 916 | 916 |
| 917 // TODO(mlippautz): Compute the time slice for incremental marking based on | 917 // TODO(mlippautz): Compute the time slice for incremental marking based on |
| 918 // memory pressure. | 918 // memory pressure. |
| 919 double deadline = MonotonicallyIncreasingTimeInMs() + | 919 double deadline = MonotonicallyIncreasingTimeInMs() + |
| 920 FLAG_external_allocation_limit_incremental_time; | 920 FLAG_external_allocation_limit_incremental_time; |
| 921 incremental_marking()->AdvanceIncrementalMarking( | 921 incremental_marking()->AdvanceIncrementalMarking( |
| 922 deadline, | 922 deadline, |
| (...skipping 5538 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6461 } | 6461 } |
| 6462 | 6462 |
| 6463 | 6463 |
| 6464 // static | 6464 // static |
| 6465 int Heap::GetStaticVisitorIdForMap(Map* map) { | 6465 int Heap::GetStaticVisitorIdForMap(Map* map) { |
| 6466 return StaticVisitorBase::GetVisitorId(map); | 6466 return StaticVisitorBase::GetVisitorId(map); |
| 6467 } | 6467 } |
| 6468 | 6468 |
| 6469 } // namespace internal | 6469 } // namespace internal |
| 6470 } // namespace v8 | 6470 } // namespace v8 |
| OLD | NEW |