Skip to content
  • oliver@apple.com's avatar
    2011-05-26 Oliver Hunt <oliver@apple.com> · d7523c1f
    oliver@apple.com authored
            Reviewed by Geoffrey Garen.
    
            Make RegExpCache a weak map
            https://bugs.webkit.org/show_bug.cgi?id=61554
    
            Switch to a weak map for the regexp cache, and hide that
            behaviour behind RegExp::create.
    
            When a RegExp is compiled it attempts to add itself to
            the "strong" cache.  This cache is a simple round-robin
            buffer as was the old strong cache.  Happily this can
            be smaller than the old strong cache as RegExps are only
            added when they're compiled so it is under less pressure
            to evict.
    
            * bytecompiler/NodesCodegen.cpp:
            (JSC::RegExpNode::emitBytecode):
            * runtime/RegExp.cpp:
            (JSC::RegExp::RegExp):
            (JSC::RegExp::create):
            (JSC::RegExp::match):
            * runtime/RegExp.h:
            (JSC::RegExp::gcShouldInvalidateCode):
            (JSC::RegExp::hasCode):
            (JSC::RegExp::key):
            * runtime/RegExpCache.cpp:
            (JSC::RegExpCache::lookupOrCreate):
            (JSC::RegExpCache::RegExpCache):
            (JSC::RegExpCache::isReachableFromOpaqueRoots):
            (JSC::RegExpCache::finalize):
            * runtime/RegExpCache.h:
            * runtime/RegExpConstructor.cpp:
            (JSC::constructRegExp):
            * runtime/RegExpPrototype.cpp:
            (JSC::regExpProtoFuncCompile):
            * runtime/StringPrototype.cpp:
            (JSC::stringProtoFuncMatch):
            (JSC::stringProtoFuncSearch):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@87445 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    d7523c1f