Ignore:
Timestamp:
Aug 13, 2006, 8:06:14 PM (19 years ago)
Author:
mjs
Message:

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):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/JavaScriptCore.exp

    r15593 r15846  
    1 
    21_JSCheckScriptSyntax
    32_JSClassCreate
     
    152151__ZN3KJS14StringInstanceC1EPNS_8JSObjectERKNS_7UStringE
    153152__ZN3KJS14StringInstanceC2EPNS_8JSObjectERKNS_7UStringE
     153__ZN3KJS15JSWrapperObject4markEv
    154154__ZN3KJS15SavedPropertiesC1Ev
    155155__ZN3KJS15SavedPropertiesD1Ev
     
    270270__ZNK3KJS9ExecState18lexicalInterpreterEv
    271271__ZTVN3KJS14StringInstanceE
     272__ZTVN3KJS15JSWrapperObjectE
    272273__ZTVN3KJS19InternalFunctionImpE
    273274__ZTVN3KJS8JSObjectE
Note: See TracChangeset for help on using the changeset viewer.