Changeset 157424 in webkit


Ignore:
Timestamp:
Oct 14, 2013 2:59:41 PM (11 years ago)
Author:
commit-queue@webkit.org
Message:

Unreviewed, rolling out r157413.
http://trac.webkit.org/changeset/157413
https://bugs.webkit.org/show_bug.cgi?id=122779

Appears to have caused frequent crashes (Requested by ap on
#webkit).

  • CMakeLists.txt:
  • GNUmakefile.list.am:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • heap/DeferGC.cpp: Removed.
  • heap/DeferGC.h:
  • jit/JITStubs.cpp:

(JSC::tryCacheGetByID):
(JSC::DEFINE_STUB_FUNCTION):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/ConcurrentJITLock.h:
  • runtime/InitializeThreading.cpp:

(JSC::initializeThreadingOnce):

  • runtime/JSCellInlines.h:

(JSC::allocateCell):

  • runtime/Structure.cpp:

(JSC::Structure::materializePropertyMap):
(JSC::Structure::putSpecificValue):
(JSC::Structure::createPropertyMap):

  • runtime/Structure.h:
Location:
trunk/Source/JavaScriptCore
Files:
1 deleted
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/CMakeLists.txt

    r157413 r157424  
    182182    heap/CopiedSpace.cpp
    183183    heap/CopyVisitor.cpp
    184     heap/DeferGC.cpp
    185184    heap/GCThread.cpp
    186185    heap/GCThreadSharedData.cpp
  • trunk/Source/JavaScriptCore/ChangeLog

    r157422 r157424  
     12013-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
    1332013-10-14  Mark Hahnenberg  <mhahnenberg@apple.com>
    234
  • trunk/Source/JavaScriptCore/GNUmakefile.list.am

    r157413 r157424  
    468468        Source/JavaScriptCore/heap/ConservativeRoots.cpp \
    469469        Source/JavaScriptCore/heap/ConservativeRoots.h \
    470         Source/JavaScriptCore/heap/DeferGC.cpp \
    471470        Source/JavaScriptCore/heap/DeferGC.h \
    472471        Source/JavaScriptCore/heap/GCAssertions.h \
  • trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj

    r157413 r157424  
    337337    <ClCompile Include="..\heap\CopiedSpace.cpp" />
    338338    <ClCompile Include="..\heap\CopyVisitor.cpp" />
    339     <ClCompile Include="..\heap\DeferGC.cpp" />
    340339    <ClCompile Include="..\heap\GCThread.cpp" />
    341340    <ClCompile Include="..\heap\GCThreadSharedData.cpp" />
     
    706705    <ClInclude Include="..\heap\CopyVisitorInlines.h" />
    707706    <ClInclude Include="..\heap\CopyWorkList.h" />
    708     <ClInclude Include="..\heap\DeferGC.h" />
    709707    <ClInclude Include="..\heap\GCAssertions.h" />
    710708    <ClInclude Include="..\heap\GCThread.h" />
  • trunk/Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters

    r157413 r157424  
    874874      <Filter>heap</Filter>
    875875    </ClCompile>
    876     <ClCompile Include="..\heap\DeferGC.cpp">
    877       <Filter>heap</Filter>
    878     </ClCompile>
    879876    <ClCompile Include="..\bytecode\DeferredCompilationCallback.cpp">
    880877      <Filter>bytecode</Filter>
     
    12251222    </ClInclude>
    12261223    <ClInclude Include="..\heap\CopyWorkList.h">
    1227       <Filter>heap</Filter>
    1228     </ClInclude>
    1229     <ClInclude Include="..\heap\DeferGC.h">
    12301224      <Filter>heap</Filter>
    12311225    </ClInclude>
  • trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r157413 r157424  
    374374                0FC81516140511B500CFA603 /* VTableSpectrum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FC815121405118600CFA603 /* VTableSpectrum.cpp */; };
    375375                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, ); }; };
    378376                0FCEFAB01805CA6D00472CE4 /* InitializeLLVM.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */; settings = {ATTRIBUTES = (Private, ); }; };
    379377                0FCEFAB11805CA6D00472CE4 /* InitializeLLVMMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAAF1805CA6D00472CE4 /* InitializeLLVMMac.mm */; };
     
    392390                0FCEFADA180620DA00472CE4 /* LLVMAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC81805E75500472CE4 /* LLVMAPI.h */; };
    393391                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, ); }; };
    394394                0FCEFADF180738C000472CE4 /* FTLLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFADD180738C000472CE4 /* FTLLocation.cpp */; };
    395395                0FCEFAE0180738C000472CE4 /* FTLLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFADE180738C000472CE4 /* FTLLocation.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    685685                2A48D1911772365B00C65A5F /* APICallbackFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = C211B574176A224D000E2A23 /* APICallbackFunction.h */; };
    686686                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 */; };
    688687                2AD8932B17E3868F00668276 /* HeapIterationScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AD8932917E3868F00668276 /* HeapIterationScope.h */; };
    689688                371D842D17C98B6E00ECF994 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 371D842C17C98B6E00ECF994 /* libz.dylib */; };
     
    16291628                0FCB408515C0A3C30048932B /* SlotVisitorInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlotVisitorInlines.h; sourceTree = "<group>"; };
    16301629                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>"; };
    16331630                0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InitializeLLVM.h; path = llvm/InitializeLLVM.h; sourceTree = "<group>"; };
    16341631                0FCEFAAF1805CA6D00472CE4 /* InitializeLLVMMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = InitializeLLVMMac.mm; path = llvm/InitializeLLVMMac.mm; sourceTree = "<group>"; };
     
    16461643                0FCEFAD61806174600472CE4 /* LLVMAnchor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LLVMAnchor.cpp; sourceTree = "<group>"; };
    16471644                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>"; };
    16481647                0FCEFADD180738C000472CE4 /* FTLLocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLLocation.cpp; path = ftl/FTLLocation.cpp; sourceTree = "<group>"; };
    16491648                0FCEFADE180738C000472CE4 /* FTLLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLLocation.h; path = ftl/FTLLocation.h; sourceTree = "<group>"; };
     
    18931892                2600B5A5152BAAA70091EE5F /* JSStringJoiner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSStringJoiner.h; sourceTree = "<group>"; };
    18941893                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>"; };
    18961894                2AD8932917E3868F00668276 /* HeapIterationScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HeapIterationScope.h; sourceTree = "<group>"; };
    18971895                371D842C17C98B6E00ECF994 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
     
    29192917                                C218D13F1655CFD50062BB81 /* CopyWorkList.h */,
    29202918                                0F136D4B174AD69B0075B354 /* DeferGC.h */,
    2921                                 2A7A58EE1808A4C40020BDF7 /* DeferGC.cpp */,
    29222919                                BCBE2CAD14E985AA000593AD /* GCAssertions.h */,
    29232920                                0F2B66A817B6B53D00A7AE3F /* GCIncomingRefCounted.h */,
     
    54845481                                A7386555118697B400540279 /* ThunkGenerators.cpp in Sources */,
    54855482                                0F2B670717B6B5AB00A7AE3F /* TypedArrayController.cpp in Sources */,
    5486                                 2A7A58EF1808A4C40020BDF7 /* DeferGC.cpp in Sources */,
    54875483                                0F2B670A17B6B5AB00A7AE3F /* TypedArrayType.cpp in Sources */,
    54885484                                0FF4274A158EBE91004CB9FF /* udis86.c in Sources */,
  • trunk/Source/JavaScriptCore/heap/DeferGC.h

    r157413 r157424  
    2929#include "Heap.h"
    3030#include <wtf/Noncopyable.h>
    31 #include <wtf/ThreadSpecific.h>
    3231
    3332namespace JSC {
     
    6968};
    7069
    71 #ifndef NDEBUG
    72 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 // NDEBUG
    98 
    9970} // namespace JSC
    10071
  • trunk/Source/JavaScriptCore/jit/JITStubs.cpp

    r157413 r157424  
    126126NEVER_INLINE static void tryCacheGetByID(CallFrame* callFrame, CodeBlock* codeBlock, ReturnAddressPtr returnAddress, JSValue baseValue, const Identifier& propertyName, const PropertySlot& slot, StructureStubInfo* stubInfo)
    127127{
    128     GCSafeConcurrentJITLocker locker(codeBlock->m_lock, callFrame->vm().heap);
     128    ConcurrentJITLocker locker(codeBlock->m_lock);
    129129   
    130130    // FIXME: Write a test that proves we need to check for recursion here just
     
    556556    }
    557557
    558     GCSafeConcurrentJITLocker locker(codeBlock->m_lock, callFrame->vm().heap);
     558    ConcurrentJITLocker locker(codeBlock->m_lock);
    559559   
    560560    Structure* structure = baseValue.asCell()->structure();
  • trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp

    r157413 r157424  
    597597           
    598598            if (slot.type() == PutPropertySlot::NewProperty) {
    599                 GCSafeConcurrentJITLocker locker(codeBlock->m_lock, vm.heap);
     599                ConcurrentJITLocker locker(codeBlock->m_lock);
    600600           
    601601                if (!structure->isDictionary() && structure->previousID()->outOfLineCapacity() == structure->outOfLineCapacity()) {
  • trunk/Source/JavaScriptCore/runtime/ConcurrentJITLock.h

    r157413 r157424  
    2727#define ConcurrentJITLock_h
    2828
    29 #include "DeferGC.h"
    3029#include <wtf/ByteSpinLock.h>
    3130#include <wtf/NoLock.h>
     
    3534#if ENABLE(CONCURRENT_JIT)
    3635typedef ByteSpinLock ConcurrentJITLock;
    37 typedef ByteSpinLocker ConcurrentJITLockerImpl;
     36typedef ByteSpinLocker ConcurrentJITLocker;
    3837#else
    3938typedef NoLock ConcurrentJITLock;
    40 typedef NoLockLocker ConcurrentJITLockerImpl;
     39typedef NoLockLocker ConcurrentJITLocker;
    4140#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 #else
    86     struct NoDefer {
    87         NoDefer(Heap& heap) : m_heap(heap) { }
    88         Heap& m_heap;
    89     };
    90     NoDefer m_deferGC;
    91 #endif
    92 };
    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 #endif
    110 };
    11141
    11242} // namespace JSC
    11343
    11444#endif // ConcurrentJITLock_h
     45
  • trunk/Source/JavaScriptCore/runtime/InitializeThreading.cpp

    r157413 r157424  
    7070    LLInt::initialize();
    7171#endif
    72 #ifndef NDEBUG
    73     DisallowGC::initialize();
    74 #endif
    7572}
    7673
  • trunk/Source/JavaScriptCore/runtime/JSCellInlines.h

    r157413 r157424  
    2828
    2929#include "CallFrame.h"
    30 #include "DeferGC.h"
    3130#include "Handle.h"
    3231#include "JSCell.h"
     
    8786void* allocateCell(Heap& heap, size_t size)
    8887{
    89     ASSERT(!DisallowGC::isGCDisallowedOnCurrentThread());
    9088    ASSERT(size >= sizeof(T));
    9189#if ENABLE(GC_VALIDATION)
  • trunk/Source/JavaScriptCore/runtime/Structure.cpp

    r157413 r157424  
    281281    // property map. We don't want getConcurrently() to see the property map in a half-baked
    282282    // state.
    283     GCSafeConcurrentJITLocker locker(m_lock, vm.heap);
     283    ConcurrentJITLocker locker(m_lock);
    284284    if (!table)
    285285        createPropertyMap(locker, vm, numberOfSlotsForLastOffset(m_offset, m_inlineCapacity));
     
    882882PropertyOffset Structure::putSpecificValue(VM& vm, PropertyName propertyName, unsigned attributes, JSCell* specificValue)
    883883{
    884     GCSafeConcurrentJITLocker locker(m_lock, vm.heap);
     884    ConcurrentJITLocker locker(m_lock);
    885885   
    886886    ASSERT(!JSC::isValidOffset(get(vm, propertyName)));
     
    927927}
    928928
    929 void Structure::createPropertyMap(const GCSafeConcurrentJITLocker&, VM& vm, unsigned capacity)
     929void Structure::createPropertyMap(const ConcurrentJITLocker&, VM& vm, unsigned capacity)
    930930{
    931931    ASSERT(!propertyTable());
  • trunk/Source/JavaScriptCore/runtime/Structure.h

    r157413 r157424  
    394394    PropertyOffset remove(PropertyName);
    395395
    396     void createPropertyMap(const GCSafeConcurrentJITLocker&, VM&, unsigned keyCount = 0);
     396    void createPropertyMap(const ConcurrentJITLocker&, VM&, unsigned keyCount = 0);
    397397    void checkConsistency();
    398398
Note: See TracChangeset for help on using the changeset viewer.