Changeset 76078 in webkit


Ignore:
Timestamp:
Jan 18, 2011, 3:45:34 PM (15 years ago)
Author:
[email protected]
Message:

2011-01-18 Geoffrey Garen <[email protected]>

Reviewed by Darin Adler.

Removed RegisterFile::markGlobals because it was obtuse, and it
unnecessarily relied on conservative marking.
https://bugs.webkit.org/show_bug.cgi?id=52668

  • interpreter/RegisterFile.h: Removed markGlobals.
  • runtime/JSActivation.cpp: (JSC::JSActivation::markChildren): Added a comment explaning why some JSActivations don't always mark their registers arrays.
  • runtime/JSGlobalObject.cpp: (JSC::JSGlobalObject::markChildren): Instead of calling markGlobals, mark the registers array directly.
Location:
trunk/Source/JavaScriptCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r76076 r76078  
     12011-01-18  Geoffrey Garen  <[email protected]>
     2
     3        Reviewed by Darin Adler.
     4
     5        Removed RegisterFile::markGlobals because it was obtuse, and it
     6        unnecessarily relied on conservative marking.
     7        https://bugs.webkit.org/show_bug.cgi?id=52668
     8
     9        * interpreter/RegisterFile.h: Removed markGlobals.
     10
     11        * runtime/JSActivation.cpp:
     12        (JSC::JSActivation::markChildren): Added a comment explaning why some
     13        JSActivations don't always mark their registers arrays.
     14
     15        * runtime/JSGlobalObject.cpp:
     16        (JSC::JSGlobalObject::markChildren): Instead of calling markGlobals, mark
     17        the registers array directly.
     18
    1192011-01-18  Michael Saboff  <[email protected]>
    220
  • trunk/Source/JavaScriptCore/interpreter/RegisterFile.h

    r75443 r76078  
    132132        Register* lastGlobal() const { return m_start - m_numGlobals; }
    133133       
    134         void markGlobals(MarkStack& markStack, Heap* heap) { heap->markConservatively(markStack, lastGlobal(), m_start); }
    135134        void markCallFrames(MarkStack& markStack, Heap* heap) { heap->markConservatively(markStack, m_start, m_end); }
    136135
  • trunk/Source/JavaScriptCore/runtime/JSActivation.cpp

    r72442 r76078  
    5454    Base::markChildren(markStack);
    5555
     56    // No need to mark our registers if they're still in the RegisterFile.
    5657    Register* registerArray = d()->registerArray.get();
    5758    if (!registerArray)
  • trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp

    r74454 r76078  
    350350        (*it)->markAggregate(markStack);
    351351
    352     RegisterFile& registerFile = globalData().interpreter->registerFile();
    353     if (registerFile.globalObject() == this)
    354         registerFile.markGlobals(markStack, &globalData().heap);
    355 
    356352    markIfNeeded(markStack, d()->regExpConstructor);
    357353    markIfNeeded(markStack, d()->errorConstructor);
     
    398394    // guaranteed to be referenced elsewhere.
    399395
    400     Register* registerArray = d()->registerArray.get();
    401     if (!registerArray)
    402         return;
    403 
    404     size_t size = d()->registerArraySize;
    405     markStack.appendValues(reinterpret_cast<JSValue*>(registerArray), size);
     396    markStack.appendValues(d()->registers - symbolTable().size(), symbolTable().size());
    406397}
    407398
Note: See TracChangeset for help on using the changeset viewer.