Skip to content
  • mjs's avatar
    Reviewed by Geoff and Adam. · 9f1f97a4
    mjs authored
            
            - make USE(MULTIPLE_THREADS) support more portable
            http://bugs.webkit.org/show_bug.cgi?id=13069
            
            - fixed a threadsafety bug discovered by testing this
            
            - enhanced threadsafety assertions in collector
    
            * API/JSCallbackObject.cpp:
            (KJS::JSCallbackObject::~JSCallbackObject): This destructor can't
            DropAllLocks around the finalize callback, because it gets called
            from garbage collection and we can't let other threads collect!
    
            * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
            * kjs/JSLock.cpp:
            (KJS::JSLock::currentThreadIsHoldingLock): Added new function
            to allow stronger assertions than just that the lock is held
            by some thread (you can now assert that the current thread is
            holding it, given the new JSLock design).
            * kjs/JSLock.h:
            * kjs/collector.cpp: Refactored for portability plus added some
            stronger assertions.
            (KJS::Collector::allocate):
            (KJS::currentThreadStackBase):
            (KJS::Collector::registerAsMainThread):
            (KJS::onMainThread):
            (KJS::PlatformThread::PlatformThread):
            (KJS::getCurrentPlatformThread):
            (KJS::Collector::Thread::Thread):
            (KJS::destroyRegisteredThread):
            (KJS::Collector::registerThread):
            (KJS::Collector::markCurrentThreadConservatively):
            (KJS::suspendThread):
            (KJS::resumeThread):
            (KJS::getPlatformThreadRegisters):
            (KJS::otherThreadStackPointer):
            (KJS::otherThreadStackBase):
            (KJS::Collector::markOtherThreadConservatively):
            (KJS::Collector::markStackObjectsConservatively):
            (KJS::Collector::protect):
            (KJS::Collector::unprotect):
            (KJS::Collector::collectOnMainThreadOnly):
            (KJS::Collector::markMainThreadOnlyObjects):
            (KJS::Collector::collect):
            * kjs/collector.h:
            * wtf/FastMalloc.cpp:
            (WTF::fastMallocSetIsMultiThreaded):
            * wtf/FastMallocInternal.h:
            * wtf/Platform.h:
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@20351 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    9f1f97a4