Bug 186730 - StructureTransitionTable wastes 205KB of HashTable capacity on cnn.com
Summary: StructureTransitionTable wastes 205KB of HashTable capacity on cnn.com
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2018-06-16 12:25 PDT by Simon Fraser (smfr)
Modified: 2019-01-28 21:12 PST (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Simon Fraser (smfr) 2018-06-16 12:25:43 PDT
Using tooling from bug 186698, loading can and running "notifyutil -p com.apple.WebKit.dumpHashTableCapacity" shows:

Wasted capacity: 205296 bytes (used 84624 of 289920 bytes, utilization: 29.19%) - 727 allocations
1   0x116681ba5 WTF::HashTable<std::__1::pair<WTF::UniquedStringImpl*, unsigned int>, WTF::KeyValuePair<std::__1::pair<WTF::UniquedStringImpl*, unsigned int>, JSC::Weak<JSC::Structure> >, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<std::__1::pair<WTF::UniquedStringImpl*, unsigned int>, JSC::Weak<JSC::Structure> > >, JSC::StructureTransitionTable::Hash, WTF::HashMap<std::__1::pair<WTF::UniquedStringImpl*, unsigned int>, JSC::Weak<JSC::Structure>, JSC::StructureTransitionTable::Hash, WTF::HashTraits<std::__1::pair<WTF::UniquedStringImpl*, unsigned int> >, WTF::HashTraits<JSC::Weak<JSC::Structure> > >::KeyValuePairTraits, WTF::HashTraits<std::__1::pair<WTF::UniquedStringImpl*, unsigned int> > >::HashTable()
2   0x116681b85 WTF::HashMap<std::__1::pair<WTF::UniquedStringImpl*, unsigned int>, JSC::Weak<JSC::Structure>, JSC::StructureTransitionTable::Hash, WTF::HashTraits<std::__1::pair<WTF::UniquedStringImpl*, unsigned int> >, WTF::HashTraits<JSC::Weak<JSC::Structure> > >::HashMap()
3   0x116681ae5 WTF::HashMap<std::__1::pair<WTF::UniquedStringImpl*, unsigned int>, JSC::Weak<JSC::Structure>, JSC::StructureTransitionTable::Hash, WTF::HashTraits<std::__1::pair<WTF::UniquedStringImpl*, unsigned int> >, WTF::HashTraits<JSC::Weak<JSC::Structure> > >::HashMap()
4   0x116681a9b JSC::WeakGCMap<std::__1::pair<WTF::UniquedStringImpl*, unsigned int>, JSC::Structure, JSC::StructureTransitionTable::Hash, WTF::HashTraits<std::__1::pair<WTF::UniquedStringImpl*, unsigned int> > >::WeakGCMap(JSC::VM&)
5   0x1166706fd JSC::WeakGCMap<std::__1::pair<WTF::UniquedStringImpl*, unsigned int>, JSC::Structure, JSC::StructureTransitionTable::Hash, WTF::HashTraits<std::__1::pair<WTF::UniquedStringImpl*, unsigned int> > >::WeakGCMap(JSC::VM&)
6   0x116670392 JSC::StructureTransitionTable::add(JSC::VM&, JSC::Structure*)
7   0x11667357f JSC::Structure::addNewPropertyTransition(JSC::VM&, JSC::Structure*, JSC::PropertyName, unsigned int, int&, JSC::PutPropertySlot::Context, JSC::DeferredStructureTransitionWatchpointFire*)
8   0x115bf8787 bool JSC::JSObject::putDirectInternal<(JSC::JSObject::PutMode)0>(JSC::VM&, JSC::PropertyName, JSC::JSValue, unsigned int, JSC::PutPropertySlot&)
Comment 1 Radar WebKit Bug Importer 2018-06-16 12:26:20 PDT
<rdar://problem/41189112>
Comment 2 Simon Fraser (smfr) 2018-06-16 12:44:02 PDT
On nytimes.com:

Wasted capacity: 124056 bytes (used 63720 of 187776 bytes, utilization: 33.93%) - 289 allocations
1   0x116681ba5 WTF::HashTable<std::__1::pair<WTF::UniquedStringImpl*, unsigned int>, WTF::KeyValuePair<std::__1::pair<WTF::UniquedStringImpl*, unsigned int>, JSC::Weak<JSC::Structure> >, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<std::__1::pair<WTF::UniquedStringImpl*, unsigned int>, JSC::Weak<JSC::Structure> > >, JSC::StructureTransitionTable::Hash, WTF::HashMap<std::__1::pair<WTF::UniquedStringImpl*, unsigned int>, JSC::Weak<JSC::Structure>, JSC::StructureTransitionTable::Hash, WTF::HashTraits<std::__1::pair<WTF::UniquedStringImpl*, unsigned int> >, WTF::HashTraits<JSC::Weak<JSC::Structure> > >::KeyValuePairTraits, WTF::HashTraits<std::__1::pair<WTF::UniquedStringImpl*, unsigned int> > >::HashTable()
2   0x116681b85 WTF::HashMap<std::__1::pair<WTF::UniquedStringImpl*, unsigned int>, JSC::Weak<JSC::Structure>, JSC::StructureTransitionTable::Hash, WTF::HashTraits<std::__1::pair<WTF::UniquedStringImpl*, unsigned int> >, WTF::HashTraits<JSC::Weak<JSC::Structure> > >::HashMap()
3   0x116681ae5 WTF::HashMap<std::__1::pair<WTF::UniquedStringImpl*, unsigned int>, JSC::Weak<JSC::Structure>, JSC::StructureTransitionTable::Hash, WTF::HashTraits<std::__1::pair<WTF::UniquedStringImpl*, unsigned int> >, WTF::HashTraits<JSC::Weak<JSC::Structure> > >::HashMap()
4   0x116681a9b JSC::WeakGCMap<std::__1::pair<WTF::UniquedStringImpl*, unsigned int>, JSC::Structure, JSC::StructureTransitionTable::Hash, WTF::HashTraits<std::__1::pair<WTF::UniquedStringImpl*, unsigned int> > >::WeakGCMap(JSC::VM&)
5   0x1166706fd JSC::WeakGCMap<std::__1::pair<WTF::UniquedStringImpl*, unsigned int>, JSC::Structure, JSC::StructureTransitionTable::Hash, WTF::HashTraits<std::__1::pair<WTF::UniquedStringImpl*, unsigned int> > >::WeakGCMap(JSC::VM&)
6   0x116670392 JSC::StructureTransitionTable::add(JSC::VM&, JSC::Structure*)
7   0x11667357f JSC::Structure::addNewPropertyTransition(JSC::VM&, JSC::Structure*, JSC::PropertyName, unsigned int, int&, JSC::PutPropertySlot::Context, JSC::DeferredStructureTransitionWatchpointFire*)
8   0x11536ad9c bool JSC::JSObject::putDirectInternal<(JSC::JSObject::PutMode)1>(JSC::VM&, JSC::PropertyName, JSC::JSValue, unsigned int, JSC::PutPropertySlot&)