Changeset 157424 in webkit
- Timestamp:
- Oct 14, 2013 2:59:41 PM (11 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 1 deleted
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/CMakeLists.txt
r157413 r157424 182 182 heap/CopiedSpace.cpp 183 183 heap/CopyVisitor.cpp 184 heap/DeferGC.cpp185 184 heap/GCThread.cpp 186 185 heap/GCThreadSharedData.cpp -
trunk/Source/JavaScriptCore/ChangeLog
r157422 r157424 1 2013-10-14 Commit Queue <commit-queue@webkit.org> 2 3 Unreviewed, rolling out r157413. 4 http://trac.webkit.org/changeset/157413 5 https://bugs.webkit.org/show_bug.cgi?id=122779 6 7 Appears to have caused frequent crashes (Requested by ap on 8 #webkit). 9 10 * CMakeLists.txt: 11 * GNUmakefile.list.am: 12 * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj: 13 * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters: 14 * JavaScriptCore.xcodeproj/project.pbxproj: 15 * heap/DeferGC.cpp: Removed. 16 * heap/DeferGC.h: 17 * jit/JITStubs.cpp: 18 (JSC::tryCacheGetByID): 19 (JSC::DEFINE_STUB_FUNCTION): 20 * llint/LLIntSlowPaths.cpp: 21 (JSC::LLInt::LLINT_SLOW_PATH_DECL): 22 * runtime/ConcurrentJITLock.h: 23 * runtime/InitializeThreading.cpp: 24 (JSC::initializeThreadingOnce): 25 * runtime/JSCellInlines.h: 26 (JSC::allocateCell): 27 * runtime/Structure.cpp: 28 (JSC::Structure::materializePropertyMap): 29 (JSC::Structure::putSpecificValue): 30 (JSC::Structure::createPropertyMap): 31 * runtime/Structure.h: 32 1 33 2013-10-14 Mark Hahnenberg <mhahnenberg@apple.com> 2 34 -
trunk/Source/JavaScriptCore/GNUmakefile.list.am
r157413 r157424 468 468 Source/JavaScriptCore/heap/ConservativeRoots.cpp \ 469 469 Source/JavaScriptCore/heap/ConservativeRoots.h \ 470 Source/JavaScriptCore/heap/DeferGC.cpp \471 470 Source/JavaScriptCore/heap/DeferGC.h \ 472 471 Source/JavaScriptCore/heap/GCAssertions.h \ -
trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj
r157413 r157424 337 337 <ClCompile Include="..\heap\CopiedSpace.cpp" /> 338 338 <ClCompile Include="..\heap\CopyVisitor.cpp" /> 339 <ClCompile Include="..\heap\DeferGC.cpp" />340 339 <ClCompile Include="..\heap\GCThread.cpp" /> 341 340 <ClCompile Include="..\heap\GCThreadSharedData.cpp" /> … … 706 705 <ClInclude Include="..\heap\CopyVisitorInlines.h" /> 707 706 <ClInclude Include="..\heap\CopyWorkList.h" /> 708 <ClInclude Include="..\heap\DeferGC.h" />709 707 <ClInclude Include="..\heap\GCAssertions.h" /> 710 708 <ClInclude Include="..\heap\GCThread.h" /> -
trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters
r157413 r157424 874 874 <Filter>heap</Filter> 875 875 </ClCompile> 876 <ClCompile Include="..\heap\DeferGC.cpp">877 <Filter>heap</Filter>878 </ClCompile>879 876 <ClCompile Include="..\bytecode\DeferredCompilationCallback.cpp"> 880 877 <Filter>bytecode</Filter> … … 1225 1222 </ClInclude> 1226 1223 <ClInclude Include="..\heap\CopyWorkList.h"> 1227 <Filter>heap</Filter>1228 </ClInclude>1229 <ClInclude Include="..\heap\DeferGC.h">1230 1224 <Filter>heap</Filter> 1231 1225 </ClInclude> -
trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
r157413 r157424 374 374 0FC81516140511B500CFA603 /* VTableSpectrum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FC815121405118600CFA603 /* VTableSpectrum.cpp */; }; 375 375 0FCCAE4516D0CF7400D0C65B /* ParserError.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCCAE4316D0CF6E00D0C65B /* ParserError.h */; settings = {ATTRIBUTES = (Private, ); }; }; 376 0FCEFAAB1804C13E00472CE4 /* FTLSaveRestore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAA91804C13E00472CE4 /* FTLSaveRestore.cpp */; };377 0FCEFAAC1804C13E00472CE4 /* FTLSaveRestore.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAAA1804C13E00472CE4 /* FTLSaveRestore.h */; settings = {ATTRIBUTES = (Private, ); }; };378 376 0FCEFAB01805CA6D00472CE4 /* InitializeLLVM.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */; settings = {ATTRIBUTES = (Private, ); }; }; 379 377 0FCEFAB11805CA6D00472CE4 /* InitializeLLVMMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAAF1805CA6D00472CE4 /* InitializeLLVMMac.mm */; }; … … 392 390 0FCEFADA180620DA00472CE4 /* LLVMAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC81805E75500472CE4 /* LLVMAPI.h */; }; 393 391 0FCEFADC18064A1400472CE4 /* config_llvm.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFADB18064A1400472CE4 /* config_llvm.h */; }; 392 0FCEFAAB1804C13E00472CE4 /* FTLSaveRestore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAA91804C13E00472CE4 /* FTLSaveRestore.cpp */; }; 393 0FCEFAAC1804C13E00472CE4 /* FTLSaveRestore.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAAA1804C13E00472CE4 /* FTLSaveRestore.h */; settings = {ATTRIBUTES = (Private, ); }; }; 394 394 0FCEFADF180738C000472CE4 /* FTLLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFADD180738C000472CE4 /* FTLLocation.cpp */; }; 395 395 0FCEFAE0180738C000472CE4 /* FTLLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFADE180738C000472CE4 /* FTLLocation.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 685 685 2A48D1911772365B00C65A5F /* APICallbackFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = C211B574176A224D000E2A23 /* APICallbackFunction.h */; }; 686 686 2A6F462617E959CE00C45C98 /* HeapOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A6F462517E959CE00C45C98 /* HeapOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; 687 2A7A58EF1808A4C40020BDF7 /* DeferGC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A58EE1808A4C40020BDF7 /* DeferGC.cpp */; };688 687 2AD8932B17E3868F00668276 /* HeapIterationScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AD8932917E3868F00668276 /* HeapIterationScope.h */; }; 689 688 371D842D17C98B6E00ECF994 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 371D842C17C98B6E00ECF994 /* libz.dylib */; }; … … 1629 1628 0FCB408515C0A3C30048932B /* SlotVisitorInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlotVisitorInlines.h; sourceTree = "<group>"; }; 1630 1629 0FCCAE4316D0CF6E00D0C65B /* ParserError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParserError.h; sourceTree = "<group>"; }; 1631 0FCEFAA91804C13E00472CE4 /* FTLSaveRestore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLSaveRestore.cpp; path = ftl/FTLSaveRestore.cpp; sourceTree = "<group>"; };1632 0FCEFAAA1804C13E00472CE4 /* FTLSaveRestore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLSaveRestore.h; path = ftl/FTLSaveRestore.h; sourceTree = "<group>"; };1633 1630 0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InitializeLLVM.h; path = llvm/InitializeLLVM.h; sourceTree = "<group>"; }; 1634 1631 0FCEFAAF1805CA6D00472CE4 /* InitializeLLVMMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = InitializeLLVMMac.mm; path = llvm/InitializeLLVMMac.mm; sourceTree = "<group>"; }; … … 1646 1643 0FCEFAD61806174600472CE4 /* LLVMAnchor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LLVMAnchor.cpp; sourceTree = "<group>"; }; 1647 1644 0FCEFADB18064A1400472CE4 /* config_llvm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config_llvm.h; sourceTree = "<group>"; }; 1645 0FCEFAA91804C13E00472CE4 /* FTLSaveRestore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLSaveRestore.cpp; path = ftl/FTLSaveRestore.cpp; sourceTree = "<group>"; }; 1646 0FCEFAAA1804C13E00472CE4 /* FTLSaveRestore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLSaveRestore.h; path = ftl/FTLSaveRestore.h; sourceTree = "<group>"; }; 1648 1647 0FCEFADD180738C000472CE4 /* FTLLocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLLocation.cpp; path = ftl/FTLLocation.cpp; sourceTree = "<group>"; }; 1649 1648 0FCEFADE180738C000472CE4 /* FTLLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLLocation.h; path = ftl/FTLLocation.h; sourceTree = "<group>"; }; … … 1893 1892 2600B5A5152BAAA70091EE5F /* JSStringJoiner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStringJoiner.h; sourceTree = "<group>"; }; 1894 1893 2A6F462517E959CE00C45C98 /* HeapOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HeapOperation.h; sourceTree = "<group>"; }; 1895 2A7A58EE1808A4C40020BDF7 /* DeferGC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeferGC.cpp; sourceTree = "<group>"; };1896 1894 2AD8932917E3868F00668276 /* HeapIterationScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HeapIterationScope.h; sourceTree = "<group>"; }; 1897 1895 371D842C17C98B6E00ECF994 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; … … 2919 2917 C218D13F1655CFD50062BB81 /* CopyWorkList.h */, 2920 2918 0F136D4B174AD69B0075B354 /* DeferGC.h */, 2921 2A7A58EE1808A4C40020BDF7 /* DeferGC.cpp */,2922 2919 BCBE2CAD14E985AA000593AD /* GCAssertions.h */, 2923 2920 0F2B66A817B6B53D00A7AE3F /* GCIncomingRefCounted.h */, … … 5484 5481 A7386555118697B400540279 /* ThunkGenerators.cpp in Sources */, 5485 5482 0F2B670717B6B5AB00A7AE3F /* TypedArrayController.cpp in Sources */, 5486 2A7A58EF1808A4C40020BDF7 /* DeferGC.cpp in Sources */,5487 5483 0F2B670A17B6B5AB00A7AE3F /* TypedArrayType.cpp in Sources */, 5488 5484 0FF4274A158EBE91004CB9FF /* udis86.c in Sources */, -
trunk/Source/JavaScriptCore/heap/DeferGC.h
r157413 r157424 29 29 #include "Heap.h" 30 30 #include <wtf/Noncopyable.h> 31 #include <wtf/ThreadSpecific.h>32 31 33 32 namespace JSC { … … 69 68 }; 70 69 71 #ifndef NDEBUG72 class DisallowGC {73 WTF_MAKE_NONCOPYABLE(DisallowGC);74 public:75 DisallowGC()76 {77 WTF::threadSpecificSet(s_isGCDisallowedOnCurrentThread, reinterpret_cast<void*>(true));78 }79 80 ~DisallowGC()81 {82 WTF::threadSpecificSet(s_isGCDisallowedOnCurrentThread, reinterpret_cast<void*>(false));83 }84 85 static bool isGCDisallowedOnCurrentThread()86 {87 return !!WTF::threadSpecificGet(s_isGCDisallowedOnCurrentThread);88 }89 static void initialize()90 {91 WTF::threadSpecificKeyCreate(&s_isGCDisallowedOnCurrentThread, 0);92 }93 94 private:95 JS_EXPORT_PRIVATE static WTF::ThreadSpecificKey s_isGCDisallowedOnCurrentThread;96 };97 #endif // NDEBUG98 99 70 } // namespace JSC 100 71 -
trunk/Source/JavaScriptCore/jit/JITStubs.cpp
r157413 r157424 126 126 NEVER_INLINE static void tryCacheGetByID(CallFrame* callFrame, CodeBlock* codeBlock, ReturnAddressPtr returnAddress, JSValue baseValue, const Identifier& propertyName, const PropertySlot& slot, StructureStubInfo* stubInfo) 127 127 { 128 GCSafeConcurrentJITLocker locker(codeBlock->m_lock, callFrame->vm().heap);128 ConcurrentJITLocker locker(codeBlock->m_lock); 129 129 130 130 // FIXME: Write a test that proves we need to check for recursion here just … … 556 556 } 557 557 558 GCSafeConcurrentJITLocker locker(codeBlock->m_lock, callFrame->vm().heap);558 ConcurrentJITLocker locker(codeBlock->m_lock); 559 559 560 560 Structure* structure = baseValue.asCell()->structure(); -
trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp
r157413 r157424 597 597 598 598 if (slot.type() == PutPropertySlot::NewProperty) { 599 GCSafeConcurrentJITLocker locker(codeBlock->m_lock, vm.heap);599 ConcurrentJITLocker locker(codeBlock->m_lock); 600 600 601 601 if (!structure->isDictionary() && structure->previousID()->outOfLineCapacity() == structure->outOfLineCapacity()) { -
trunk/Source/JavaScriptCore/runtime/ConcurrentJITLock.h
r157413 r157424 27 27 #define ConcurrentJITLock_h 28 28 29 #include "DeferGC.h"30 29 #include <wtf/ByteSpinLock.h> 31 30 #include <wtf/NoLock.h> … … 35 34 #if ENABLE(CONCURRENT_JIT) 36 35 typedef ByteSpinLock ConcurrentJITLock; 37 typedef ByteSpinLocker ConcurrentJITLocker Impl;36 typedef ByteSpinLocker ConcurrentJITLocker; 38 37 #else 39 38 typedef NoLock ConcurrentJITLock; 40 typedef NoLockLocker ConcurrentJITLocker Impl;39 typedef NoLockLocker ConcurrentJITLocker; 41 40 #endif 42 43 class ConcurrentJITLockerBase {44 WTF_MAKE_NONCOPYABLE(ConcurrentJITLockerBase);45 public:46 explicit ConcurrentJITLockerBase(ConcurrentJITLock& lockable)47 : m_locker(&lockable)48 {49 }50 explicit ConcurrentJITLockerBase(ConcurrentJITLock* lockable)51 : m_locker(lockable)52 {53 }54 55 ~ConcurrentJITLockerBase()56 {57 }58 59 void unlockEarly()60 {61 m_locker.unlockEarly();62 }63 64 private:65 ConcurrentJITLockerImpl m_locker;66 };67 68 class GCSafeConcurrentJITLocker : public ConcurrentJITLockerBase {69 public:70 GCSafeConcurrentJITLocker(ConcurrentJITLock& lockable, Heap& heap)71 : ConcurrentJITLockerBase(lockable)72 , m_deferGC(heap)73 {74 }75 76 GCSafeConcurrentJITLocker(ConcurrentJITLock* lockable, Heap& heap)77 : ConcurrentJITLockerBase(lockable)78 , m_deferGC(heap)79 {80 }81 82 private:83 #if ENABLE(CONCURRENT_JIT)84 DeferGC m_deferGC;85 #else86 struct NoDefer {87 NoDefer(Heap& heap) : m_heap(heap) { }88 Heap& m_heap;89 };90 NoDefer m_deferGC;91 #endif92 };93 94 class ConcurrentJITLocker : public ConcurrentJITLockerBase {95 public:96 ConcurrentJITLocker(ConcurrentJITLock& lockable)97 : ConcurrentJITLockerBase(lockable)98 {99 }100 101 ConcurrentJITLocker(ConcurrentJITLock* lockable)102 : ConcurrentJITLockerBase(lockable)103 {104 }105 106 #if ENABLE(CONCURRENT_JIT) && !defined(NDEBUG)107 private:108 DisallowGC m_disallowGC;109 #endif110 };111 41 112 42 } // namespace JSC 113 43 114 44 #endif // ConcurrentJITLock_h 45 -
trunk/Source/JavaScriptCore/runtime/InitializeThreading.cpp
r157413 r157424 70 70 LLInt::initialize(); 71 71 #endif 72 #ifndef NDEBUG73 DisallowGC::initialize();74 #endif75 72 } 76 73 -
trunk/Source/JavaScriptCore/runtime/JSCellInlines.h
r157413 r157424 28 28 29 29 #include "CallFrame.h" 30 #include "DeferGC.h"31 30 #include "Handle.h" 32 31 #include "JSCell.h" … … 87 86 void* allocateCell(Heap& heap, size_t size) 88 87 { 89 ASSERT(!DisallowGC::isGCDisallowedOnCurrentThread());90 88 ASSERT(size >= sizeof(T)); 91 89 #if ENABLE(GC_VALIDATION) -
trunk/Source/JavaScriptCore/runtime/Structure.cpp
r157413 r157424 281 281 // property map. We don't want getConcurrently() to see the property map in a half-baked 282 282 // state. 283 GCSafeConcurrentJITLocker locker(m_lock, vm.heap);283 ConcurrentJITLocker locker(m_lock); 284 284 if (!table) 285 285 createPropertyMap(locker, vm, numberOfSlotsForLastOffset(m_offset, m_inlineCapacity)); … … 882 882 PropertyOffset Structure::putSpecificValue(VM& vm, PropertyName propertyName, unsigned attributes, JSCell* specificValue) 883 883 { 884 GCSafeConcurrentJITLocker locker(m_lock, vm.heap);884 ConcurrentJITLocker locker(m_lock); 885 885 886 886 ASSERT(!JSC::isValidOffset(get(vm, propertyName))); … … 927 927 } 928 928 929 void Structure::createPropertyMap(const GCSafeConcurrentJITLocker&, VM& vm, unsigned capacity)929 void Structure::createPropertyMap(const ConcurrentJITLocker&, VM& vm, unsigned capacity) 930 930 { 931 931 ASSERT(!propertyTable()); -
trunk/Source/JavaScriptCore/runtime/Structure.h
r157413 r157424 394 394 PropertyOffset remove(PropertyName); 395 395 396 void createPropertyMap(const GCSafeConcurrentJITLocker&, VM&, unsigned keyCount = 0);396 void createPropertyMap(const ConcurrentJITLocker&, VM&, unsigned keyCount = 0); 397 397 void checkConsistency(); 398 398
Note: See TracChangeset
for help on using the changeset viewer.