Changeset 76454 in webkit
- Timestamp:
- Jan 22, 2011 12:11:22 PM (13 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 2 added
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/Android.mk
r76185 r76454 128 128 runtime/Lookup.cpp \ 129 129 runtime/MachineStackMarker.cpp \ 130 runtime/ConservativeSet.cpp \ 130 131 runtime/MarkStack.cpp \ 131 132 runtime/MarkStackPosix.cpp \ -
trunk/Source/JavaScriptCore/CMakeLists.txt
r76185 r76454 138 138 runtime/Lookup.cpp 139 139 runtime/MachineStackMarker.cpp 140 runtime/ConservativeSet.cpp 140 141 runtime/MarkStack.cpp 141 142 runtime/MathObject.cpp -
trunk/Source/JavaScriptCore/ChangeLog
r76441 r76454 1 2011-01-22 Geoffrey Garen <ggaren@apple.com> 2 3 Reviewed by Geoffrey Garen. 4 5 Rubber-stamped by Maciej Stachowiak. 6 7 A few of Maciej's review suggestions for my last patch. 8 https://bugs.webkit.org/show_bug.cgi?id=52946 9 10 SunSpider reports no change. 11 12 * Android.mk: 13 * CMakeLists.txt: 14 * GNUmakefile.am: 15 * JavaScriptCore.gypi: 16 * JavaScriptCore.pro: 17 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: 18 * JavaScriptCore.xcodeproj/project.pbxproj: Updated build systems. 19 20 * runtime/ConservativeSet.cpp: Added. 21 (JSC::isPointerAligned): 22 (JSC::ConservativeSet::add): 23 * runtime/ConservativeSet.h: Added. 24 (JSC::ConservativeSet::ConservativeSet): 25 (JSC::ConservativeSet::mark): Split ConservativeSet out into its own 26 file, and moved the conservative check into ConservativeSet::add, making 27 ConservativeSet's responsibility clearer. 28 29 * runtime/Heap.cpp: 30 (JSC::Heap::markRoots): 31 * runtime/MachineStackMarker.cpp: 32 (JSC::MachineStackMarker::markCurrentThreadConservativelyInternal): 33 (JSC::MachineStackMarker::markOtherThreadConservatively): 34 * runtime/MachineStackMarker.h: 35 * runtime/MarkStack.h: Updated for changes above. 36 1 37 2011-01-22 Patrick Gansterer <paroga@webkit.org> 2 38 -
trunk/Source/JavaScriptCore/GNUmakefile.am
r76185 r76454 344 344 Source/JavaScriptCore/runtime/MachineStackMarker.cpp \ 345 345 Source/JavaScriptCore/runtime/MachineStackMarker.h \ 346 Source/JavaScriptCore/runtime/ConservativeSet.cpp \ 347 Source/JavaScriptCore/runtime/ConservativeSet.h \ 346 348 Source/JavaScriptCore/runtime/MarkStack.cpp \ 347 349 Source/JavaScriptCore/runtime/MarkStack.h \ -
trunk/Source/JavaScriptCore/JavaScriptCore.gypi
r76185 r76454 281 281 'runtime/MachineStackMarker.cpp', 282 282 'runtime/MachineStackMarker.h', 283 'runtime/ConservativeSet.cpp', 284 'runtime/ConservativeSet.h', 283 285 'runtime/MarkStack.cpp', 284 286 'runtime/MarkStack.h', -
trunk/Source/JavaScriptCore/JavaScriptCore.pro
r76185 r76454 180 180 runtime/MarkStackSymbian.cpp \ 181 181 runtime/MarkStackWin.cpp \ 182 runtime/ConservativeSet.cpp \ 182 183 runtime/MarkStack.cpp \ 183 184 runtime/MathObject.cpp \ -
trunk/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj
r76185 r76454 1003 1003 </File> 1004 1004 <File 1005 RelativePath="..\..\runtime\ConservativeSet.cpp" 1006 > 1007 </File> 1008 <File 1009 RelativePath="..\..\runtime\ConservativeSet.h" 1010 > 1011 </File> 1012 <File 1005 1013 RelativePath="..\..\runtime\MarkStack.cpp" 1006 1014 > -
trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
r76185 r76454 123 123 14469DEE107EC7E700650446 /* UString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F692A8850255597D01FF60F7 /* UString.cpp */; }; 124 124 146AAB380B66A94400E55F16 /* JSStringRefCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 146AAB370B66A94400E55F16 /* JSStringRefCF.cpp */; }; 125 146B16D812EB5B59001BEC1B /* ConservativeSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 146B14DB12EB5B12001BEC1B /* ConservativeSet.cpp */; }; 125 126 146FE51211A710430087AE66 /* JITCall32_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 146FE51111A710430087AE66 /* JITCall32_64.cpp */; }; 126 127 147B83AC0E6DB8C9004775A4 /* BatchedTransitionOptimizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 147B83AA0E6DB8C9004775A4 /* BatchedTransitionOptimizer.h */; }; … … 709 710 146AAB2A0B66A84900E55F16 /* JSStringRefCF.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSStringRefCF.h; sourceTree = "<group>"; }; 710 711 146AAB370B66A94400E55F16 /* JSStringRefCF.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSStringRefCF.cpp; sourceTree = "<group>"; }; 712 146B14DB12EB5B12001BEC1B /* ConservativeSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ConservativeSet.cpp; sourceTree = "<group>"; }; 711 713 146FE51111A710430087AE66 /* JITCall32_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITCall32_64.cpp; sourceTree = "<group>"; }; 712 714 14760863099C633800437128 /* JSImmediate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSImmediate.cpp; sourceTree = "<group>"; }; … … 726 728 149559ED0DDCDDF700648087 /* DebuggerCallFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DebuggerCallFrame.cpp; sourceTree = "<group>"; }; 727 729 149B24FF0D8AF6D1009CB8C7 /* Register.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Register.h; sourceTree = "<group>"; }; 730 149DAAF212EB559D0083B12B /* ConservativeSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConservativeSet.h; sourceTree = "<group>"; }; 728 731 14A1563010966365006FA260 /* DateInstanceCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateInstanceCache.h; sourceTree = "<group>"; }; 729 732 14A23D6C0F4E19CE0023CDAD /* JITStubs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITStubs.cpp; sourceTree = "<group>"; }; … … 1709 1712 969A09220ED1E09C00F1F681 /* Completion.cpp */, 1710 1713 F5BB2BC5030F772101FCFE1D /* Completion.h */, 1714 146B14DB12EB5B12001BEC1B /* ConservativeSet.cpp */, 1715 149DAAF212EB559D0083B12B /* ConservativeSet.h */, 1711 1716 BCA62DFF0E2826310004F30D /* ConstructData.cpp */, 1712 1717 BC8F3CCF0DAF17BA00577A80 /* ConstructData.h */, … … 2712 2717 147F39C1107EC37600427A48 /* CommonIdentifiers.cpp in Sources */, 2713 2718 147F39C2107EC37600427A48 /* Completion.cpp in Sources */, 2719 146B16D812EB5B59001BEC1B /* ConservativeSet.cpp in Sources */, 2714 2720 1428082E107EC0570013E7B2 /* ConstructData.cpp in Sources */, 2715 2721 86565742115BE3DA00291F40 /* CString.cpp in Sources */, … … 2859 2865 14469DEC107EC7E700650446 /* StringObject.cpp in Sources */, 2860 2866 14469DED107EC7E700650446 /* StringPrototype.cpp in Sources */, 2867 9335F24D12E6765B002B5553 /* StringRecursionChecker.cpp in Sources */, 2861 2868 8626BECF11928E3900782FAB /* StringStatics.cpp in Sources */, 2862 2869 BCDE3B430E6C832D001453A7 /* Structure.cpp in Sources */, … … 2879 2886 86704B8912DBA33700A9FE7B /* YarrPattern.cpp in Sources */, 2880 2887 86704B4212DB8A8100A9FE7B /* YarrSyntaxChecker.cpp in Sources */, 2881 9335F24D12E6765B002B5553 /* StringRecursionChecker.cpp in Sources */,2882 2888 ); 2883 2889 runOnlyForDeploymentPostprocessing = 0; -
trunk/Source/JavaScriptCore/runtime/Heap.cpp
r76425 r76454 23 23 24 24 #include "CollectorHeapIterator.h" 25 #include "ConservativeSet.h" 25 26 #include "GCActivityCallback.h" 26 27 #include "GCHandle.h" … … 257 258 // conservative gathering uses the mark bits from our last mark pass to 258 259 // determine whether a reference is valid. 259 ConservativeSet conservativeSet ;260 ConservativeSet conservativeSet(this); 260 261 m_machineStackMarker.markMachineStackConservatively(conservativeSet); 261 m_machineStackMarker.markConservatively(conservativeSet,registerFile().start(), registerFile().end());262 conservativeSet.add(registerFile().start(), registerFile().end()); 262 263 263 264 // Reset mark bits. -
trunk/Source/JavaScriptCore/runtime/MachineStackMarker.cpp
r76441 r76454 22 22 #include "MachineStackMarker.h" 23 23 24 #include "ConservativeSet.h" 24 25 #include "Heap.h" 25 26 #include "JSArray.h" … … 212 213 void* end = m_heap->globalData()->stack().origin(); 213 214 swapIfBackwards(begin, end); 214 markConservatively(conservativeSet,begin, end);215 conservativeSet.add(begin, end); 215 216 } 216 217 … … 374 375 375 376 // mark the thread's registers 376 markConservatively(conservativeSet,static_cast<void*>(®s), static_cast<void*>(reinterpret_cast<char*>(®s) + regSize));377 conservativeSet.add(static_cast<void*>(®s), static_cast<void*>(reinterpret_cast<char*>(®s) + regSize)); 377 378 378 379 void* stackPointer = otherThreadStackPointer(regs); 379 380 void* stackBase = thread->stackBase; 380 381 swapIfBackwards(stackPointer, stackBase); 381 markConservatively(conservativeSet,stackPointer, stackBase);382 conservativeSet.add(stackPointer, stackBase); 382 383 383 384 resumeThread(thread->platformThread); … … 415 416 } 416 417 417 inline bool isPointerAligned(void* p)418 {419 return !((intptr_t)(p) & (sizeof(char*) - 1));420 }421 422 void MachineStackMarker::markConservatively(ConservativeSet& conservativeSet, void* start, void* end)423 {424 ASSERT(start <= end);425 ASSERT((static_cast<char*>(end) - static_cast<char*>(start)) < 0x1000000);426 ASSERT(isPointerAligned(start));427 ASSERT(isPointerAligned(end));428 429 for (char** it = static_cast<char**>(start); it != static_cast<char**>(end); ++it) {430 if (!m_heap->contains(*it))431 continue;432 conservativeSet.add(reinterpret_cast<JSCell*>(*it));433 }434 }435 436 418 } // namespace JSC -
trunk/Source/JavaScriptCore/runtime/MachineStackMarker.h
r76425 r76454 42 42 43 43 void markMachineStackConservatively(ConservativeSet&); 44 void markConservatively(ConservativeSet&, void* start, void* end);45 44 46 45 #if ENABLE(JSC_MULTIPLE_THREADS) -
trunk/Source/JavaScriptCore/runtime/MarkStack.h
r76425 r76454 189 189 }; 190 190 191 class ConservativeSet {192 public:193 void add(JSCell* cell) { m_vector.append(cell); }194 void mark(MarkStack& markStack)195 {196 for (size_t i = 0; i < m_vector.size(); ++i)197 markStack.append(m_vector[i]);198 }199 200 private:201 Vector<JSCell*, 64> m_vector;202 };203 191 } 204 192
Note: See TracChangeset
for help on using the changeset viewer.