Changeset 35593 in webkit for trunk/JavaScriptCore/kjs/Parser.h


Ignore:
Timestamp:
Aug 6, 2008, 3:37:34 AM (17 years ago)
Author:
[email protected]
Message:

2008-08-06 Cameron Zwarich <[email protected]>

Reviewed by Maciej.

Bug 20286: Load constants all at once instead of using op_load
<https://bugs.webkit.org/show_bug.cgi?id=20286>

Load constants all at once into temporary registers instead of using
individual instances of op_load.

This is a 2.6% speedup on SunSpider.

JavaScriptCore:

  • JavaScriptCore.exp:
  • VM/CodeBlock.cpp: (KJS::CodeBlock::dump): (KJS::CodeBlock::mark):
  • VM/CodeBlock.h:
  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::CodeGenerator): (KJS::CodeGenerator::newTemporary): (KJS::CodeGenerator::addConstant): (KJS::CodeGenerator::addUnexpectedConstant): (KJS::CodeGenerator::emitLoad): (KJS::CodeGenerator::emitUnexpectedLoad): (KJS::CodeGenerator::emitNewError):
  • VM/CodeGenerator.h:
  • VM/Machine.cpp: (KJS::slideRegisterWindowForCall): (KJS::Machine::unwindCallFrame): (KJS::Machine::throwException): (KJS::Machine::execute): (KJS::Machine::privateExecute):
  • VM/Machine.h:
  • VM/Opcode.h:
  • VM/RegisterID.h: (KJS::RegisterID::RegisterID): (KJS::RegisterID::makeConstant): (KJS::RegisterID::isTemporary):
  • kjs/NodeInfo.h:
  • kjs/Parser.cpp: (KJS::Parser::didFinishParsing):
  • kjs/Parser.h: (KJS::Parser::parse):
  • kjs/grammar.y:
  • kjs/nodes.cpp: (KJS::NullNode::emitCode): (KJS::BooleanNode::emitCode): (KJS::NumberNode::emitCode): (KJS::StringNode::emitCode): (KJS::ArrayNode::emitCode): (KJS::DeleteResolveNode::emitCode): (KJS::DeleteValueNode::emitCode): (KJS::VoidNode::emitCode): (KJS::ConstDeclNode::emitCodeSingle): (KJS::ReturnNode::emitCode): (KJS::ScopeNode::ScopeNode): (KJS::ProgramNode::ProgramNode): (KJS::ProgramNode::create): (KJS::EvalNode::EvalNode): (KJS::EvalNode::create): (KJS::FunctionBodyNode::FunctionBodyNode): (KJS::FunctionBodyNode::create): (KJS::FunctionBodyNode::emitCode):
  • kjs/nodes.h: (KJS::ScopeNode::neededConstants):

LayoutTests:

  • fast/js/constant-count-expected.txt: Added.
  • fast/js/constant-count.html: Added.
  • fast/js/deep-recursion-test.html:
  • fast/js/resources/constant-count.js: Added.
File:
1 edited

Legend:

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

    r35466 r35593  
    5757
    5858        void didFinishParsing(SourceElements*, ParserRefCountedData<DeclarationStacks::VarStack>*,
    59                               ParserRefCountedData<DeclarationStacks::FunctionStack>*, bool usesEval, bool needsClosure, int lastLine);
     59                              ParserRefCountedData<DeclarationStacks::FunctionStack>*, bool usesEval, bool needsClosure, int lastLine, int numConstants);
    6060
    6161    private:
     
    7474        bool m_needsClosure;
    7575        int m_lastLine;
     76        int m_numConstants;
    7677    };
    7778
     
    9394                                                     sourceProvider.get(),
    9495                                                     m_usesEval,
    95                                                      m_needsClosure);
     96                                                     m_needsClosure,
     97                                                     m_numConstants);
    9698        m_varDeclarations = 0;
    9799        m_funcDeclarations = 0;
Note: See TracChangeset for help on using the changeset viewer.