Last change
on this file since 27215 was 15846, checked in by mjs, 19 years ago |
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 size:
1.1 KB
|
Line | |
---|
1 | // -*- c-basic-offset: 2 -*-
|
---|
2 | /*
|
---|
3 | * Copyright (C) 2006 Maks Orlovich
|
---|
4 | * Copyright (C) 2006 Apple Computer, Inc.
|
---|
5 | *
|
---|
6 | * This library is free software; you can redistribute it and/or
|
---|
7 | * modify it under the terms of the GNU Library General Public
|
---|
8 | * License as published by the Free Software Foundation; either
|
---|
9 | * version 2 of the License, or (at your option) any later version.
|
---|
10 | *
|
---|
11 | * This library is distributed in the hope that it will be useful,
|
---|
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
---|
14 | * Library General Public License for more details.
|
---|
15 | *
|
---|
16 | * You should have received a copy of the GNU Library General Public License
|
---|
17 | * along with this library; see the file COPYING.LIB. If not, write to
|
---|
18 | * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
---|
19 | * Boston, MA 02110-1301, USA.
|
---|
20 | *
|
---|
21 | */
|
---|
22 |
|
---|
23 | #include "JSWrapperObject.h"
|
---|
24 |
|
---|
25 | namespace KJS {
|
---|
26 |
|
---|
27 | void JSWrapperObject::mark()
|
---|
28 | {
|
---|
29 | JSObject::mark();
|
---|
30 | if (m_internalValue && !m_internalValue->marked())
|
---|
31 | m_internalValue->mark();
|
---|
32 | }
|
---|
33 |
|
---|
34 | } // namespace KJS
|
---|
Note:
See
TracBrowser
for help on using the repository browser.