Ignore:
Timestamp:
Jul 30, 2011, 4:10:19 PM (14 years ago)
Author:
[email protected]
Message:

Reduce the size of JSGlobalObject slightly
https://bugs.webkit.org/show_bug.cgi?id=65417

Reviewed by Dan Bernstein.

Push a few members that either aren't commonly used,
or aren't frequently accessed into a separate struct.

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::WeakMapsFinalizer::finalize):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::JSGlobalObjectRareData::JSGlobalObjectRareData):
(JSC::JSGlobalObject::createRareDataIfNeeded):
(JSC::JSGlobalObject::setProfileGroup):
(JSC::JSGlobalObject::profileGroup):
(JSC::JSGlobalObject::registerWeakMap):
(JSC::JSGlobalObject::deregisterWeakMap):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h

    r91903 r92058  
    5555   
    5656    class JSGlobalObject : public JSVariableObject {
     57    private:
     58        typedef HashSet<RefPtr<OpaqueJSWeakObjectMap> > WeakMapSet;
     59
     60        class WeakMapsFinalizer : public WeakHandleOwner {
     61        public:
     62            virtual void finalize(Handle<Unknown>, void* context);
     63        };
     64
     65        struct JSGlobalObjectRareData {
     66            JSGlobalObjectRareData()
     67                : profileGroup(0)
     68            {
     69            }
     70
     71            WeakMapSet weakMaps;
     72            unsigned profileGroup;
     73            Weak<JSGlobalObject> weakMapsFinalizer;
     74        };
     75
    5776    protected:
    58         typedef HashSet<RefPtr<OpaqueJSWeakObjectMap> > WeakMapSet;
    5977
    6078        RefPtr<JSGlobalData> m_globalData;
     
    105123        WriteBarrier<Structure> m_internalFunctionStructure;
    106124
    107         unsigned m_profileGroup;
    108125        Debugger* m_debugger;
    109126
    110         WeakMapSet m_weakMaps;
    111         Weak<JSGlobalObject> m_weakMapsFinalizer;
    112         class WeakMapsFinalizer : public WeakHandleOwner {
    113         public:
    114             virtual void finalize(Handle<Unknown>, void* context);
    115         };
     127        OwnPtr<JSGlobalObjectRareData> m_rareData;
    116128        static WeakMapsFinalizer* weakMapsFinalizer();
    117129
     
    122134        bool m_evalEnabled;
    123135
     136        void createRareDataIfNeeded()
     137        {
     138            if (!m_rareData)
     139                m_rareData = adoptPtr(new JSGlobalObjectRareData);
     140        }
     141       
    124142    public:
    125143        static JSGlobalObject* create(JSGlobalData& globalData, Structure* structure)
     
    218236        Structure* stringObjectStructure() const { return m_stringObjectStructure.get(); }
    219237
    220         void setProfileGroup(unsigned value) { m_profileGroup = value; }
    221         unsigned profileGroup() const { return m_profileGroup; }
     238        void setProfileGroup(unsigned value) { createRareDataIfNeeded(); m_rareData->profileGroup = value; }
     239        unsigned profileGroup() const
     240        {
     241            if (!m_rareData)
     242                return 0;
     243            return m_rareData->profileGroup;
     244        }
    222245
    223246        Debugger* debugger() const { return m_debugger; }
     
    255278        void registerWeakMap(OpaqueJSWeakObjectMap* map)
    256279        {
    257             if (!m_weakMapsFinalizer)
    258                 m_weakMapsFinalizer.set(globalData(), this, weakMapsFinalizer());
    259             m_weakMaps.add(map);
     280            createRareDataIfNeeded();
     281            if (!m_rareData->weakMapsFinalizer)
     282                m_rareData->weakMapsFinalizer.set(globalData(), this, weakMapsFinalizer());
     283            m_rareData->weakMaps.add(map);
    260284        }
    261285
    262286        void deregisterWeakMap(OpaqueJSWeakObjectMap* map)
    263287        {
    264             m_weakMaps.remove(map);
     288            if (m_rareData)
     289                m_rareData->weakMaps.remove(map);
    265290        }
    266291
Note: See TracChangeset for help on using the changeset viewer.