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


Ignore:
Timestamp:
May 21, 2008, 6:20:45 PM (17 years ago)
Author:
[email protected]
Message:

Merge squirrelfish branch into trunk.

File:
1 edited

Legend:

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

    r33038 r33979  
    2929#include "internal.h"
    3030#include "regexp.h"
     31#include "RegisterID.h"
     32#include "SourceRange.h"
    3133#include "SymbolTable.h"
     34#include <wtf/UnusedParam.h>
    3235#include <wtf/ListRefPtr.h>
    3336#include <wtf/MathExtras.h>
     
    4447
    4548    class ArgumentsNode;
     49    class CodeBlock;
     50    class CodeGenerator;
    4651    class ConstDeclNode;
    4752    class FuncDeclNode;
    4853    class Node;
     54    class EvalCodeBlock;
     55    class ProgramCodeBlock;
    4956    class PropertyListNode;
    5057    class SourceStream;
     
    138145        }
    139146
     147        /*
     148            Return value: The register holding the production's value.
     149                     dst: An optional parameter specifying the most efficient
     150                          destination at which to store the production's value.
     151                          The callee must honor dst.
     152
     153            dst provides for a crude form of copy propagation. For example,
     154
     155            x = 1
     156
     157            becomes
     158           
     159            load r[x], 1
     160           
     161            instead of
     162
     163            load r0, 1
     164            mov r[x], r0
     165           
     166            because the assignment node, "x =", passes r[x] as dst to the number
     167            node, "1".
     168        */
     169        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* dst = 0) KJS_FAST_CALL
     170        {
     171            ASSERT_WITH_MESSAGE(0, "Don't know how to generate code for:\n%s\n", toString().ascii());
     172            UNUSED_PARAM(dst);
     173            return 0;
     174        } // FIXME: Make this pure virtual.
     175
    140176        UString toString() const KJS_FAST_CALL;
    141177        int lineNo() const KJS_FAST_CALL { return m_line; }
     178
     179        virtual bool isReturnNode() const KJS_FAST_CALL { return false; }
    142180
    143181        // Serialization.
     
    145183        virtual Precedence precedence() const = 0;
    146184        virtual bool needsParensIfLeftmost() const { return false; }
    147 
     185       
    148186        // Used for iterative, depth-first traversal of the node tree. Does not cross function call boundaries.
    149         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL { }
     187        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL { }
    150188
    151189    protected:
     
    153191
    154192        // for use in execute()
    155         JSValue* setErrorCompletion(ExecState*, ErrorType, const char* msg) KJS_FAST_CALL;
    156         JSValue* setErrorCompletion(ExecState*, ErrorType, const char* msg, const Identifier&) KJS_FAST_CALL;
     193        JSValue* setErrorCompletion(OldInterpreterExecState*, ErrorType, const char* msg) KJS_FAST_CALL;
     194        JSValue* setErrorCompletion(OldInterpreterExecState*, ErrorType, const char* msg, const Identifier&) KJS_FAST_CALL;
    157195
    158196        // for use in evaluate()
    159         JSValue* throwError(ExecState*, ErrorType, const char* msg) KJS_FAST_CALL;
    160         JSValue* throwError(ExecState*, ErrorType, const char* msg, const char*) KJS_FAST_CALL;
    161         JSValue* throwError(ExecState*, ErrorType, const char* msg, JSValue*, Node*) KJS_FAST_CALL;
    162         JSValue* throwError(ExecState*, ErrorType, const char* msg, const Identifier&) KJS_FAST_CALL;
    163         JSValue* throwError(ExecState*, ErrorType, const char* msg, JSValue*, const Identifier&) KJS_FAST_CALL;
    164         JSValue* throwError(ExecState*, ErrorType, const char* msg, JSValue*, Node*, Node*) KJS_FAST_CALL;
    165         JSValue* throwError(ExecState*, ErrorType, const char* msg, JSValue*, Node*, const Identifier&) KJS_FAST_CALL;
    166 
    167         JSValue* throwUndefinedVariableError(ExecState*, const Identifier&) KJS_FAST_CALL;
    168 
    169         void handleException(ExecState*) KJS_FAST_CALL;
    170         void handleException(ExecState*, JSValue*) KJS_FAST_CALL;
     197        JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg) KJS_FAST_CALL;
     198        JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg, const char*) KJS_FAST_CALL;
     199        JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg, JSValue*, Node*) KJS_FAST_CALL;
     200        JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg, const Identifier&) KJS_FAST_CALL;
     201        JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg, JSValue*, const Identifier&) KJS_FAST_CALL;
     202        JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg, JSValue*, Node*, Node*) KJS_FAST_CALL;
     203        JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg, JSValue*, Node*, const Identifier&) KJS_FAST_CALL;
     204       
     205        RegisterID* emitThrowError(CodeGenerator&, ErrorType, const char* msg);
     206        RegisterID* emitThrowError(CodeGenerator&, ErrorType, const char* msg, const Identifier&);
     207
     208        JSValue* throwUndefinedVariableError(OldInterpreterExecState*, const Identifier&) KJS_FAST_CALL;
     209
     210        void handleException(OldInterpreterExecState*) KJS_FAST_CALL;
     211        void handleException(OldInterpreterExecState*, JSValue*) KJS_FAST_CALL;
    171212
    172213        // for use in execute()
    173         JSValue* rethrowException(ExecState*) KJS_FAST_CALL;
     214        JSValue* rethrowException(OldInterpreterExecState*) KJS_FAST_CALL;
    174215
    175216        int m_line : 28;
     
    199240        JSType expectedReturnType() const KJS_FAST_CALL { return static_cast<JSType>(m_expectedReturnType); }
    200241
    201         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL = 0;
    202         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    203         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    204         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
    205         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
     242        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL = 0;
     243        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     244        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     245        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     246        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
    206247
    207248        // Used to optimize those nodes that do extra work when returning a result, even if the result has no semantic relevance
     
    211252        typedef enum { EvalOperator, FunctionCall } CallerType;
    212253    protected:
    213         template <CallerType, bool> inline JSValue* resolveAndCall(ExecState*, const Identifier&, ArgumentsNode*, size_t = 0);
     254        template <CallerType, bool> inline JSValue* resolveAndCall(OldInterpreterExecState*, const Identifier&, ArgumentsNode*, size_t = 0);
    214255    };
    215256
     
    220261        int firstLine() const KJS_FAST_CALL { return lineNo(); }
    221262        int lastLine() const KJS_FAST_CALL { return m_lastLine; }
    222         virtual JSValue* execute(ExecState *exec) KJS_FAST_CALL = 0;
     263
     264        virtual JSValue* execute(OldInterpreterExecState *exec) KJS_FAST_CALL = 0;
     265
    223266        virtual void pushLabel(const Identifier& ident) KJS_FAST_CALL { m_labelStack.push(ident); }
    224267        virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
     
    234277    class NullNode : public ExpressionNode {
    235278    public:
    236         NullNode() KJS_FAST_CALL : ExpressionNode(NullType) {}
    237         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     279        NullNode() KJS_FAST_CALL
     280            : ExpressionNode(NullType)
     281        {
     282        }
     283
     284        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     285
     286        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    238287        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    239288        virtual Precedence precedence() const { return PrecPrimary; }
     
    247296        }
    248297
    249         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    250         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL { return false; }
     298        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     299
     300        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     301        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL { return false; }
    251302        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    252303        virtual Precedence precedence() const { return PrecPrimary; }
     
    260311        }
    261312
    262         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    263         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL { return true; }
     313        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     314
     315        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     316        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL { return true; }
    264317        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    265318        virtual Precedence precedence() const { return PrecPrimary; }
     
    285338        }
    286339
    287         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    288         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    289         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    290         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    291         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     340        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     341
     342        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     343        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     344        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     345        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     346        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    292347        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    293348        virtual Precedence precedence() const { return signbit(m_double) ? PrecUnary : PrecPrimary; }
     
    310365        }
    311366
    312         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    313         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    314         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     367        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     368        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     369        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    315370
    316371        virtual void setValue(double d) KJS_FAST_CALL { m_double = d; m_value = JSImmediate::from(d); ASSERT(m_value); }
     
    328383        }
    329384
    330         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    331         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    332         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
     385        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     386
     387        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     388        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     389        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
    333390        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    334391        virtual Precedence precedence() const { return PrecPrimary; }
     
    345402        }
    346403
    347         JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     404        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     405
     406        JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    348407        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    349408        virtual Precedence precedence() const { return PrecPrimary; }
     
    359418        }
    360419
    361         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     420        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     421
     422        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    362423        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    363424        virtual Precedence precedence() const { return PrecPrimary; }
     
    378439        }
    379440
    380         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    381 
    382         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    383         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    384         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    385         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    386         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     441        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     442        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     443
     444        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     445        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     446        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     447        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     448        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    387449        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    388450        virtual Precedence precedence() const { return PrecPrimary; }
     
    393455
    394456    protected:
    395         ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
     457        ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
    396458        Identifier m_ident;
    397         size_t m_index; // Used by LocalVarAccessNode and ScopedVarAccessNode.
     459        int m_index; // Used by LocalVarAccessNode and ScopedVarAccessNode.
    398460        size_t m_scopeDepth; // Used by ScopedVarAccessNode
    399461    };
     
    402464    public:
    403465        // Overwrites a ResolveNode in place.
    404         LocalVarAccessNode(size_t i) KJS_FAST_CALL
     466        LocalVarAccessNode(int i) KJS_FAST_CALL
    405467            : ResolveNode(PlacementNewAdopt)
    406468        {
     
    409471        }
    410472
    411         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    412         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    413         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    414         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    415         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
    416 
    417     private:
    418         ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
     473        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     474        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     475        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     476        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     477        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     478
     479    private:
     480        ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
    419481    };
    420482   
     
    422484    public:
    423485        // Overwrites a ResolveNode in place.
    424         ScopedVarAccessNode(size_t i, size_t scopeDepth) KJS_FAST_CALL
     486        ScopedVarAccessNode(int i, size_t scopeDepth) KJS_FAST_CALL
    425487        : ResolveNode(PlacementNewAdopt)
    426488        {
     
    430492        }
    431493       
    432         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    433         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    434         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    435         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    436         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     494        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     495        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     496        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     497        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     498        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    437499       
    438500    private:
    439         ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
     501        ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
    440502    };
    441503   
     
    450512        }
    451513       
    452         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    453         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    454         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    455         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    456         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     514        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     515        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     516        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     517        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     518        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    457519       
    458520    private:
    459         ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
     521        ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
    460522    };
    461523
     
    477539        virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
    478540        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    479         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     541        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    480542
    481543        PassRefPtr<ElementNode> releaseNext() KJS_FAST_CALL { return m_next.release(); }
    482544
    483         JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     545        JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    484546
    485547    private:
     
    512574        }
    513575
    514         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    515         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     576        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     577
     578        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     579        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    516580        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    517581        virtual Precedence precedence() const { return PrecPrimary; }
     
    534598        }
    535599
    536         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     600        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    537601        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    538602        virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
    539603
    540         JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     604        JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    541605        const Identifier& name() const { return m_name; }
    542606
     
    561625        }
    562626
    563         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     627        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     628        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    564629        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    565630        virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
    566631
    567         JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     632        JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    568633        PassRefPtr<PropertyListNode> releaseNext() KJS_FAST_CALL { return m_next.release(); }
    569634
     
    585650        }
    586651
    587         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    588         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     652        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     653        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     654        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    589655        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    590656        virtual Precedence precedence() const { return PrecPrimary; }
     
    603669        }
    604670
    605         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    606         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    607         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    608         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    609         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    610         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     671        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     672
     673        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     674        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     675        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     676        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     677        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     678        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    611679        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    612680        virtual Precedence precedence() const { return PrecMember; }
     
    618686
    619687    private:
    620         ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
     688        ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
    621689
    622690        RefPtr<ExpressionNode> m_base;
     
    632700        }
    633701
    634         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    635         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    636         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    637         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    638         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    639         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     702        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     703        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     704        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     705        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     706        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     707        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     708        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    640709        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    641710        virtual Precedence precedence() const { return PrecMember; }
     
    647716
    648717    private:
    649         ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
     718        ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
    650719
    651720        RefPtr<ExpressionNode> m_base;
     
    666735        }
    667736
    668         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     737        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     738        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    669739        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    670740        virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
    671741
    672         void evaluateList(ExecState*, List&) KJS_FAST_CALL;
     742        void evaluateList(OldInterpreterExecState*, List&) KJS_FAST_CALL;
    673743        PassRefPtr<ArgumentListNode> releaseNext() KJS_FAST_CALL { return m_next.release(); }
    674744
    675     private:
    676         friend class ArgumentsNode;
    677745        ListRefPtr<ArgumentListNode> m_next;
    678746        RefPtr<ExpressionNode> m_expr;
     
    690758        }
    691759
    692         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     760        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    693761        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    694762        virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
    695763
    696         void evaluateList(ExecState* exec, List& list) KJS_FAST_CALL { if (m_listNode) m_listNode->evaluateList(exec, list); }
    697 
    698     private:
     764        void evaluateList(OldInterpreterExecState* exec, List& list) KJS_FAST_CALL { if (m_listNode) m_listNode->evaluateList(exec, list); }
     765
    699766        RefPtr<ArgumentListNode> m_listNode;
    700767    };
     
    713780        }
    714781
    715         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    716         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    717         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    718         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    719         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
    720         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
     782        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     783
     784        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     785        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     786        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     787        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     788        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     789        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
    721790        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    722791        virtual Precedence precedence() const { return PrecLeftHandSide; }
    723792
    724793    private:
    725         ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
     794        ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
    726795
    727796        RefPtr<ExpressionNode> m_expr;
     
    736805        }
    737806
    738         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    739         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     807        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     808        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     809        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    740810        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    741811        virtual Precedence precedence() const { return PrecCall; }
     
    753823        }
    754824
    755         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    756         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     825        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     826        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     827        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    757828        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    758829        virtual Precedence precedence() const { return PrecCall; }
     
    778849        }
    779850
    780         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    781         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    782         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    783         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    784         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    785         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     851        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     852
     853        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     854        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     855        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     856        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     857        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     858        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    786859        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    787860        virtual Precedence precedence() const { return PrecCall; }
    788861
    789862    protected:
    790         ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
     863        ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
    791864
    792865        Identifier m_ident;
     
    798871    class LocalVarFunctionCallNode : public FunctionCallResolveNode {
    799872    public:
    800         LocalVarFunctionCallNode(size_t i) KJS_FAST_CALL
     873        LocalVarFunctionCallNode(int i) KJS_FAST_CALL
    801874            : FunctionCallResolveNode(PlacementNewAdopt)
    802875        {
     
    805878        }
    806879       
    807         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    808         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    809         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    810         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    811         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     880        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     881        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     882        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     883        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     884        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    812885       
    813886    private:
    814         ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
     887        ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
    815888    };
    816889   
    817890    class ScopedVarFunctionCallNode : public FunctionCallResolveNode {
    818891    public:
    819         ScopedVarFunctionCallNode(size_t i, size_t depth) KJS_FAST_CALL
     892        ScopedVarFunctionCallNode(int i, size_t depth) KJS_FAST_CALL
    820893            : FunctionCallResolveNode(PlacementNewAdopt)
    821894        {
     
    825898        }
    826899       
    827         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    828         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    829         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    830         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    831         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     900        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     901        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     902        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     903        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     904        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    832905       
    833906    private:
    834         ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
     907        ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
    835908    };
    836909   
     
    843916        }
    844917       
    845         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    846         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    847         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    848         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    849         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     918        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     919        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     920        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     921        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     922        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    850923       
    851924    private:
    852         ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
     925        ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
    853926    };
    854927
     
    862935        }
    863936
    864         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    865         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     937        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     938        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     939        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    866940        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    867941        virtual Precedence precedence() const { return PrecCall; }
     
    882956        }
    883957
    884         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    885         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    886         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    887         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    888         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    889         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     958        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     959        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     960        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     961        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     962        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     963        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     964        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    890965        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    891966        virtual Precedence precedence() const { return PrecCall; }
    892967
    893968    private:
    894         ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
     969        ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
    895970
    896971        RefPtr<ExpressionNode> m_base;
     
    9301005        }
    9311006
    932         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    933         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1007        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1008        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1009        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    9341010        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    9351011        virtual Precedence precedence() const { return PrecPostfix; }
     
    9391015    class PostIncLocalVarNode : public PostIncResolveNode {
    9401016    public:
    941         PostIncLocalVarNode(size_t i) KJS_FAST_CALL
     1017        PostIncLocalVarNode(int i) KJS_FAST_CALL
    9421018            : PostIncResolveNode(PlacementNewAdopt)
    9431019        {
     
    9461022        }
    9471023
    948         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1024        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    9491025        virtual void optimizeForUnnecessaryResult();
    9501026    };
     
    9521028    class PostIncConstNode : public PostIncResolveNode {
    9531029    public:
    954         PostIncConstNode(size_t i) KJS_FAST_CALL
     1030        PostIncConstNode(int i) KJS_FAST_CALL
    9551031            : PostIncResolveNode(PlacementNewAdopt)
    9561032        {
     
    9591035        }
    9601036
    961         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1037        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    9621038    };
    9631039
     
    9741050        }
    9751051
    976         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    977         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1052        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1053
     1054        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1055        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    9781056        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    9791057        virtual Precedence precedence() const { return PrecPostfix; }
     
    9831061    class PostDecLocalVarNode : public PostDecResolveNode {
    9841062    public:
    985         PostDecLocalVarNode(size_t i) KJS_FAST_CALL
     1063        PostDecLocalVarNode(int i) KJS_FAST_CALL
    9861064            : PostDecResolveNode(PlacementNewAdopt)
    9871065        {
     
    9901068        }
    9911069
    992         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    993         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    994         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    995         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    996         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     1070        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     1071        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     1072        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     1073        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     1074        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    9971075        virtual void optimizeForUnnecessaryResult();
    9981076
    9991077    private:
    1000         ALWAYS_INLINE double inlineEvaluateToNumber(ExecState*);
     1078        ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*);
    10011079    };
    10021080
    10031081    class PostDecConstNode : public PostDecResolveNode {
    10041082    public:
    1005         PostDecConstNode(size_t i) KJS_FAST_CALL
     1083        PostDecConstNode(int i) KJS_FAST_CALL
    10061084            : PostDecResolveNode(PlacementNewAdopt)
    10071085        {
     
    10101088        }
    10111089
    1012         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1090        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    10131091    };
    10141092
     
    10211099        }
    10221100
    1023         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1101        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    10241102        virtual Precedence precedence() const { return PrecPostfix; }
    10251103
     
    10361114        }
    10371115
    1038         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1116        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1117
     1118        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    10391119        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    10401120    };
     
    10471127        }
    10481128
    1049         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1129        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1130
     1131        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    10501132        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    10511133    };
     
    10591141        }
    10601142
    1061         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1143        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    10621144        virtual Precedence precedence() const { return PrecPostfix; }
    10631145
     
    10741156        }
    10751157
    1076         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1158        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1159
     1160        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    10771161        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    10781162    };
     
    10851169        }
    10861170
    1087         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1171        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1172
     1173        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    10881174        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    10891175    };
     
    10971183        }
    10981184
    1099         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1185        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1186        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    11001187        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    11011188        virtual Precedence precedence() const { return PrecPostfix; }
     
    11191206        }
    11201207
    1121         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1122         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1208        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1209
     1210        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1211        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    11231212        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    11241213        virtual Precedence precedence() const { return PrecUnary; }
     
    11351224        }
    11361225
    1137         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1226        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    11381227    };
    11391228
     
    11461235        }
    11471236
    1148         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1149         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1237        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1238
     1239        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1240        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    11501241        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    11511242        virtual Precedence precedence() const { return PrecUnary; }
     
    11641255        }
    11651256
    1166         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1167         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1257        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1258
     1259        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1260        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    11681261        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    11691262        virtual Precedence precedence() const { return PrecUnary; }
     
    11811274        }
    11821275
    1183         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1184         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1276        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1277
     1278        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1279        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    11851280        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    11861281        virtual Precedence precedence() const { return PrecUnary; }
     
    11971292        }
    11981293
    1199         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1200         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1294        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1295
     1296        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1297        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    12011298        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    12021299        virtual Precedence precedence() const { return PrecUnary; }
     
    12211318        }
    12221319
    1223         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1224 
    1225         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1320        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1321
     1322        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1323        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    12261324        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    12271325        virtual Precedence precedence() const { return PrecUnary; }
     
    12361334    class LocalVarTypeOfNode : public TypeOfResolveNode {
    12371335    public:
    1238         LocalVarTypeOfNode(size_t i) KJS_FAST_CALL
     1336        LocalVarTypeOfNode(int i) KJS_FAST_CALL
    12391337            : TypeOfResolveNode(PlacementNewAdopt)
    12401338        {
     
    12441342        }
    12451343
    1246         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1344        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    12471345    };
    12481346
     
    12551353        }
    12561354
    1257         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1258         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1355        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1356
     1357        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1358        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    12591359        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    12601360        virtual Precedence precedence() const { return PrecUnary; }
     
    12761376        }
    12771377
    1278         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1279 
    1280         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1378        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1379
     1380        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1381        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    12811382        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    12821383        virtual Precedence precedence() const { return PrecUnary; }
     
    12851386    class PreIncLocalVarNode : public PreIncResolveNode {
    12861387    public:
    1287         PreIncLocalVarNode(size_t i) KJS_FAST_CALL
     1388        PreIncLocalVarNode(int i) KJS_FAST_CALL
    12881389            : PreIncResolveNode(PlacementNewAdopt)
    12891390        {
     
    12921393        }
    12931394
    1294         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1395        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    12951396    };
    12961397
    12971398    class PreIncConstNode : public PreIncResolveNode {
    12981399    public:
    1299         PreIncConstNode(size_t i) KJS_FAST_CALL
     1400        PreIncConstNode(int i) KJS_FAST_CALL
    13001401            : PreIncResolveNode(PlacementNewAdopt)
    13011402        {
     
    13041405        }
    13051406
    1306         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1407        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    13071408    };
    13081409
     
    13191420        }
    13201421
    1321         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1322 
    1323         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1422        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1423
     1424        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1425        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    13241426        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    13251427        virtual Precedence precedence() const { return PrecUnary; }
     
    13281430    class PreDecLocalVarNode : public PreDecResolveNode {
    13291431    public:
    1330         PreDecLocalVarNode(size_t i) KJS_FAST_CALL
     1432        PreDecLocalVarNode(int i) KJS_FAST_CALL
    13311433            : PreDecResolveNode(PlacementNewAdopt)
    13321434        {
     
    13351437        }
    13361438
    1337         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1439        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    13381440    };
    13391441
    13401442    class PreDecConstNode : public PreDecResolveNode {
    13411443    public:
    1342         PreDecConstNode(size_t i) KJS_FAST_CALL
     1444        PreDecConstNode(int i) KJS_FAST_CALL
    13431445            : PreDecResolveNode(PlacementNewAdopt)
    13441446        {
     
    13471449        }
    13481450
    1349         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1451        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    13501452    };
    13511453
     
    13581460        }
    13591461
    1360         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1462        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    13611463        virtual Precedence precedence() const { return PrecUnary; }
    13621464
     
    13731475        }
    13741476
    1375         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1477        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1478
     1479        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    13761480        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    13771481    };
     
    13841488        }
    13851489
    1386         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1490        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1491
     1492        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    13871493        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    13881494    };
     
    13961502        }
    13971503
    1398         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1504        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    13991505        virtual Precedence precedence() const { return PrecPostfix; }
    14001506
     
    14111517        }
    14121518
    1413         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1519        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1520
     1521        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    14141522        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    14151523    };
     
    14221530        }
    14231531
    1424         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1532        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1533
     1534        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    14251535        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    14261536    };
     
    14341544        }
    14351545
    1436         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1546        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1547        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    14371548        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    14381549        virtual Precedence precedence() const { return PrecUnary; }
     
    14511562        }
    14521563
    1453         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1454         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1455         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    1456         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    1457         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    1458         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     1564        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1565        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1566        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     1567        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     1568        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     1569        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     1570        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    14591571        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    14601572        virtual Precedence precedence() const { return PrecUnary; }
     
    14721584        }
    14731585
    1474         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1475         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1476         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
     1586        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1587        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1588        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     1589        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
    14771590        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    14781591        virtual Precedence precedence() const { return PrecUnary; }
     
    14901603        }
    14911604
    1492         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1493         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1494         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    1495         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    1496         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    1497         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     1605        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1606        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1607        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     1608        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     1609        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     1610        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     1611        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    14981612        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    14991613        virtual Precedence precedence() const { return PrecUnary; }
    15001614
    15011615    private:
    1502         ALWAYS_INLINE int32_t inlineEvaluateToInt32(ExecState*);
     1616        ALWAYS_INLINE int32_t inlineEvaluateToInt32(OldInterpreterExecState*);
    15031617
    15041618        RefPtr<ExpressionNode> m_expr;
     
    15131627        }
    15141628
    1515         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1516         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1517         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
     1629        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1630        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1631        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     1632        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
    15181633        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    15191634        virtual Precedence precedence() const { return PrecUnary; }
     
    15321647        }
    15331648
    1534         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1535         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1536         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    1537         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    1538         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    1539         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     1649        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1650        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1651        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     1652        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     1653        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     1654        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     1655        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    15401656        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    15411657        virtual Precedence precedence() const { return PrecMultiplicitave; }
    15421658
    15431659    private:
    1544         ALWAYS_INLINE double inlineEvaluateToNumber(ExecState*);
     1660        ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*);
    15451661
    15461662        RefPtr<ExpressionNode> m_term1;
     
    15571673        }
    15581674
    1559         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1560         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1561         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    1562         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    1563         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     1675        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1676        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1677        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     1678        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     1679        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     1680        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    15641681        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    15651682        virtual Precedence precedence() const { return PrecMultiplicitave; }
    15661683
    15671684    private:
    1568         ALWAYS_INLINE double inlineEvaluateToNumber(ExecState*);
     1685        ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*);
    15691686
    15701687        RefPtr<ExpressionNode> m_term1;
     
    15811698        }
    15821699
    1583         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1584         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1585         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    1586         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    1587         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    1588         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     1700        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1701        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1702        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     1703        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     1704        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     1705        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     1706        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    15891707        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    15901708        virtual Precedence precedence() const { return PrecMultiplicitave; }
    15911709
    15921710    private:
    1593         ALWAYS_INLINE double inlineEvaluateToNumber(ExecState*);
     1711        ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*);
    15941712
    15951713        RefPtr<ExpressionNode> m_term1;
     
    16051723        }
    16061724
    1607         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1608         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1609         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    1610         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    1611         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     1725        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1726        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1727        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     1728        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     1729        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     1730        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    16121731        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    16131732        virtual Precedence precedence() const { return PrecAdditive; }
     
    16251744
    16261745    private:
    1627         ALWAYS_INLINE double inlineEvaluateToNumber(ExecState*);
     1746        ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*);
    16281747    };
    16291748
     
    16351754        }
    16361755
    1637         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1638         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    1639         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    1640         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
    1641 
    1642     private:
    1643         ALWAYS_INLINE double inlineEvaluateToNumber(ExecState*) KJS_FAST_CALL;
     1756        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     1757        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     1758        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     1759        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     1760
     1761    private:
     1762        ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
    16441763    };
    16451764
     
    16511770        }
    16521771
    1653         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1772        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    16541773    };
    16551774
     
    16611780        }
    16621781
    1663         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1782        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    16641783    };
    16651784
     
    16711790        }
    16721791
    1673         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     1792        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    16741793    };
    16751794
     
    16831802        }
    16841803
    1685         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1686         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1687         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    1688         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    1689         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     1804        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1805        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1806        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     1807        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     1808        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     1809        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    16901810        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    16911811        virtual Precedence precedence() const { return PrecAdditive; }
    16921812
    16931813    private:
    1694         ALWAYS_INLINE double inlineEvaluateToNumber(ExecState*);
     1814        ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*);
    16951815
    16961816        RefPtr<ExpressionNode> m_term1;
     
    17071827        }
    17081828
    1709         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1710         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1711         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    1712         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    1713         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     1829        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1830        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1831        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     1832        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     1833        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     1834        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    17141835        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    17151836        virtual Precedence precedence() const { return PrecShift; }
    17161837
    17171838    private:
    1718         ALWAYS_INLINE int32_t inlineEvaluateToInt32(ExecState*);
     1839        ALWAYS_INLINE int32_t inlineEvaluateToInt32(OldInterpreterExecState*);
    17191840
    17201841        RefPtr<ExpressionNode> m_term1;
     
    17311852        }
    17321853
    1733         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1734         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1735         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    1736         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    1737         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     1854        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1855        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1856        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     1857        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     1858        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     1859        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    17381860        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    17391861        virtual Precedence precedence() const { return PrecShift; }
    17401862
    17411863    private:
    1742         ALWAYS_INLINE int32_t inlineEvaluateToInt32(ExecState*);
     1864        ALWAYS_INLINE int32_t inlineEvaluateToInt32(OldInterpreterExecState*);
    17431865
    17441866        RefPtr<ExpressionNode> m_term1;
     
    17551877        }
    17561878
    1757         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1758         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1759         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    1760         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    1761         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     1879        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1880        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1881        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     1882        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     1883        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     1884        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    17621885        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    17631886        virtual Precedence precedence() const { return PrecShift; }
    17641887    private:
    1765         ALWAYS_INLINE uint32_t inlineEvaluateToUInt32(ExecState*);
     1888        ALWAYS_INLINE uint32_t inlineEvaluateToUInt32(OldInterpreterExecState*);
    17661889
    17671890        RefPtr<ExpressionNode> m_term1;
     
    17781901        }
    17791902
    1780         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1781         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1782         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
     1903        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1904        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1905        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     1906        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
    17831907        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    17841908        virtual Precedence precedence() const { return PrecRelational; }
    17851909
    17861910    private:
    1787         ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
     1911        ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
    17881912
    17891913    protected:
     
    17991923        }
    18001924
    1801         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1802         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    1803 
    1804     private:
    1805         ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
     1925        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     1926        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     1927
     1928    private:
     1929        ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
    18061930    };
    18071931
     
    18131937        }
    18141938
    1815         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1816         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    1817 
    1818     private:
    1819         ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
     1939        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     1940        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     1941
     1942    private:
     1943        ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
    18201944    };
    18211945
     
    18281952        }
    18291953
    1830         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1831         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1832         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
     1954        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1955        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1956        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     1957        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
    18331958        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    18341959        virtual Precedence precedence() const { return PrecRelational; }
    18351960
    18361961    private:
    1837         ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
     1962        ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
    18381963
    18391964        RefPtr<ExpressionNode> m_expr1;
     
    18491974        }
    18501975
    1851         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1852         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1853         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
     1976        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1977        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     1978        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     1979        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
    18541980        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    18551981        virtual Precedence precedence() const { return PrecRelational; }
    18561982
    18571983    private:
    1858         ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
     1984        ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
    18591985
    18601986        RefPtr<ExpressionNode> m_expr1;
     
    18701996        }
    18711997
    1872         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1873         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1874         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
     1998        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     1999        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2000        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     2001        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
    18752002        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    18762003        virtual Precedence precedence() const { return PrecRelational; }
    18772004
    18782005    private:
    1879         ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
     2006        ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
    18802007
    18812008        RefPtr<ExpressionNode> m_expr1;
     
    18922019        }
    18932020
    1894         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1895         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1896         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
     2021        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2022        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2023        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     2024        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
    18972025        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    18982026        virtual Precedence precedence() const { return PrecRelational; }
     
    19112039        }
    19122040
    1913         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1914         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1915         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
     2041        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2042
     2043        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2044        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     2045        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
    19162046        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    19172047        virtual Precedence precedence() const { return PrecRelational; }
     
    19312061        }
    19322062
    1933         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1934         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1935         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
     2063        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2064        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2065        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     2066        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
    19362067        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    19372068        virtual Precedence precedence() const { return PrecEquality; }
    19382069
    19392070    private:
    1940         ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
     2071        ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
    19412072
    19422073        RefPtr<ExpressionNode> m_expr1;
     
    19532084        }
    19542085
    1955         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1956         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1957         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
     2086        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2087        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2088        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     2089        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
    19582090        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    19592091        virtual Precedence precedence() const { return PrecEquality; }
    19602092
    19612093    private:
    1962         ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
     2094        ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
    19632095
    19642096        RefPtr<ExpressionNode> m_expr1;
     
    19752107        }
    19762108
    1977         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    1978         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    1979         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
     2109        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2110        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2111        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     2112        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
    19802113        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    19812114        virtual Precedence precedence() const { return PrecEquality; }
    19822115
    19832116    private:
    1984         ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
     2117        ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
    19852118
    19862119        RefPtr<ExpressionNode> m_expr1;
     
    19972130        }
    19982131
    1999         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2000         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    2001         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
     2132        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2133        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2134        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     2135        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
    20022136        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    20032137        virtual Precedence precedence() const { return PrecEquality; }
    20042138
    20052139    private:
    2006         ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
     2140        ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
    20072141
    20082142        RefPtr<ExpressionNode> m_expr1;
     
    20192153        }
    20202154
    2021         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2022         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    2023         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    2024         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    2025         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    2026         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     2155        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2156        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2157        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     2158        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     2159        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     2160        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     2161        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    20272162        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    20282163        virtual Precedence precedence() const { return PrecBitwiseAnd; }
    20292164
    20302165    private:
    2031         ALWAYS_INLINE int32_t inlineEvaluateToInt32(ExecState*);
     2166        ALWAYS_INLINE int32_t inlineEvaluateToInt32(OldInterpreterExecState*);
    20322167
    20332168        RefPtr<ExpressionNode> m_expr1;
     
    20442179        }
    20452180
    2046         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2047         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    2048         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    2049         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    2050         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    2051         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     2181        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2182        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2183        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     2184        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     2185        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     2186        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     2187        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    20522188        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    20532189        virtual Precedence precedence() const { return PrecBitwiseOr; }
    20542190
    20552191    private:
    2056         ALWAYS_INLINE int32_t inlineEvaluateToInt32(ExecState*);
     2192        ALWAYS_INLINE int32_t inlineEvaluateToInt32(OldInterpreterExecState*);
    20572193
    20582194        RefPtr<ExpressionNode> m_expr1;
     
    20692205        }
    20702206
    2071         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2072         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    2073         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    2074         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    2075         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    2076         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     2207        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2208        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2209        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     2210        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     2211        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     2212        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     2213        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    20772214        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    20782215        virtual Precedence precedence() const { return PrecBitwiseXor; }
    20792216
    20802217    private:
    2081         ALWAYS_INLINE int32_t inlineEvaluateToInt32(ExecState*);
     2218        ALWAYS_INLINE int32_t inlineEvaluateToInt32(OldInterpreterExecState*);
    20822219
    20832220        RefPtr<ExpressionNode> m_expr1;
     
    20972234        }
    20982235
    2099         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2100         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    2101         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
     2236        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2237        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2238        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     2239        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
    21022240        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    21032241        virtual Precedence precedence() const { return PrecLogicalAnd; }
    21042242
    21052243    private:
    2106         ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
     2244        ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
    21072245
    21082246        RefPtr<ExpressionNode> m_expr1;
     
    21192257        }
    21202258
    2121         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2122         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    2123         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
     2259        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2260        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2261        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     2262        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
    21242263        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    21252264        virtual Precedence precedence() const { return PrecLogicalOr; }
    21262265
    21272266    private:
    2128         ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
     2267        ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
    21292268
    21302269        RefPtr<ExpressionNode> m_expr1;
     
    21442283        }
    21452284
    2146         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2147         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    2148         virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
    2149         virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
    2150         virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
    2151         virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
     2285        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2286        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2287        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     2288        virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
     2289        virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
     2290        virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
     2291        virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
    21522292        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    21532293        virtual Precedence precedence() const { return PrecConditional; }
     
    21612301    class ReadModifyResolveNode : public ExpressionNode {
    21622302    public:
    2163         ReadModifyResolveNode(const Identifier& ident, Operator oper, ExpressionNode*  right) KJS_FAST_CALL
     2303        ReadModifyResolveNode(const Identifier& ident, Operator oper, ExpressionNode*  right, bool rightHasAssignments) KJS_FAST_CALL
    21642304            : m_ident(ident)
     2305            , m_right(right)
    21652306            , m_operator(oper)
    2166             , m_right(right)
     2307            , m_rightHasAssignments(rightHasAssignments)
    21672308        {
    21682309        }
     
    21722313            , m_ident(PlacementNewAdopt)
    21732314            , m_right(PlacementNewAdopt)
    2174         {
    2175         }
    2176 
    2177         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2178         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     2315            , m_rightHasAssignments(true)
     2316        {
     2317        }
     2318
     2319        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2320
     2321        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2322        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    21792323        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    21802324        virtual Precedence precedence() const { return PrecAssignment; }
     
    21822326    protected:
    21832327        Identifier m_ident;
    2184         Operator m_operator;
    21852328        RefPtr<ExpressionNode> m_right;
    21862329        size_t m_index; // Used by ReadModifyLocalVarNode.
     2330        Operator m_operator : 31;
     2331        bool m_rightHasAssignments : 1;
    21872332    };
    21882333
    21892334    class ReadModifyLocalVarNode : public ReadModifyResolveNode {
    21902335    public:
    2191         ReadModifyLocalVarNode(size_t i) KJS_FAST_CALL
     2336        ReadModifyLocalVarNode(int i) KJS_FAST_CALL
    21922337            : ReadModifyResolveNode(PlacementNewAdopt)
    21932338        {
     
    21962341        }
    21972342
    2198         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     2343        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    21992344    };
    22002345
    22012346    class ReadModifyConstNode : public ReadModifyResolveNode {
    22022347    public:
    2203         ReadModifyConstNode(size_t i) KJS_FAST_CALL
     2348        ReadModifyConstNode(int i) KJS_FAST_CALL
    22042349            : ReadModifyResolveNode(PlacementNewAdopt)
    22052350        {
     
    22082353        }
    22092354
    2210         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     2355        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    22112356    };
    22122357
    22132358    class AssignResolveNode : public ExpressionNode {
    22142359    public:
    2215         AssignResolveNode(const Identifier& ident, ExpressionNode* right) KJS_FAST_CALL
     2360        AssignResolveNode(const Identifier& ident, ExpressionNode* right, bool rightHasAssignments) KJS_FAST_CALL
    22162361            : m_ident(ident)
    22172362            , m_right(right)
     2363            , m_rightHasAssignments(rightHasAssignments)
    22182364        {
    22192365        }
     
    22252371        {
    22262372        }
    2227 
    2228         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2229         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     2373       
     2374        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2375
     2376        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2377        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    22302378        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    22312379        virtual Precedence precedence() const { return PrecAssignment; }
     
    22352383        RefPtr<ExpressionNode> m_right;
    22362384        size_t m_index; // Used by ReadModifyLocalVarNode.
     2385        bool m_rightHasAssignments;
    22372386    };
    22382387
    22392388    class AssignLocalVarNode : public AssignResolveNode {
    22402389    public:
    2241         AssignLocalVarNode(size_t i) KJS_FAST_CALL
     2390        AssignLocalVarNode(int i) KJS_FAST_CALL
    22422391            : AssignResolveNode(PlacementNewAdopt)
    22432392        {
     
    22462395        }
    22472396
    2248         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     2397        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    22492398    };
    22502399
     
    22562405        }
    22572406
    2258         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     2407        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    22592408    };
    22602409
    22612410    class ReadModifyBracketNode : public ExpressionNode {
    22622411    public:
    2263         ReadModifyBracketNode(ExpressionNode* base, ExpressionNode* subscript, Operator oper, ExpressionNode* right) KJS_FAST_CALL
    2264             : m_base(base)
    2265             , m_subscript(subscript)
    2266             , m_operator(oper)
    2267             , m_right(right)
    2268         {
    2269         }
    2270 
    2271         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2272         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    2273         virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    2274         virtual Precedence precedence() const { return PrecAssignment; }
    2275 
    2276     protected:
    2277         RefPtr<ExpressionNode> m_base;
    2278         RefPtr<ExpressionNode> m_subscript;
    2279         Operator m_operator;
    2280         RefPtr<ExpressionNode> m_right;
    2281     };
    2282 
    2283     class AssignBracketNode : public ExpressionNode {
    2284     public:
    2285         AssignBracketNode(ExpressionNode* base, ExpressionNode* subscript, ExpressionNode* right) KJS_FAST_CALL
     2412        ReadModifyBracketNode(ExpressionNode* base, ExpressionNode* subscript, Operator oper, ExpressionNode* right, bool subscriptHasAssignments, bool rightHasAssignments) KJS_FAST_CALL
    22862413            : m_base(base)
    22872414            , m_subscript(subscript)
    22882415            , m_right(right)
    2289         {
    2290         }
    2291 
    2292         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2293         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     2416            , m_operator(oper)
     2417            , m_subscriptHasAssignments(subscriptHasAssignments)
     2418            , m_rightHasAssignments(rightHasAssignments)
     2419        {
     2420        }
     2421
     2422        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2423
     2424        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2425        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    22942426        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    22952427        virtual Precedence precedence() const { return PrecAssignment; }
     
    22992431        RefPtr<ExpressionNode> m_subscript;
    23002432        RefPtr<ExpressionNode> m_right;
     2433        Operator m_operator : 30;
     2434        bool m_subscriptHasAssignments : 1;
     2435        bool m_rightHasAssignments : 1;
     2436    };
     2437
     2438    class AssignBracketNode : public ExpressionNode {
     2439    public:
     2440        AssignBracketNode(ExpressionNode* base, ExpressionNode* subscript, ExpressionNode* right, bool subscriptHasAssignments, bool rightHasAssignments) KJS_FAST_CALL
     2441            : m_base(base)
     2442            , m_subscript(subscript)
     2443            , m_right(right)
     2444            , m_subscriptHasAssignments(subscriptHasAssignments)
     2445            , m_rightHasAssignments(rightHasAssignments)
     2446        {
     2447        }
     2448
     2449        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2450
     2451        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2452        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     2453        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
     2454        virtual Precedence precedence() const { return PrecAssignment; }
     2455
     2456    protected:
     2457        RefPtr<ExpressionNode> m_base;
     2458        RefPtr<ExpressionNode> m_subscript;
     2459        RefPtr<ExpressionNode> m_right;
     2460        bool m_subscriptHasAssignments : 1;
     2461        bool m_rightHasAssignments : 1;
    23012462    };
    23022463
    23032464    class AssignDotNode : public ExpressionNode {
    23042465    public:
    2305         AssignDotNode(ExpressionNode* base, const Identifier& ident, ExpressionNode* right) KJS_FAST_CALL
     2466        AssignDotNode(ExpressionNode* base, const Identifier& ident, ExpressionNode* right, bool rightHasAssignments) KJS_FAST_CALL
    23062467            : m_base(base)
    23072468            , m_ident(ident)
    23082469            , m_right(right)
    2309         {
    2310         }
    2311 
    2312         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2313         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     2470            , m_rightHasAssignments(rightHasAssignments)
     2471        {
     2472        }
     2473
     2474        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2475        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2476        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    23142477        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    23152478        virtual Precedence precedence() const { return PrecAssignment; }
     
    23192482        Identifier m_ident;
    23202483        RefPtr<ExpressionNode> m_right;
     2484        bool m_rightHasAssignments;
    23212485    };
    23222486
    23232487    class ReadModifyDotNode : public ExpressionNode {
    23242488    public:
    2325         ReadModifyDotNode(ExpressionNode* base, const Identifier& ident, Operator oper, ExpressionNode* right) KJS_FAST_CALL
     2489        ReadModifyDotNode(ExpressionNode* base, const Identifier& ident, Operator oper, ExpressionNode* right, bool rightHasAssignments) KJS_FAST_CALL
    23262490            : m_base(base)
    23272491            , m_ident(ident)
     2492            , m_right(right)
    23282493            , m_operator(oper)
    2329             , m_right(right)
    2330         {
    2331         }
    2332 
    2333         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2334         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     2494            , m_rightHasAssignments(rightHasAssignments)
     2495        {
     2496        }
     2497
     2498        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2499
     2500        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2501        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    23352502        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    23362503        virtual Precedence precedence() const { return PrecAssignment; }
     
    23392506        RefPtr<ExpressionNode> m_base;
    23402507        Identifier m_ident;
    2341         Operator m_operator;
    23422508        RefPtr<ExpressionNode> m_right;
     2509        Operator m_operator : 31;
     2510        bool m_rightHasAssignments : 1;
    23432511    };
    23442512
     
    23522520        }
    23532521
    2354         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     2522        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2523        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    23552524        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    23562525        virtual Precedence precedence() const { return PrecAssignment; }
     
    23712540        }
    23722541
    2373         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2374         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     2542        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2543        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2544        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    23752545        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    23762546        virtual Precedence precedence() const { return PrecExpression; }
     
    23942564        ConstDeclNode(const Identifier& ident, ExpressionNode* in) KJS_FAST_CALL;
    23952565
    2396         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2397         virtual KJS::JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    2398         void evaluateSingle(ExecState*) KJS_FAST_CALL;
     2566        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2567        virtual KJS::JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     2568        void evaluateSingle(OldInterpreterExecState*) KJS_FAST_CALL;
    23992569        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    24002570        virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
     
    24042574        ListRefPtr<ConstDeclNode> m_next;
    24052575        RefPtr<ExpressionNode> m_init;
    2406 
    2407     private:
    2408         void handleSlowCase(ExecState*, const ScopeChain&, JSValue*) KJS_FAST_CALL NEVER_INLINE;
     2576       
     2577        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2578        virtual RegisterID* emitCodeSingle(CodeGenerator&) KJS_FAST_CALL;
     2579    private:
     2580        void handleSlowCase(OldInterpreterExecState*, const ScopeChain&, JSValue*) KJS_FAST_CALL NEVER_INLINE;
    24092581    };
    24102582
     
    24162588        }
    24172589
    2418         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2419         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
    2420         virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    2421 
     2590        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2591        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
     2592        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
     2593       
     2594        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
    24222595    private:
    24232596        RefPtr<ConstDeclNode> m_next;
     
    24432616        BlockNode(SourceElements* children) KJS_FAST_CALL;
    24442617
    2445         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2446         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
     2618        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2619        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2620        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
    24472621        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    24482622
     
    24572631        }
    24582632
    2459         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
     2633        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2634
     2635        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
    24602636        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    24612637        virtual bool isEmptyStatement() const KJS_FAST_CALL { return true; }
     
    24692645        }
    24702646
    2471         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2472         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
     2647        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2648        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2649        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
    24732650        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    24742651
     
    24832660        {
    24842661        }
    2485 
    2486         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2487         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
     2662       
     2663        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2664
     2665        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2666        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
    24882667        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    24892668
     
    25002679        }
    25012680
    2502         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2503         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
     2681        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2682        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2683        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
    25042684        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    25052685
     
    25172697        }
    25182698
    2519         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2520         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
     2699        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2700        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2701        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
    25212702        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    25222703
     
    25332714        }
    25342715
    2535         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2536         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
     2716        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2717        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2718        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
    25372719        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    25382720
     
    25502732        }
    25512733
    2552         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2553         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
     2734        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2735        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2736        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
    25542737        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    25552738
     
    25772760        }
    25782761
    2579         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2580         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
     2762        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2763        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2764        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
    25812765        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    25822766
     
    25932777        ForInNode(ExpressionNode*, ExpressionNode*, StatementNode*) KJS_FAST_CALL;
    25942778        ForInNode(const Identifier&, ExpressionNode*, ExpressionNode*, StatementNode*) KJS_FAST_CALL;
    2595 
    2596         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2597         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
     2779       
     2780        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2781        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2782        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
    25982783        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    25992784
     
    26172802        {
    26182803        }
    2619 
    2620         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
     2804       
     2805        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2806        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
    26212807        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    26222808
     
    26352821        {
    26362822        }
    2637 
    2638         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
     2823       
     2824        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2825        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
    26392826        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    26402827
     
    26502837        }
    26512838
    2652         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2653         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
    2654         virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
     2839        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2840        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2841        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
     2842        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
     2843        virtual bool isReturnNode() const KJS_FAST_CALL { return true; }
    26552844
    26562845    private:
     
    26662855        }
    26672856
    2668         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2669         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
     2857        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2858        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2859        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
    26702860        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    26712861
     
    26832873        }
    26842874
    2685         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2686         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
     2875        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2876        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2877        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
    26872878        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    26882879        virtual void pushLabel(const Identifier& ident) KJS_FAST_CALL { m_statement->pushLabel(ident); }
     
    27002891        }
    27012892
    2702         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2703         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
     2893        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2894        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2895        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
    27042896        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    27052897
     
    27182910        }
    27192911
    2720         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2721         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
    2722         virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
     2912        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     2913        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
     2914        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
     2915
     2916        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* dst = 0) KJS_FAST_CALL;
    27232917
    27242918    private:
     
    27652959        bool usesEval() const { return m_usesEval; }
    27662960        bool needsClosure() const { return m_needsClosure; }
    2767        
     2961
    27682962    protected:
    2769         void optimizeVariableAccess(ExecState*) KJS_FAST_CALL;
     2963        void optimizeVariableAccess(OldInterpreterExecState*) KJS_FAST_CALL;
    27702964
    27712965        VarStack m_varStack;
    27722966        FunctionStack m_functionStack;
     2967
    27732968    private:
    27742969        UString m_sourceURL;
     
    27812976    public:
    27822977        static ProgramNode* create(SourceElements*, VarStack*, FunctionStack*, bool usesEval, bool needsClosure) KJS_FAST_CALL;
    2783 
    2784         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
     2978        virtual ~ProgramNode();
     2979       
     2980        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
     2981
     2982        ProgramCodeBlock& code(ScopeChainNode* scopeChain, bool canCreateGlobals) KJS_FAST_CALL
     2983        {
     2984            if (!m_code)
     2985                generateCode(scopeChain, canCreateGlobals);
     2986            return *m_code;
     2987        }
    27852988
    27862989    private:
    27872990        ProgramNode(SourceElements*, VarStack*, FunctionStack*, bool usesEval, bool needsClosure) KJS_FAST_CALL;
    27882991
    2789         void initializeSymbolTable(ExecState*) KJS_FAST_CALL;
    2790         ALWAYS_INLINE void processDeclarations(ExecState*) KJS_FAST_CALL;
     2992        void generateCode(ScopeChainNode*, bool) KJS_FAST_CALL;
     2993        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     2994
     2995        void initializeSymbolTable(OldInterpreterExecState*) KJS_FAST_CALL;
     2996        ALWAYS_INLINE void processDeclarations(OldInterpreterExecState*) KJS_FAST_CALL;
    27912997
    27922998        Vector<size_t> m_varIndexes; // Storage indexes belonging to the nodes in m_varStack. (Recorded to avoid double lookup.)
    27932999        Vector<size_t> m_functionIndexes; // Storage indexes belonging to the nodes in m_functionStack. (Recorded to avoid double lookup.)
     3000
     3001        OwnPtr<ProgramCodeBlock> m_code;
    27943002    };
    27953003
     
    27973005    public:
    27983006        static EvalNode* create(SourceElements*, VarStack*, FunctionStack*, bool usesEval, bool needsClosure) KJS_FAST_CALL;
    2799 
    2800         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
     3007        virtual ~EvalNode();
     3008       
     3009        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
     3010
     3011        EvalCodeBlock& code(ScopeChainNode* scopeChain) KJS_FAST_CALL
     3012        {
     3013            if (!m_code)
     3014                generateCode(scopeChain);
     3015            return *m_code;
     3016        }
    28013017
    28023018    private:
    28033019        EvalNode(SourceElements*, VarStack*, FunctionStack*, bool usesEval, bool needsClosure) KJS_FAST_CALL;
    28043020
    2805         ALWAYS_INLINE void processDeclarations(ExecState*) KJS_FAST_CALL;
     3021        ALWAYS_INLINE void processDeclarations(OldInterpreterExecState*) KJS_FAST_CALL;
     3022        void generateCode(ScopeChainNode*) KJS_FAST_CALL;
     3023        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     3024
     3025        OwnPtr<EvalCodeBlock> m_code;
    28063026    };
    28073027
     
    28093029    public:
    28103030        static FunctionBodyNode* create(SourceElements*, VarStack*, FunctionStack*, bool usesEval, bool needsClosure) KJS_FAST_CALL;
    2811 
    2812         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
    2813 
    2814         SymbolTable& symbolTable() KJS_FAST_CALL { return m_symbolTable; }
    2815 
     3031        virtual ~FunctionBodyNode();
     3032       
    28163033        Vector<Identifier>& parameters() KJS_FAST_CALL { return m_parameters; }
    28173034        UString paramString() const KJS_FAST_CALL;
    28183035
     3036        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     3037       
     3038        SymbolTable& symbolTable() { return m_symbolTable; } // FIXME: Remove this
     3039       
     3040        CodeBlock& code(ScopeChainNode* scopeChain) KJS_FAST_CALL
     3041        {
     3042            ASSERT(scopeChain);
     3043            if (!m_code)
     3044                generateCode(scopeChain);
     3045            return *m_code;
     3046        }
     3047
     3048        CodeBlock& generatedCode() KJS_FAST_CALL
     3049        {
     3050            ASSERT(m_code);
     3051            return *m_code;
     3052        }
     3053
     3054        void mark();
     3055
     3056        void setSource(const SourceRange& source) { m_source = source; }
     3057        UString toSourceString() const KJS_FAST_CALL { return UString("{") + m_source.toString() + UString("}"); }
     3058
    28193059    protected:
    28203060        FunctionBodyNode(SourceElements*, VarStack*, FunctionStack*, bool usesEval, bool needsClosure) KJS_FAST_CALL;
    28213061
    28223062    private:
    2823         void initializeSymbolTable(ExecState*) KJS_FAST_CALL;
    2824         ALWAYS_INLINE void processDeclarations(ExecState*) KJS_FAST_CALL;
    2825 
    2826         bool m_initialized;
     3063        void generateCode(ScopeChainNode*) KJS_FAST_CALL;
     3064       
    28273065        Vector<Identifier> m_parameters;
    28283066        SymbolTable m_symbolTable;
     3067        OwnPtr<CodeBlock> m_code;
     3068        SourceRange m_source;
    28293069    };
    28303070
    28313071    class FuncExprNode : public ExpressionNode {
    28323072    public:
    2833         FuncExprNode(const Identifier& ident, FunctionBodyNode* body, ParameterNode* parameter = 0) KJS_FAST_CALL
     3073        FuncExprNode(const Identifier& ident, FunctionBodyNode* body, const SourceRange& source, ParameterNode* parameter = 0) KJS_FAST_CALL
    28343074            : m_ident(ident)
    28353075            , m_parameter(parameter)
     
    28373077        {
    28383078            addParams();
    2839         }
    2840 
    2841         virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     3079            m_body->setSource(source);
     3080        }
     3081
     3082        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     3083        FunctionImp* makeFunction(ExecState*, ScopeChainNode*) KJS_FAST_CALL;
     3084        virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
    28423085        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    28433086        virtual Precedence precedence() const { return PrecMember; }
    28443087        virtual bool needsParensIfLeftmost() const { return true; }
     3088
     3089        FunctionBodyNode* body() { return m_body.get(); }
    28453090
    28463091    private:
     
    28563101    class FuncDeclNode : public StatementNode {
    28573102    public:
    2858         FuncDeclNode(const Identifier& ident, FunctionBodyNode* body) KJS_FAST_CALL
    2859             : m_ident(ident)
    2860             , m_body(body)
    2861         {
    2862             addParams();
    2863         }
    2864 
    2865         FuncDeclNode(const Identifier& ident, ParameterNode* parameter, FunctionBodyNode* body) KJS_FAST_CALL
     3103        FuncDeclNode(const Identifier& ident, FunctionBodyNode* body, const SourceRange& source, ParameterNode* parameter = 0) KJS_FAST_CALL
    28663104            : m_ident(ident)
    28673105            , m_parameter(parameter)
     
    28693107        {
    28703108            addParams();
    2871         }
    2872 
    2873         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
    2874         virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    2875         ALWAYS_INLINE FunctionImp* makeFunction(ExecState*) KJS_FAST_CALL;
     3109            m_body->setSource(source);
     3110        }
     3111
     3112        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     3113
     3114        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
     3115        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
     3116        FunctionImp* makeFunction(ExecState*, ScopeChainNode*) KJS_FAST_CALL;
    28763117
    28773118        Identifier m_ident;
     3119
     3120        FunctionBodyNode* body() { return m_body.get(); }
    28783121
    28793122    private:
     
    28983141        }
    28993142
    2900         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     3143        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    29013144        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    29023145        virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
    29033146
    2904         JSValue* evaluate(ExecState*) KJS_FAST_CALL;
    2905         JSValue* executeStatements(ExecState*) KJS_FAST_CALL;
     3147        JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
     3148        JSValue* executeStatements(OldInterpreterExecState*) KJS_FAST_CALL;
     3149
     3150        ExpressionNode* expr() const { return m_expr.get(); }
     3151        StatementVector& children() { return m_children; }
    29063152
    29073153    private:
     
    29233169        }
    29243170
    2925         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     3171        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    29263172        CaseClauseNode* getClause() const KJS_FAST_CALL { return m_clause.get(); }
    29273173        ClauseListNode* getNext() const KJS_FAST_CALL { return m_next.get(); }
     
    29383184    class CaseBlockNode : public Node {
    29393185    public:
    2940         CaseBlockNode(ClauseListNode* list1, CaseClauseNode* defaultClause, ClauseListNode* list2) KJS_FAST_CALL;
    2941 
    2942         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2943         JSValue* executeBlock(ExecState*, JSValue *input) KJS_FAST_CALL;
     3186        CaseBlockNode(ClauseListNode* list1, CaseClauseNode* defaultClause, ClauseListNode* list2) KJS_FAST_CALL
     3187            : m_list1(list1)
     3188            , m_defaultClause(defaultClause)
     3189            , m_list2(list2)
     3190        {
     3191        }
     3192
     3193        RegisterID* emitCodeForBlock(CodeGenerator&, RegisterID* input, RegisterID* dst = 0) KJS_FAST_CALL;
     3194
     3195        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     3196        JSValue* executeBlock(OldInterpreterExecState*, JSValue *input) KJS_FAST_CALL;
    29443197        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    29453198        virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
     
    29593212        }
    29603213
    2961         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    2962         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
     3214        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
     3215
     3216        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     3217        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
    29633218        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    29643219
     
    29723227        BreakpointCheckStatement(PassRefPtr<StatementNode>) KJS_FAST_CALL;
    29733228
    2974         virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
    2975         virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
    2976         virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
     3229        virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
     3230        virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
     3231        virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
    29773232
    29783233    private:
Note: See TracChangeset for help on using the changeset viewer.