JavaScriptCore:
authormjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 14 Aug 2006 03:06:14 +0000 (03:06 +0000)
committermjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 14 Aug 2006 03:06:14 +0000 (03:06 +0000)
commitf51a3f06c179f312cd10c023262e9266b3d79c9c
treee4a8b50b98e9b5d0be45071810120e80966c61ae
parent49a3d6e4f5ca6a62ac34788c39c7d96c5223fedc
JavaScriptCore:

        Reviewed (and tweaked a little) by Maciej.

        - shrank the size of JSObject by 8 bytes and made the corresponding reduction to the cell size, resulting
        in a 1.2% speed improvement on JS iBench (and probably overall memory savings).

        This was done by removing _scope and _internalValue data members
        from JSObject and moving them only to the subclasses that actually
        make use of them.

        * kjs/object.cpp:
        (KJS::JSObject::mark): No need to mark scope or internal value here.
        * kjs/object.h:
        (KJS::JSObject::JSObject): Don't initialize them.
        * kjs/JSWrapperObject.cpp: Added. New base class for object types that
        wrap primitive values (Number, String, Boolean, Date).
        (KJS::JSWrapperObject::mark):
        * kjs/JSWrapperObject.h: Added.
        (KJS::JSWrapperObject::JSWrapperObject):
        (KJS::JSWrapperObject::internalValue):
        (KJS::JSWrapperObject::setInternalValue):
        * kjs/array_object.cpp:
        (ArrayPrototype::ArrayPrototype): Don't set useless internal value.
        * kjs/bool_object.cpp:
        (BooleanInstance::BooleanInstance): Inherit from JSWrapperObject.
        (BooleanProtoFunc::callAsFunction): Fixed to account for fact that not all
        JSObjects have an internal value.
        (BooleanObjectImp::construct): ditto.
        * kjs/bool_object.h:
        * kjs/collector.cpp: Lowered cell size to 48.
        (KJS::Collector::allocate): meaningless whitespace change
        * kjs/date_object.cpp:
        (KJS::DateInstance::DateInstance): Inherit from JSWrapperObject.
        (KJS::DateProtoFunc::callAsFunction): adjusted for move of internalValue
        (KJS::DateObjectImp::construct): ditto
        * kjs/date_object.h:
        * kjs/error_object.cpp:
        (ErrorPrototype::ErrorPrototype): don't set internal value
        * kjs/function.cpp: move _scope and related handling here
        (KJS::FunctionImp::mark): mark scope
        * kjs/function.h:
        (KJS::FunctionImp::scope): moved here from JSObject
        (KJS::FunctionImp::setScope): ditto
        * kjs/number_object.cpp:
        (NumberInstance::NumberInstance): inherit from JSWrapperObject
        (NumberProtoFunc::callAsFunction): adjusted
        (NumberObjectImp::construct): adjusted
        * kjs/number_object.h: shring RegExp-related objects a little
        * kjs/regexp_object.cpp:
        (RegExpPrototype::RegExpPrototype): Adjust for size tweaks
        (RegExpObjectImp::RegExpObjectImp): ditto
        * kjs/regexp_object.h:
        * kjs/string_object.cpp:
        (StringInstance::StringInstance): inherit from JSWrapperObject
        (StringProtoFunc::callAsFunction): adjusted
        * kjs/string_object.h:
        * JavaScriptCore.exp: Exported new methods as needed.
        * JavaScriptCore.xcodeproj/project.pbxproj: Added new files to build.

WebCore:

        Reviewed (and tweaked a little) by Maciej.

        - shrank the size of JSObject by 8 bytes and made the corresponding reduction to the cell size, resulting
        in a 1.2% speed improvement on JS iBench (and probably overall memory savings).

        The WebCore part of this is to expect only FunctionImp to have a scope, not all JSObjects.

        * bindings/js/kjs_events.cpp:
        (KJS::JSLazyEventListener::parseCode):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@15846 268f45cc-cd09-0410-ab3c-d52691b4dbfc
25 files changed:
JavaScriptCore/ChangeLog
JavaScriptCore/JavaScriptCore.exp
JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
JavaScriptCore/kjs/JSWrapperObject.cpp [new file with mode: 0644]
JavaScriptCore/kjs/JSWrapperObject.h [new file with mode: 0644]
JavaScriptCore/kjs/array_object.cpp
JavaScriptCore/kjs/bool_object.cpp
JavaScriptCore/kjs/bool_object.h
JavaScriptCore/kjs/collector.cpp
JavaScriptCore/kjs/date_object.cpp
JavaScriptCore/kjs/date_object.h
JavaScriptCore/kjs/error_object.cpp
JavaScriptCore/kjs/function.cpp
JavaScriptCore/kjs/function.h
JavaScriptCore/kjs/number_object.cpp
JavaScriptCore/kjs/number_object.h
JavaScriptCore/kjs/object.cpp
JavaScriptCore/kjs/object.h
JavaScriptCore/kjs/regexp_object.cpp
JavaScriptCore/kjs/regexp_object.h
JavaScriptCore/kjs/string_object.cpp
JavaScriptCore/kjs/string_object.h
WebCore/ChangeLog
WebCore/bindings/js/kjs_events.cpp
WebCore/bindings/objc/WebScriptObjectInternal.h [new file with mode: 0644]