| Index: src/heap/heap.cc
|
| diff --git a/src/heap/heap.cc b/src/heap/heap.cc
|
| index a09e52ae752feae32739de9dbb8990d3087170ac..5605291a7dff5bf55c833a9491955c31313e2f56 100644
|
| --- a/src/heap/heap.cc
|
| +++ b/src/heap/heap.cc
|
| @@ -68,8 +68,9 @@ class IdleScavengeObserver : public AllocationObserver {
|
| };
|
|
|
| Heap::Heap()
|
| - : amount_of_external_allocated_memory_(0),
|
| - amount_of_external_allocated_memory_at_last_global_gc_(0),
|
| + : external_memory_(0),
|
| + external_memory_limit_(kExternalAllocationLimit),
|
| + external_memory_at_last_mark_compact_(0),
|
| isolate_(nullptr),
|
| code_range_size_(0),
|
| // semispace_size_ should be a power of 2 and old_generation_size_ should
|
| @@ -383,9 +384,8 @@ void Heap::PrintShortHeapStatistics() {
|
| ", committed: %6" V8PRIdPTR " KB\n",
|
| this->SizeOfObjects() / KB, this->Available() / KB,
|
| this->CommittedMemory() / KB);
|
| - PrintIsolate(
|
| - isolate_, "External memory reported: %6" V8PRIdPTR " KB\n",
|
| - static_cast<intptr_t>(amount_of_external_allocated_memory_ / KB));
|
| + PrintIsolate(isolate_, "External memory reported: %6" V8PRIdPTR " KB\n",
|
| + static_cast<intptr_t>(external_memory_ / KB));
|
| PrintIsolate(isolate_, "Total time spent in GC : %.1f ms\n",
|
| total_gc_time_ms_);
|
| }
|
| @@ -1339,8 +1339,8 @@ bool Heap::PerformGarbageCollection(
|
| intptr_t old_gen_size = PromotedSpaceSizeOfObjects();
|
| if (collector == MARK_COMPACTOR) {
|
| // Register the amount of external allocated memory.
|
| - amount_of_external_allocated_memory_at_last_global_gc_ =
|
| - amount_of_external_allocated_memory_;
|
| + external_memory_at_last_mark_compact_ = external_memory_;
|
| + external_memory_limit_ = external_memory_ + kExternalAllocationLimit;
|
| SetOldGenerationAllocationLimit(old_gen_size, gc_speed, mutator_speed);
|
| } else if (HasLowYoungGenerationAllocationRate() &&
|
| old_generation_size_configured_) {
|
| @@ -4425,8 +4425,8 @@ void Heap::CollectGarbageOnMemoryPressure(const char* source) {
|
| double end = MonotonicallyIncreasingTimeInMs();
|
|
|
| // Estimate how much memory we can free.
|
| - int64_t potential_garbage = (CommittedMemory() - SizeOfObjects()) +
|
| - amount_of_external_allocated_memory_;
|
| + int64_t potential_garbage =
|
| + (CommittedMemory() - SizeOfObjects()) + external_memory_;
|
| // If we can potentially free large amount of memory, then start GC right
|
| // away instead of waiting for memory reducer.
|
| if (potential_garbage >= kGarbageThresholdInBytes &&
|
| @@ -5048,11 +5048,8 @@ intptr_t Heap::PromotedSpaceSizeOfObjects() {
|
|
|
|
|
| int64_t Heap::PromotedExternalMemorySize() {
|
| - if (amount_of_external_allocated_memory_ <=
|
| - amount_of_external_allocated_memory_at_last_global_gc_)
|
| - return 0;
|
| - return amount_of_external_allocated_memory_ -
|
| - amount_of_external_allocated_memory_at_last_global_gc_;
|
| + if (external_memory_ <= external_memory_at_last_mark_compact_) return 0;
|
| + return external_memory_ - external_memory_at_last_mark_compact_;
|
| }
|
|
|
|
|
|
|