• mjs@apple.com's avatar
    JavaScriptCore: · 8b246d6d
    mjs@apple.com authored
    2008-10-03  Maciej Stachowiak  <mjs@apple.com>
    
            Reviewed by Cameron Zwarich.
            
            - "this" object in methods called on primitives should be wrapper object
            https://bugs.webkit.org/show_bug.cgi?id=21362
    
            I changed things so that functions which use "this" do a fast
            version of toThisObject conversion if needed. Currently we miss
            the conversion entirely, at least for primitive types. Using
            TypeInfo and the primitive check, I made the fast case bail out
            pretty fast.
            
            This is inexplicably an 1.007x SunSpider speedup (and a wash on V8 benchmarks).
         
            Also renamed some opcodes for clarity:
            
            init ==> enter
            init_activation ==> enter_with_activation
            
            * VM/CTI.cpp:
            (JSC::CTI::privateCompileMainPass):
            (JSC::CTI::privateCompileSlowCases):
            * VM/CodeBlock.cpp:
            (JSC::CodeBlock::dump):
            * VM/CodeGenerator.cpp:
            (JSC::CodeGenerator::generate):
            (JSC::CodeGenerator::CodeGenerator):
            * VM/Machine.cpp:
            (JSC::Machine::privateExecute):
            (JSC::Machine::cti_op_convert_this):
            * VM/Machine.h:
            * VM/Opcode.h:
            * kjs/JSActivation.cpp:
            (JSC::JSActivation::JSActivation):
            * kjs/JSActivation.h:
            (JSC::JSActivation::createStructureID):
            * kjs/JSCell.h:
            (JSC::JSValue::needsThisConversion):
            * kjs/JSGlobalData.cpp:
            (JSC::JSGlobalData::JSGlobalData):
            * kjs/JSGlobalData.h:
            * kjs/JSNumberCell.h:
            (JSC::JSNumberCell::createStructureID):
            * kjs/JSStaticScopeObject.h:
            (JSC::JSStaticScopeObject::JSStaticScopeObject):
            (JSC::JSStaticScopeObject::createStructureID):
            * kjs/JSString.h:
            (JSC::JSString::createStructureID):
            * kjs/JSValue.h:
            * kjs/TypeInfo.h:
            (JSC::TypeInfo::needsThisConversion):
            * kjs/nodes.h:
            (JSC::ScopeNode::usesThis):
    
    WebCore:
    
    2008-10-03  Maciej Stachowiak  <mjs@apple.com>
    
            Reviewed by Cameron Zwarich.
    
            - "this" object in methods called on primitives should be wrapper object
            https://bugs.webkit.org/show_bug.cgi?id=21362
    
            Updated so toThis conversion for the split window is handled properly.
    
            * bindings/scripts/CodeGeneratorJS.pm:
    
    LayoutTests:
    
    2008-10-03  Maciej Stachowiak  <mjs@apple.com>
    
            Reviewed by Cameron Zwarich.
            
            - test case for: "this" object in methods called on primitives should be wrapper object
    
            * fast/js/primitive-method-this-expected.txt: Added.
            * fast/js/primitive-method-this.html: Added.
            * fast/js/resources/primitive-method-this.js: Added.
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@37285 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    8b246d6d
JSValue.h 8.23 KB