JavaScriptCore:
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