Ignore:
Timestamp:
Jan 30, 2011, 5:13:10 PM (14 years ago)
Author:
[email protected]
Message:

Convert markstack to a slot visitor API
https://bugs.webkit.org/show_bug.cgi?id=53219

rolling r77006 and r77020 back in.

File:
1 edited

Legend:

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

    r77044 r77098  
    2828namespace JSC {
    2929
    30     typedef HashMap<unsigned, JSValue> SparseArrayValueMap;
     30    typedef HashMap<unsigned, WriteBarrier<Unknown> > SparseArrayValueMap;
    3131
    3232    // This struct holds the actual data values of an array.  A JSArray object points to it's contained ArrayStorage
     
    4545        bool m_inCompactInitialization;
    4646#endif
    47         JSValue m_vector[1];
     47        WriteBarrier<Unknown> m_vector[1];
    4848    };
    4949
     
    6868        explicit JSArray(NonNullPassRefPtr<Structure>);
    6969        JSArray(NonNullPassRefPtr<Structure>, unsigned initialLength, ArrayCreationMode);
    70         JSArray(NonNullPassRefPtr<Structure>, const ArgList& initialValues);
     70        JSArray(JSGlobalData&, NonNullPassRefPtr<Structure>, const ArgList& initialValues);
    7171        virtual ~JSArray();
    7272
     
    9595        {
    9696            ASSERT(canGetIndex(i));
    97             return m_storage->m_vector[i];
     97            return m_storage->m_vector[i].get();
    9898        }
    9999
    100100        bool canSetIndex(unsigned i) { return i < m_vectorLength; }
    101         void setIndex(unsigned i, JSValue v)
     101        void setIndex(JSGlobalData& globalData, unsigned i, JSValue v)
    102102        {
    103103            ASSERT(canSetIndex(i));
    104104           
    105             JSValue& x = m_storage->m_vector[i];
     105            WriteBarrier<Unknown>& x = m_storage->m_vector[i];
    106106            if (!x) {
    107107                ArrayStorage *storage = m_storage;
     
    110110                    storage->m_length = i + 1;
    111111            }
    112             x = v;
    113         }
    114        
    115         void uncheckedSetIndex(unsigned i, JSValue v)
     112            x.set(globalData, this, v);
     113        }
     114       
     115        void uncheckedSetIndex(JSGlobalData& globalData, unsigned i, JSValue v)
    116116        {
    117117            ASSERT(canSetIndex(i));
     
    120120            ASSERT(storage->m_inCompactInitialization);
    121121#endif
    122             storage->m_vector[i] = v;
     122            storage->m_vector[i].set(globalData, this, v);
    123123        }
    124124
     
    195195            SparseArrayValueMap::iterator end = map->end();
    196196            for (SparseArrayValueMap::iterator it = map->begin(); it != end; ++it)
    197                 markStack.append(it->second);
     197                markStack.append(&it->second);
    198198        }
    199199    }
Note: See TracChangeset for help on using the changeset viewer.