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


Ignore:
Timestamp:
Jun 2, 2008, 1:45:13 PM (17 years ago)
Author:
[email protected]
Message:

2008-06-02 Geoffrey Garen <[email protected]>

Reviewed by Darin Adler.


A little cleanup in the CodeGenerator.

  • VM/CodeGenerator.cpp: A few changes here.

(1) Removed remaining cases of the old hack of putting "this" into the
symbol table; replaced with explicit tracking of m_thisRegister.

(2) Made m_thisRegister behave the same for function, eval, and program
code, removing the static programCodeThis() function.

(3) Added a feature to nix a ScopeNode's declaration stacks when done
compiling, to save memory.

(4) Removed code that copied eval declarations into special vectors: we
just use the originals in the ScopeNode now.


  • VM/CodeGenerator.h: Removed unneded parameters from the CodeGenerator constructor: we just use get that data from the ScopeNode now.
  • VM/Machine.cpp: (KJS::Machine::execute): When executing an eval node, don't iterate a special copy of its declarations; iterate the originals, instead.
  • kjs/nodes.cpp: Moved responsibility for knowing what AST data to throw away into the CodeGenerator. Nodes no longer call shrinkCapacity on their data directly.


  • kjs/nodes.h: Changed FunctionStack to ref its contents, so declaration data stays around even after we've thrown away the AST, unless we explicitly throw away the declaration data, too. This is useful for eval code, which needs to reference its declaration data at execution time. (Soon, it will be useful for program code, too, since program code should do the same.)
File:
1 edited

Legend:

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

    r33979 r34319  
    100100        enum { IsConstant = 1, HasInitializer = 2 } VarAttrs;
    101101        typedef Vector<std::pair<Identifier, unsigned>, 16> VarStack;
    102         typedef Vector<FuncDeclNode*, 16> FunctionStack;
     102        typedef Vector<RefPtr<FuncDeclNode>, 16> FunctionStack;
    103103
    104104        DeclarationStacks(ExecState* e, NodeStack& n, VarStack& v, FunctionStack& f)
     
    26212621        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    26222622
     2623        StatementVector& children() { return m_children; }
     2624
    26232625    protected:
    26242626        StatementVector m_children;
     
    29592961        bool usesEval() const { return m_usesEval; }
    29602962        bool needsClosure() const { return m_needsClosure; }
    2961 
     2963       
     2964        VarStack& varStack() { return m_varStack; }
     2965        FunctionStack& functionStack() { return m_functionStack; }
     2966       
    29622967    protected:
    29632968        void optimizeVariableAccess(OldInterpreterExecState*) KJS_FAST_CALL;
Note: See TracChangeset for help on using the changeset viewer.