Changeset 34907 in webkit
- Timestamp:
- Jul 1, 2008 12:01:51 AM (16 years ago)
- Location:
- trunk/JavaScriptCore
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r34906 r34907 1 2008-06-30 Geoffrey Garen <ggaren@apple.com> 2 3 Reviewed by Oliver Hunt. 4 5 Fixed a global object leak caused by the switch to one register file. 6 7 Don't unconditionally mark the register file, since that logically 8 makes all global variables GC roots, even when their global object is 9 no longer reachable. 10 11 Instead, make the global object associated with the register file 12 responsible for marking the register file. 13 1 14 2008-06-30 Geoffrey Garen <ggaren@apple.com> 2 15 -
trunk/JavaScriptCore/VM/Machine.h
r34906 r34907 118 118 m_timeoutCheckCount = 0; 119 119 } 120 void mark(Heap* heap) { m_registerFile.mark(heap); }121 120 122 121 private: -
trunk/JavaScriptCore/kjs/JSGlobalData.cpp
r34838 r34907 59 59 JSGlobalData::JSGlobalData() 60 60 : machine(new Machine) 61 , heap(new Heap (machine))61 , heap(new Heap) 62 62 #if USE(MULTIPLE_THREADS) 63 63 , arrayTable(new HashTable(KJS::arrayTable)) -
trunk/JavaScriptCore/kjs/JSGlobalObject.cpp
r34906 r34907 347 347 (*it)->mark(); 348 348 349 RegisterFile& registerFile = globalData()->machine->registerFile(); 350 if (registerFile.globalObject() == this) 351 registerFile.mark(globalData()->heap); 352 349 353 markIfNeeded(d()->globalExec->exception()); 350 354 -
trunk/JavaScriptCore/kjs/collector.cpp
r34839 r34907 91 91 static void freeHeap(CollectorHeap*); 92 92 93 Heap::Heap( Machine* machine)93 Heap::Heap() 94 94 : m_markListSet(0) 95 , m_machine(machine)96 95 { 97 96 memset(&primaryHeap, 0, sizeof(CollectorHeap)); … … 909 908 markStackObjectsConservatively(); 910 909 markProtectedObjects(); 911 m_machine->mark(this);912 910 if (m_markListSet && m_markListSet->size()) 913 911 ArgList::markLists(*m_markListSet); -
trunk/JavaScriptCore/kjs/collector.h
r34838 r34907 108 108 friend class Machine; 109 109 friend class JSGlobalData; 110 Heap( Machine*);110 Heap(); 111 111 ~Heap(); 112 112 … … 124 124 ProtectCountSet protectedValues; 125 125 HashSet<ArgList*>* m_markListSet; 126 Machine* m_machine;127 126 }; 128 127
Note: See TracChangeset
for help on using the changeset viewer.