• oliver@apple.com's avatar
    fourthTier: Structure::addPropertyTransitionToExistingStructure should be thread-safe · cece4b66
    oliver@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=115468
    
    Reviewed by Geoffrey Garen.
    
    This makes the main thread modify the transition table while holding a lock. Note
    that the GC might modify its weak pointers without locking, but the GC will lock out
    the compilation thread anyway. The map will then only reshape in response to add()
    and set(), which happen while holding a lock.
    
    This allows the compilation thread to now query transition tables safely, provided it
    holds a lock when doing so.
    
    Also changed LLVM asm printer initialization to just initialize the X86 one. It makes
    sense for us to just initialize the asm printer(s) that we actually use; you could
    imagine us being linked to a system LLVM that has cross-compilation support; there is
    no point in the WebKit or JSC process doing work to initialize all of those targets.
    That part was rubber stamped by Mark Hahnenberg.
    
    * bytecode/PutByIdStatus.cpp:
    (JSC::PutByIdStatus::computeFor):
    * runtime/InitializeThreading.cpp:
    (JSC::initializeThreadingOnce):
    * runtime/Structure.cpp:
    (JSC::Structure::addPropertyTransitionToExistingStructureImpl):
    (JSC::Structure::addPropertyTransitionToExistingStructure):
    (JSC):
    (JSC::Structure::addPropertyTransitionToExistingStructureConcurrently):
    (JSC::Structure::addPropertyTransition):
    (JSC::Structure::nonPropertyTransition):
    * runtime/Structure.h:
    (Structure):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153140 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    cece4b66
InitializeThreading.cpp 2.97 KB