| Index: src/heap.h
|
| diff --git a/src/heap.h b/src/heap.h
|
| index a0c85e5c7728e6df8dfbe6720a7070b0d5c85a93..ee01c22a508107bc541ca23c38f4f07dfd3446af 100644
|
| --- a/src/heap.h
|
| +++ b/src/heap.h
|
| @@ -617,9 +617,6 @@ class Heap {
|
| return old_data_space_->allocation_limit_address();
|
| }
|
|
|
| - // Uncommit unused semi space.
|
| - bool UncommitFromSpace() { return new_space_.UncommitFromSpace(); }
|
| -
|
| // Allocates and initializes a new JavaScript object based on a
|
| // constructor.
|
| // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
|
| @@ -1175,19 +1172,6 @@ class Heap {
|
| // Converts the given boolean condition to JavaScript boolean value.
|
| inline Object* ToBoolean(bool condition);
|
|
|
| - // Code that should be run before and after each GC. Includes some
|
| - // reporting/verification activities when compiled with DEBUG set.
|
| - void GarbageCollectionPrologue();
|
| - void GarbageCollectionEpilogue();
|
| -
|
| - // Performs garbage collection operation.
|
| - // Returns whether there is a chance that another major GC could
|
| - // collect more garbage.
|
| - bool CollectGarbage(AllocationSpace space,
|
| - GarbageCollector collector,
|
| - const char* gc_reason,
|
| - const char* collector_reason);
|
| -
|
| // Performs garbage collection operation.
|
| // Returns whether there is a chance that another major GC could
|
| // collect more garbage.
|
| @@ -1429,9 +1413,6 @@ class Heap {
|
| #endif
|
| }
|
|
|
| - // Fill in bogus values in from space
|
| - void ZapFromSpace();
|
| -
|
| // Print short heap statistics.
|
| void PrintShortHeapStatistics();
|
|
|
| @@ -1475,9 +1456,6 @@ class Heap {
|
| static inline void ScavengePointer(HeapObject** p);
|
| static inline void ScavengeObject(HeapObject** p, HeapObject* object);
|
|
|
| - // Commits from space if it is uncommitted.
|
| - void EnsureFromSpaceIsCommitted();
|
| -
|
| // Support for partial snapshots. After calling this we have a linear
|
| // space to write objects in each space.
|
| void ReserveSpace(int *sizes, Address* addresses);
|
| @@ -1497,8 +1475,8 @@ class Heap {
|
|
|
| // Adjusts the amount of registered external memory.
|
| // Returns the adjusted value.
|
| - inline intptr_t AdjustAmountOfExternalAllocatedMemory(
|
| - intptr_t change_in_bytes);
|
| + inline int64_t AdjustAmountOfExternalAllocatedMemory(
|
| + int64_t change_in_bytes);
|
|
|
| // This is only needed for testing high promotion mode.
|
| void SetNewSpaceHighPromotionModeActive(bool mode) {
|
| @@ -1517,7 +1495,10 @@ class Heap {
|
| }
|
|
|
| inline intptr_t PromotedTotalSize() {
|
| - return PromotedSpaceSizeOfObjects() + PromotedExternalMemorySize();
|
| + int64_t total = PromotedSpaceSizeOfObjects() + PromotedExternalMemorySize();
|
| + if (total > kMaxInt) return static_cast<intptr_t>(kMaxInt);
|
| + if (total < 0) return 0;
|
| + return static_cast<intptr_t>(total);
|
| }
|
|
|
| inline intptr_t OldGenerationSpaceAvailable() {
|
| @@ -1547,6 +1528,13 @@ class Heap {
|
| return Min(limit, halfway_to_the_max);
|
| }
|
|
|
| + // Indicates whether inline bump-pointer allocation has been disabled.
|
| + bool inline_allocation_disabled() { return inline_allocation_disabled_; }
|
| +
|
| + // Switch whether inline bump-pointer allocation should be used.
|
| + void EnableInlineAllocation();
|
| + void DisableInlineAllocation();
|
| +
|
| // Implements the corresponding V8 API function.
|
| bool IdleNotification(int hint);
|
|
|
| @@ -1714,12 +1702,7 @@ class Heap {
|
| old_pointer_space()->IsLazySweepingComplete();
|
| }
|
|
|
| - bool AdvanceSweepers(int step_size) {
|
| - ASSERT(!FLAG_parallel_sweeping && !FLAG_concurrent_sweeping);
|
| - bool sweeping_complete = old_data_space()->AdvanceSweeper(step_size);
|
| - sweeping_complete &= old_pointer_space()->AdvanceSweeper(step_size);
|
| - return sweeping_complete;
|
| - }
|
| + bool AdvanceSweepers(int step_size);
|
|
|
| bool EnsureSweepersProgressed(int step_size) {
|
| bool sweeping_complete = old_data_space()->EnsureSweeperProgress(step_size);
|
| @@ -1800,7 +1783,7 @@ class Heap {
|
|
|
| bool flush_monomorphic_ics() { return flush_monomorphic_ics_; }
|
|
|
| - intptr_t amount_of_external_allocated_memory() {
|
| + int64_t amount_of_external_allocated_memory() {
|
| return amount_of_external_allocated_memory_;
|
| }
|
|
|
| @@ -1848,23 +1831,19 @@ class Heap {
|
| // only when FLAG_concurrent_recompilation is true.
|
| class RelocationLock {
|
| public:
|
| - explicit RelocationLock(Heap* heap);
|
| + explicit RelocationLock(Heap* heap) : heap_(heap) {
|
| + if (FLAG_concurrent_recompilation) {
|
| + heap_->relocation_mutex_->Lock();
|
| + }
|
| + }
|
| +
|
|
|
| ~RelocationLock() {
|
| if (FLAG_concurrent_recompilation) {
|
| -#ifdef DEBUG
|
| - heap_->relocation_mutex_locked_by_optimizer_thread_ = false;
|
| -#endif // DEBUG
|
| heap_->relocation_mutex_->Unlock();
|
| }
|
| }
|
|
|
| -#ifdef DEBUG
|
| - static bool IsLockedByOptimizerThread(Heap* heap) {
|
| - return heap->relocation_mutex_locked_by_optimizer_thread_;
|
| - }
|
| -#endif // DEBUG
|
| -
|
| private:
|
| Heap* heap_;
|
| };
|
| @@ -1930,7 +1909,7 @@ class Heap {
|
| int gc_post_processing_depth_;
|
|
|
| // Returns the amount of external memory registered since last global gc.
|
| - intptr_t PromotedExternalMemorySize();
|
| + int64_t PromotedExternalMemorySize();
|
|
|
| unsigned int ms_count_; // how many mark-sweep collections happened
|
| unsigned int gc_count_; // how many gc happened
|
| @@ -1984,15 +1963,19 @@ class Heap {
|
|
|
| // The amount of external memory registered through the API kept alive
|
| // by global handles
|
| - intptr_t amount_of_external_allocated_memory_;
|
| + int64_t amount_of_external_allocated_memory_;
|
|
|
| // Caches the amount of external memory registered at the last global gc.
|
| - intptr_t amount_of_external_allocated_memory_at_last_global_gc_;
|
| + int64_t amount_of_external_allocated_memory_at_last_global_gc_;
|
|
|
| // Indicates that an allocation has failed in the old generation since the
|
| // last GC.
|
| bool old_gen_exhausted_;
|
|
|
| + // Indicates that inline bump-pointer allocation has been globally disabled
|
| + // for all spaces. This is used to disable allocations in generated code.
|
| + bool inline_allocation_disabled_;
|
| +
|
| // Weak list heads, threaded through the objects.
|
| // List heads are initilized lazily and contain the undefined_value at start.
|
| Object* native_contexts_list_;
|
| @@ -2075,10 +2058,23 @@ class Heap {
|
| gc_safe_size_of_old_object_ = &GcSafeSizeOfOldObject;
|
| }
|
|
|
| + // Code that should be run before and after each GC. Includes some
|
| + // reporting/verification activities when compiled with DEBUG set.
|
| + void GarbageCollectionPrologue();
|
| + void GarbageCollectionEpilogue();
|
| +
|
| // Checks whether a global GC is necessary
|
| GarbageCollector SelectGarbageCollector(AllocationSpace space,
|
| const char** reason);
|
|
|
| + // Performs garbage collection operation.
|
| + // Returns whether there is a chance that another major GC could
|
| + // collect more garbage.
|
| + bool CollectGarbage(AllocationSpace space,
|
| + GarbageCollector collector,
|
| + const char* gc_reason,
|
| + const char* collector_reason);
|
| +
|
| // Performs garbage collection
|
| // Returns whether there is a chance another major GC could
|
| // collect more garbage.
|
| @@ -2124,6 +2120,7 @@ class Heap {
|
| NO_INLINE(void CreateJSConstructEntryStub());
|
|
|
| void CreateFixedStubs();
|
| + void CreateStubsRequiringBuiltins();
|
|
|
| MUST_USE_RESULT MaybeObject* CreateOddball(const char* to_string,
|
| Object* to_number,
|
| @@ -2157,6 +2154,15 @@ class Heap {
|
| // Performs a minor collection in new generation.
|
| void Scavenge();
|
|
|
| + // Commits from space if it is uncommitted.
|
| + void EnsureFromSpaceIsCommitted();
|
| +
|
| + // Uncommit unused semi space.
|
| + bool UncommitFromSpace() { return new_space_.UncommitFromSpace(); }
|
| +
|
| + // Fill in bogus values in from space
|
| + void ZapFromSpace();
|
| +
|
| static String* UpdateNewSpaceReferenceInExternalStringTableEntry(
|
| Heap* heap,
|
| Object** pointer);
|
|
|