From a246e296c6366dcd0a2d8aa0df973d57093178f6 Mon Sep 17 00:00:00 2001 From: yangguo Date: Tue, 4 Aug 2015 03:56:35 -0700 Subject: [PATCH] Remove serializer-specific hash table size heuristic. The heuristic can cause weird behavior when bootstrapping. The memory savings is not worth this hassle. Review URL: https://codereview.chromium.org/1265983006 Cr-Commit-Position: refs/heads/master@{#29992} --- src/api.cc | 2 -- src/bootstrapper.cc | 3 ++- src/isolate.h | 1 - src/objects-inl.h | 7 ------- src/objects.cc | 4 +--- src/objects.h | 3 --- 6 files changed, 3 insertions(+), 17 deletions(-) diff --git a/src/api.cc b/src/api.cc index 586fd86..524b71d 100644 --- a/src/api.cc +++ b/src/api.cc @@ -367,14 +367,12 @@ StartupData V8::CreateSnapshotDataBlob(const char* custom_source) { base::ElapsedTimer timer; timer.Start(); Isolate::Scope isolate_scope(isolate); - internal_isolate->set_creating_default_snapshot(true); internal_isolate->Init(NULL); Persistent context; i::Snapshot::Metadata metadata; { HandleScope handle_scope(isolate); Local new_context = Context::New(isolate); - internal_isolate->set_creating_default_snapshot(false); context.Reset(isolate, new_context); if (custom_source != NULL) { metadata.set_embeds_script(true); diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc index a0d6282..2ba4d30 100644 --- a/src/bootstrapper.cc +++ b/src/bootstrapper.cc @@ -2413,7 +2413,8 @@ bool Genesis::InstallNatives(ContextType context_type) { InstallNativeFunctions(); auto function_cache = - ObjectHashTable::New(isolate(), ApiNatives::kInitialFunctionCacheSize); + ObjectHashTable::New(isolate(), ApiNatives::kInitialFunctionCacheSize, + USE_CUSTOM_MINIMUM_CAPACITY); native_context()->set_function_cache(*function_cache); // Store the map for the string prototype after the natives has been compiled diff --git a/src/isolate.h b/src/isolate.h index a11f75a..fe1f51b 100644 --- a/src/isolate.h +++ b/src/isolate.h @@ -385,7 +385,6 @@ typedef List DebugObjectCache; V(uint32_t, per_isolate_assert_data, 0xFFFFFFFFu) \ V(PromiseRejectCallback, promise_reject_callback, NULL) \ V(const v8::StartupData*, snapshot_blob, NULL) \ - V(bool, creating_default_snapshot, false) \ ISOLATE_INIT_SIMULATOR_LIST(V) #define THREAD_LOCAL_TOP_ACCESSOR(type, name) \ diff --git a/src/objects-inl.h b/src/objects-inl.h index ffe4d65..3a9fe29 100644 --- a/src/objects-inl.h +++ b/src/objects-inl.h @@ -2996,13 +2996,6 @@ int HashTableBase::ComputeCapacity(int at_least_space_for) { } -int HashTableBase::ComputeCapacityForSerialization(int at_least_space_for) { - const int kMinCapacity = 1; - int capacity = base::bits::RoundUpToPowerOfTwo32(at_least_space_for); - return Max(capacity, kMinCapacity); -} - - template int HashTable::FindEntry(Key key) { return FindEntry(GetIsolate(), key); diff --git a/src/objects.cc b/src/objects.cc index 51675d4..3fbb68b 100644 --- a/src/objects.cc +++ b/src/objects.cc @@ -13452,9 +13452,7 @@ Handle HashTable::New( int capacity = (capacity_option == USE_CUSTOM_MINIMUM_CAPACITY) ? at_least_space_for - : isolate->creating_default_snapshot() - ? ComputeCapacityForSerialization(at_least_space_for) - : ComputeCapacity(at_least_space_for); + : ComputeCapacity(at_least_space_for); if (capacity > HashTable::kMaxCapacity) { v8::internal::Heap::FatalProcessOutOfMemory("invalid table size", true); } diff --git a/src/objects.h b/src/objects.h index e80ad0a..94d1173 100644 --- a/src/objects.h +++ b/src/objects.h @@ -2955,9 +2955,6 @@ class HashTableBase : public FixedArray { // number of elements. May be more than HashTable::kMaxCapacity. static inline int ComputeCapacity(int at_least_space_for); - // Use a different heuristic to compute capacity when serializing. - static inline int ComputeCapacityForSerialization(int at_least_space_for); - // Tells whether k is a real key. The hole and undefined are not allowed // as keys and can be used to indicate missing or deleted elements. bool IsKey(Object* k) { -- 2.7.4