Ignore:
Timestamp:
Jan 11, 2008, 6:08:50 PM (17 years ago)
Author:
[email protected]
Message:

JavaScriptCore:

Reviewed by Maciej.

Optimized ActivationImp allocation, so that activation records are now
first allocated on an explicitly managed stack and only heap allocated
when necessary. Roughly a 5% improvement on SunSpider, and a larger
improvement on benchmarks that use more function calls.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • kjs/Activation.h: Added. (KJS::ActivationImp::ActivationData::ActivationData): (KJS::ActivationImp::ActivationImp): (KJS::ActivationImp::classInfo): (KJS::ActivationImp::isActivationObject): (KJS::ActivationImp::isOnStack): (KJS::ActivationImp::d): (KJS::StackActivation::StackActivation):
  • kjs/ExecState.cpp: (KJS::ExecState::ExecState): (KJS::ExecState::~ExecState):
  • kjs/ExecState.h: (KJS::ExecState::replaceScopeChainTop): (KJS::ExecState::setActivationObject): (KJS::ExecState::setLocalStorage):
  • kjs/JSGlobalObject.cpp: (KJS::JSGlobalObject::reset): (KJS::JSGlobalObject::pushActivation): (KJS::JSGlobalObject::checkActivationCount): (KJS::JSGlobalObject::popActivationHelper): (KJS::JSGlobalObject::popActivation): (KJS::JSGlobalObject::tearOffActivation):
  • kjs/JSGlobalObject.h:
  • kjs/JSVariableObject.h: (KJS::JSVariableObject::JSVariableObjectData::JSVariableObjectData): (KJS::JSVariableObject::JSVariableObject):
  • kjs/function.cpp: (KJS::FunctionImp::argumentsGetter): (KJS::ActivationImp::ActivationImp): (KJS::ActivationImp::~ActivationImp): (KJS::ActivationImp::init): (KJS::ActivationImp::getOwnPropertySlot): (KJS::ActivationImp::markHelper): (KJS::ActivationImp::mark): (KJS::ActivationImp::ActivationData::ActivationData): (KJS::GlobalFuncImp::callAsFunction):
  • kjs/function.h:
  • kjs/nodes.cpp: (KJS::PostIncResolveNode::evaluate): (KJS::PostDecResolveNode::evaluate): (KJS::PreIncResolveNode::evaluate): (KJS::PreDecResolveNode::evaluate): (KJS::ReadModifyResolveNode::evaluate): (KJS::AssignResolveNode::evaluate): (KJS::WithNode::execute): (KJS::TryNode::execute): (KJS::FunctionBodyNode::processDeclarations): (KJS::FuncExprNode::evaluate):
  • kjs/object.h:
  • kjs/scope_chain.h: (KJS::ScopeChain::replace):
  • kjs/scope_chain_mark.h: Added. (KJS::ScopeChain::mark):

WebCore:

Reviewed by Maciej.

Added a new forwarding header, because Activation.h has been separated
from function.h

  • ForwardingHeaders/kjs/Activation.h: Added.

LayoutTests:

Reviewed by Maciej.

Added a test case that came up when developing the ActivationImp tear-off.

  • fast/js/resources/vardecl-preserve-arguments.js:
  • fast/js/vardecl-preserve-arguments-expected.txt:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/JSVariableObject.h

    r28884 r29425  
    5757        // size of a JSCell).
    5858        struct JSVariableObjectData {
     59            JSVariableObjectData() { }
     60
    5961            JSVariableObjectData(SymbolTable* s)
    6062                : symbolTable(s) // Subclass owns this pointer.
     
    6668
    6769        };
     70
     71        JSVariableObject() { }
    6872
    6973        JSVariableObject(JSVariableObjectData* data)
Note: See TracChangeset for help on using the changeset viewer.