Changeset 37050 in webkit for trunk/JavaScriptCore/kjs/nodes.h


Ignore:
Timestamp:
Sep 28, 2008, 8:04:08 PM (17 years ago)
Author:
[email protected]
Message:

2008-09-28 Cameron Zwarich <[email protected]>

Reviewed by Maciej Stachowiak.

Bug 21200: Allow direct access to 'arguments' without using op_resolve
<https://bugs.webkit.org/show_bug.cgi?id=21200>

Allow fast access to the 'arguments' object by adding an extra slot to
the callframe to store it.

  • JavaScriptCore.exp:
  • VM/CTI.cpp: (JSC::CTI::privateCompileMainPass):
  • VM/CodeBlock.cpp: (JSC::CodeBlock::dump):
  • VM/CodeGenerator.cpp: (JSC::CodeGenerator::CodeGenerator): (JSC::CodeGenerator::registerFor):
  • VM/CodeGenerator.h: (JSC::CodeGenerator::registerFor):
  • VM/Machine.cpp: (JSC::Machine::initializeCallFrame): (JSC::Machine::dumpRegisters): (JSC::Machine::privateExecute): (JSC::Machine::retrieveArguments): (JSC::Machine::cti_op_call_JSFunction): (JSC::Machine::cti_op_create_arguments): (JSC::Machine::cti_op_construct_JSConstruct):
  • VM/Machine.h:
  • VM/Opcode.h:
  • VM/RegisterFile.h: (JSC::RegisterFile::):
  • kjs/JSActivation.cpp: (JSC::JSActivation::mark): (JSC::JSActivation::argumentsGetter):
  • kjs/JSActivation.h: (JSC::JSActivation::JSActivationData::JSActivationData):
  • kjs/NodeInfo.h:
  • kjs/Parser.cpp: (JSC::Parser::didFinishParsing):
  • kjs/Parser.h: (JSC::Parser::parse):
  • kjs/grammar.y:
  • kjs/nodes.cpp: (JSC::ScopeNode::ScopeNode): (JSC::ProgramNode::ProgramNode): (JSC::ProgramNode::create): (JSC::EvalNode::EvalNode): (JSC::EvalNode::create): (JSC::FunctionBodyNode::FunctionBodyNode): (JSC::FunctionBodyNode::create):
  • kjs/nodes.h: (JSC::ScopeNode::usesArguments):
File:
1 edited

Legend:

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

    r36976 r37050  
    21682168    class ScopeNode : public BlockNode {
    21692169    public:
    2170         ScopeNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, bool usesEval, bool needsClosure, int numConstants) JSC_FAST_CALL;
     2170        ScopeNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, bool usesEval, bool needsClosure, bool usesArguments, int numConstants) JSC_FAST_CALL;
    21712171
    21722172        int sourceId() const JSC_FAST_CALL { return m_sourceId; }
     
    21762176        bool usesEval() const { return m_usesEval; }
    21772177        bool needsClosure() const { return m_needsClosure; }
    2178        
     2178        bool usesArguments() const { return m_usesArguments; }
     2179
    21792180        VarStack& varStack() { return m_varStack; }
    21802181        FunctionStack& functionStack() { return m_functionStack; }
     
    21962197        bool m_usesEval;
    21972198        bool m_needsClosure;
     2199        bool m_usesArguments;
    21982200        int m_numConstants;
    21992201    };
     
    22012203    class ProgramNode : public ScopeNode {
    22022204    public:
    2203         static ProgramNode* create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, SourceProvider*, bool usesEval, bool needsClosure, int numConstants) JSC_FAST_CALL;
     2205        static ProgramNode* create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, SourceProvider*, bool usesEval, bool needsClosure, bool usesArguments, int numConstants) JSC_FAST_CALL;
    22042206
    22052207        ProgramCodeBlock& byteCode(ScopeChainNode* scopeChain) JSC_FAST_CALL
     
    22112213
    22122214    private:
    2213         ProgramNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, SourceProvider*, bool usesEval, bool needsClosure, int numConstants) JSC_FAST_CALL;
     2215        ProgramNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, SourceProvider*, bool usesEval, bool needsClosure, bool usesArguments, int numConstants) JSC_FAST_CALL;
    22142216
    22152217        void generateCode(ScopeChainNode*) JSC_FAST_CALL;
     
    22262228    class EvalNode : public ScopeNode {
    22272229    public:
    2228         static EvalNode* create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, SourceProvider*, bool usesEval, bool needsClosure, int numConstants) JSC_FAST_CALL;
     2230        static EvalNode* create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, SourceProvider*, bool usesEval, bool needsClosure, bool usesArguments, int numConstants) JSC_FAST_CALL;
    22292231
    22302232        EvalCodeBlock& byteCode(ScopeChainNode* scopeChain) JSC_FAST_CALL
     
    22362238
    22372239    private:
    2238         EvalNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, SourceProvider*, bool usesEval, bool needsClosure, int numConstants) JSC_FAST_CALL;
     2240        EvalNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, SourceProvider*, bool usesEval, bool needsClosure, bool usesArguments, int numConstants) JSC_FAST_CALL;
    22392241
    22402242        void generateCode(ScopeChainNode*) JSC_FAST_CALL;
     
    22482250    class FunctionBodyNode : public ScopeNode {
    22492251    public:
    2250         static FunctionBodyNode* create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, SourceProvider*, bool usesEval, bool needsClosure, int numConstants) JSC_FAST_CALL;
    2251         static FunctionBodyNode* create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, bool usesEval, bool needsClosure, int numConstants) JSC_FAST_CALL;
     2252        static FunctionBodyNode* create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, SourceProvider*, bool usesEval, bool needsClosure, bool usesArguments, int numConstants) JSC_FAST_CALL;
     2253        static FunctionBodyNode* create(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, bool usesEval, bool needsClosure, bool usesArguments, int numConstants) JSC_FAST_CALL;
    22522254
    22532255        Vector<Identifier>& parameters() JSC_FAST_CALL { return m_parameters; }
     
    22922294
    22932295    protected:
    2294         FunctionBodyNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, bool usesEval, bool needsClosure, int numConstants) JSC_FAST_CALL;
     2296        FunctionBodyNode(JSGlobalData*, SourceElements*, VarStack*, FunctionStack*, bool usesEval, bool needsClosure, bool usesArguments, int numConstants) JSC_FAST_CALL;
    22952297
    22962298    private:
Note: See TracChangeset for help on using the changeset viewer.