Skip to content
  • mjs@apple.com's avatar
    2008-09-14 Maciej Stachowiak <mjs@apple.com> · 988df6c1
    mjs@apple.com authored
            Reviewed by Cameron Zwarich.
            
            - split the "prototype" lookup for hasInstance into opcode stream so it can be cached
            
            ~5% speedup on v8 earley-boyer test
    
            * API/JSCallbackObject.h: Add a parameter for the pre-looked-up prototype.
            * API/JSCallbackObjectFunctions.h:
            (JSC::::hasInstance): Ditto.
            * API/JSValueRef.cpp:
            (JSValueIsInstanceOfConstructor): Look up and pass in prototype.
            * JavaScriptCore.exp:
            * VM/CTI.cpp:
            (JSC::CTI::privateCompileMainPass): Pass along prototype.
            * VM/CodeBlock.cpp:
            (JSC::CodeBlock::dump): Print third arg.
            * VM/CodeGenerator.cpp:
            (JSC::CodeGenerator::emitInstanceOf): Implement this, now that there
            is a third argument.
            * VM/CodeGenerator.h:
            * VM/Machine.cpp:
            (JSC::Machine::privateExecute): Pass along the prototype.
            (JSC::Machine::cti_op_instanceof): ditto
            * kjs/JSObject.cpp:
            (JSC::JSObject::hasInstance): Expect to get a pre-looked-up prototype.
            * kjs/JSObject.h:
            * kjs/nodes.cpp:
            (JSC::InstanceOfNode::emitCode): Emit a get_by_id of the prototype
            property and pass that register to instanceof.
            * kjs/nodes.h:
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@36417 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    988df6c1