Commit 726b632f authored by ggaren@apple.com's avatar ggaren@apple.com

2011-03-14 Geoffrey Garen <ggaren@apple.com>

        Reviewed by Oliver Hunt.

        Made the global object moving-GC-safe
        https://bugs.webkit.org/show_bug.cgi?id=56348
        
        SunSpider reports no change.

        * runtime/JSGlobalObject.cpp:
        (JSC::JSGlobalObject::markChildren): Removed a dubious comment that
        suggested we do not need to visit all our references during GC, since
        that is not true in a moving GC.

        Re-sorted data members by type, removed one duplicate, and added back
        the one missing mark I found.

        * runtime/JSGlobalObject.h: Re-sorted data members by type.


git-svn-id: svn://svn.chromium.org/blink/trunk@81100 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent ce6e393f
2011-03-14 Geoffrey Garen <ggaren@apple.com>
Reviewed by Oliver Hunt.
Made the global object moving-GC-safe
https://bugs.webkit.org/show_bug.cgi?id=56348
SunSpider reports no change.
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::markChildren): Removed a dubious comment that
suggested we do not need to visit all our references during GC, since
that is not true in a moving GC.
Re-sorted data members by type, removed one duplicate, and added back
the one missing mark I found.
* runtime/JSGlobalObject.h: Re-sorted data members by type.
2011-03-14 Geoffrey Garen <ggaren@apple.com> 2011-03-14 Geoffrey Garen <ggaren@apple.com>
Reviewed by Oliver Hunt. Reviewed by Oliver Hunt.
......
...@@ -316,8 +316,9 @@ void JSGlobalObject::resetPrototype(JSValue prototype) ...@@ -316,8 +316,9 @@ void JSGlobalObject::resetPrototype(JSValue prototype)
void JSGlobalObject::markChildren(MarkStack& markStack) void JSGlobalObject::markChildren(MarkStack& markStack)
{ {
JSVariableObject::markChildren(markStack); JSVariableObject::markChildren(markStack);
markIfNeeded(markStack, &m_globalScopeChain); markIfNeeded(markStack, &m_globalScopeChain);
markIfNeeded(markStack, &m_methodCallDummy);
markIfNeeded(markStack, &m_regExpConstructor); markIfNeeded(markStack, &m_regExpConstructor);
markIfNeeded(markStack, &m_errorConstructor); markIfNeeded(markStack, &m_errorConstructor);
...@@ -341,9 +342,6 @@ void JSGlobalObject::markChildren(MarkStack& markStack) ...@@ -341,9 +342,6 @@ void JSGlobalObject::markChildren(MarkStack& markStack)
markIfNeeded(markStack, &m_datePrototype); markIfNeeded(markStack, &m_datePrototype);
markIfNeeded(markStack, &m_regExpPrototype); markIfNeeded(markStack, &m_regExpPrototype);
markIfNeeded(markStack, &m_methodCallDummy);
markIfNeeded(markStack, m_errorStructure);
markIfNeeded(markStack, m_argumentsStructure); markIfNeeded(markStack, m_argumentsStructure);
markIfNeeded(markStack, m_arrayStructure); markIfNeeded(markStack, m_arrayStructure);
markIfNeeded(markStack, m_booleanObjectStructure); markIfNeeded(markStack, m_booleanObjectStructure);
...@@ -358,9 +356,7 @@ void JSGlobalObject::markChildren(MarkStack& markStack) ...@@ -358,9 +356,7 @@ void JSGlobalObject::markChildren(MarkStack& markStack)
markIfNeeded(markStack, m_regExpMatchesArrayStructure); markIfNeeded(markStack, m_regExpMatchesArrayStructure);
markIfNeeded(markStack, m_regExpStructure); markIfNeeded(markStack, m_regExpStructure);
markIfNeeded(markStack, m_stringObjectStructure); markIfNeeded(markStack, m_stringObjectStructure);
markIfNeeded(markStack, m_internalFunctionStructure);
// No need to mark the other structures, because their prototypes are all
// guaranteed to be referenced elsewhere.
if (m_registerArray) { if (m_registerArray) {
// Outside the execution of global code, when our variables are torn off, // Outside the execution of global code, when our variables are torn off,
......
...@@ -56,15 +56,13 @@ namespace JSC { ...@@ -56,15 +56,13 @@ namespace JSC {
protected: protected:
typedef HashSet<RefPtr<OpaqueJSWeakObjectMap> > WeakMapSet; typedef HashSet<RefPtr<OpaqueJSWeakObjectMap> > WeakMapSet;
size_t m_registerArraySize; RefPtr<JSGlobalData> m_globalData;
JSGlobalObject* m_next; size_t m_registerArraySize;
JSGlobalObject* m_prev; Register m_globalCallFrame[RegisterFile::CallFrameHeaderSize];
Debugger* m_debugger;
WriteBarrier<ScopeChainNode> m_globalScopeChain; WriteBarrier<ScopeChainNode> m_globalScopeChain;
Register m_globalCallFrame[RegisterFile::CallFrameHeaderSize]; WriteBarrier<JSObject> m_methodCallDummy;
WriteBarrier<RegExpConstructor> m_regExpConstructor; WriteBarrier<RegExpConstructor> m_regExpConstructor;
WriteBarrier<ErrorConstructor> m_errorConstructor; WriteBarrier<ErrorConstructor> m_errorConstructor;
...@@ -88,8 +86,6 @@ namespace JSC { ...@@ -88,8 +86,6 @@ namespace JSC {
WriteBarrier<DatePrototype> m_datePrototype; WriteBarrier<DatePrototype> m_datePrototype;
WriteBarrier<RegExpPrototype> m_regExpPrototype; WriteBarrier<RegExpPrototype> m_regExpPrototype;
WriteBarrier<JSObject> m_methodCallDummy;
RefPtr<Structure> m_argumentsStructure; RefPtr<Structure> m_argumentsStructure;
RefPtr<Structure> m_arrayStructure; RefPtr<Structure> m_arrayStructure;
RefPtr<Structure> m_booleanObjectStructure; RefPtr<Structure> m_booleanObjectStructure;
...@@ -106,14 +102,14 @@ namespace JSC { ...@@ -106,14 +102,14 @@ namespace JSC {
RefPtr<Structure> m_stringObjectStructure; RefPtr<Structure> m_stringObjectStructure;
RefPtr<Structure> m_internalFunctionStructure; RefPtr<Structure> m_internalFunctionStructure;
SymbolTable m_symbolTable;
unsigned m_profileGroup; unsigned m_profileGroup;
Debugger* m_debugger;
RefPtr<JSGlobalData> m_globalData;
WeakMapSet m_weakMaps; WeakMapSet m_weakMaps;
WeakRandom m_weakRandom; WeakRandom m_weakRandom;
SymbolTable m_symbolTable;
public: public:
void* operator new(size_t, JSGlobalData*); void* operator new(size_t, JSGlobalData*);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment