Remove serializer-specific hash table size heuristic.
authoryangguo <yangguo@chromium.org>
Wed, 5 Aug 2015 12:50:46 +0000 (05:50 -0700)
committerCommit bot <commit-bot@chromium.org>
Wed, 5 Aug 2015 12:51:49 +0000 (12:51 +0000)
The heuristic can cause weird behavior when bootstrapping.
The memory savings is not worth this hassle.

Committed: https://crrev.com/fc80f29a582b758d14aae864232624ca45e47ddc
Cr-Commit-Position: refs/heads/master@{#30019}

Review URL: https://codereview.chromium.org/1265983006

Cr-Commit-Position: refs/heads/master@{#30026}

src/api.cc
src/bootstrapper.cc
src/isolate.h
src/objects-inl.h
src/objects.cc
src/objects.h
test/mjsunit/mjsunit.status

index ceadd4ed8b62776d355a0ea96f8efe2702cd444c..2b874ac4885e2c84c61e0d6cf88556c120435f0c 100644 (file)
@@ -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> context;
     i::Snapshot::Metadata metadata;
     {
       HandleScope handle_scope(isolate);
       Local<Context> 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);
index c46cc2e525455951a6f7f0613e0e3153eb113b33..37beeff7dd361fe53539ff55b07bcae82976100b 100644 (file)
@@ -2408,7 +2408,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
index 7eac6edd25165f8937cf6ccfb59e2a8d89c11c4e..1451cf58c8ec07c8382d158ccd62cfe0ea81c8b9 100644 (file)
@@ -384,7 +384,6 @@ typedef List<HeapObject*> 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)                        \
index ffe4d65afd180385b0805d72770b15c2b471c8b7..3a9fe2991decc352c34f79a0635ce1968a57539f 100644 (file)
@@ -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 <typename Derived, typename Shape, typename Key>
 int HashTable<Derived, Shape, Key>::FindEntry(Key key) {
   return FindEntry(GetIsolate(), key);
index aea01dc8a93473b3eb09fcad2f069845e304a41b..687426bc76d6cdf7a9eb63c48ee077091243f97e 100644 (file)
@@ -13438,9 +13438,7 @@ Handle<Derived> HashTable<Derived, Shape, Key>::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);
   }
index 3912d04543f4399a09b7b33ef59882a094dcee16..6d052ef3a6d43cb43a2e874393298c7897e2bfe3 100644 (file)
@@ -2950,9 +2950,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) {
index 4929b44bba271a156188cffe860012bdc4f453f1..d762bfbb19cfddd97e486d0d652e874c073ea788 100644 (file)
 
   # BUG(v8:4237)
   'regress/regress-3976': [SKIP],
+
+  # BUG(v8:4359)
+  'strong/load-proxy': [SKIP],
 }],  # 'gc_stress == True'
 
 ##############################################################################