Merge squirrelfish branch into trunk.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@33979 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/JavaScriptCore/kjs/nodes.h b/JavaScriptCore/kjs/nodes.h
index 6a086d0..ddebedf 100644
--- a/JavaScriptCore/kjs/nodes.h
+++ b/JavaScriptCore/kjs/nodes.h
@@ -28,7 +28,10 @@
#include "internal.h"
#include "regexp.h"
+#include "RegisterID.h"
+#include "SourceRange.h"
#include "SymbolTable.h"
+#include <wtf/UnusedParam.h>
#include <wtf/ListRefPtr.h>
#include <wtf/MathExtras.h>
#include <wtf/OwnPtr.h>
@@ -43,9 +46,13 @@
namespace KJS {
class ArgumentsNode;
+ class CodeBlock;
+ class CodeGenerator;
class ConstDeclNode;
class FuncDeclNode;
class Node;
+ class EvalCodeBlock;
+ class ProgramCodeBlock;
class PropertyListNode;
class SourceStream;
@@ -137,40 +144,74 @@
{
}
+ /*
+ Return value: The register holding the production's value.
+ dst: An optional parameter specifying the most efficient
+ destination at which to store the production's value.
+ The callee must honor dst.
+
+ dst provides for a crude form of copy propagation. For example,
+
+ x = 1
+
+ becomes
+
+ load r[x], 1
+
+ instead of
+
+ load r0, 1
+ mov r[x], r0
+
+ because the assignment node, "x =", passes r[x] as dst to the number
+ node, "1".
+ */
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* dst = 0) KJS_FAST_CALL
+ {
+ ASSERT_WITH_MESSAGE(0, "Don't know how to generate code for:\n%s\n", toString().ascii());
+ UNUSED_PARAM(dst);
+ return 0;
+ } // FIXME: Make this pure virtual.
+
UString toString() const KJS_FAST_CALL;
int lineNo() const KJS_FAST_CALL { return m_line; }
+ virtual bool isReturnNode() const KJS_FAST_CALL { return false; }
+
// Serialization.
virtual void streamTo(SourceStream&) const KJS_FAST_CALL = 0;
virtual Precedence precedence() const = 0;
virtual bool needsParensIfLeftmost() const { return false; }
-
+
// Used for iterative, depth-first traversal of the node tree. Does not cross function call boundaries.
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL { }
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL { }
protected:
Node(JSType) KJS_FAST_CALL; // used by ExpressionNode
// for use in execute()
- JSValue* setErrorCompletion(ExecState*, ErrorType, const char* msg) KJS_FAST_CALL;
- JSValue* setErrorCompletion(ExecState*, ErrorType, const char* msg, const Identifier&) KJS_FAST_CALL;
+ JSValue* setErrorCompletion(OldInterpreterExecState*, ErrorType, const char* msg) KJS_FAST_CALL;
+ JSValue* setErrorCompletion(OldInterpreterExecState*, ErrorType, const char* msg, const Identifier&) KJS_FAST_CALL;
// for use in evaluate()
- JSValue* throwError(ExecState*, ErrorType, const char* msg) KJS_FAST_CALL;
- JSValue* throwError(ExecState*, ErrorType, const char* msg, const char*) KJS_FAST_CALL;
- JSValue* throwError(ExecState*, ErrorType, const char* msg, JSValue*, Node*) KJS_FAST_CALL;
- JSValue* throwError(ExecState*, ErrorType, const char* msg, const Identifier&) KJS_FAST_CALL;
- JSValue* throwError(ExecState*, ErrorType, const char* msg, JSValue*, const Identifier&) KJS_FAST_CALL;
- JSValue* throwError(ExecState*, ErrorType, const char* msg, JSValue*, Node*, Node*) KJS_FAST_CALL;
- JSValue* throwError(ExecState*, ErrorType, const char* msg, JSValue*, Node*, const Identifier&) KJS_FAST_CALL;
+ JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg) KJS_FAST_CALL;
+ JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg, const char*) KJS_FAST_CALL;
+ JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg, JSValue*, Node*) KJS_FAST_CALL;
+ JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg, const Identifier&) KJS_FAST_CALL;
+ JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg, JSValue*, const Identifier&) KJS_FAST_CALL;
+ JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg, JSValue*, Node*, Node*) KJS_FAST_CALL;
+ JSValue* throwError(OldInterpreterExecState*, ErrorType, const char* msg, JSValue*, Node*, const Identifier&) KJS_FAST_CALL;
+
+ RegisterID* emitThrowError(CodeGenerator&, ErrorType, const char* msg);
+ RegisterID* emitThrowError(CodeGenerator&, ErrorType, const char* msg, const Identifier&);
- JSValue* throwUndefinedVariableError(ExecState*, const Identifier&) KJS_FAST_CALL;
+ JSValue* throwUndefinedVariableError(OldInterpreterExecState*, const Identifier&) KJS_FAST_CALL;
- void handleException(ExecState*) KJS_FAST_CALL;
- void handleException(ExecState*, JSValue*) KJS_FAST_CALL;
+ void handleException(OldInterpreterExecState*) KJS_FAST_CALL;
+ void handleException(OldInterpreterExecState*, JSValue*) KJS_FAST_CALL;
// for use in execute()
- JSValue* rethrowException(ExecState*) KJS_FAST_CALL;
+ JSValue* rethrowException(OldInterpreterExecState*) KJS_FAST_CALL;
int m_line : 28;
unsigned m_expectedReturnType : 3; // JSType
@@ -198,11 +239,11 @@
JSType expectedReturnType() const KJS_FAST_CALL { return static_cast<JSType>(m_expectedReturnType); }
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL = 0;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL = 0;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
// Used to optimize those nodes that do extra work when returning a result, even if the result has no semantic relevance
virtual void optimizeForUnnecessaryResult() { }
@@ -210,7 +251,7 @@
// This needs to be in public in order to compile using GCC 3.x
typedef enum { EvalOperator, FunctionCall } CallerType;
protected:
- template <CallerType, bool> inline JSValue* resolveAndCall(ExecState*, const Identifier&, ArgumentsNode*, size_t = 0);
+ template <CallerType, bool> inline JSValue* resolveAndCall(OldInterpreterExecState*, const Identifier&, ArgumentsNode*, size_t = 0);
};
class StatementNode : public Node {
@@ -219,7 +260,9 @@
void setLoc(int line0, int line1) KJS_FAST_CALL;
int firstLine() const KJS_FAST_CALL { return lineNo(); }
int lastLine() const KJS_FAST_CALL { return m_lastLine; }
- virtual JSValue* execute(ExecState *exec) KJS_FAST_CALL = 0;
+
+ virtual JSValue* execute(OldInterpreterExecState *exec) KJS_FAST_CALL = 0;
+
virtual void pushLabel(const Identifier& ident) KJS_FAST_CALL { m_labelStack.push(ident); }
virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
virtual bool isEmptyStatement() const KJS_FAST_CALL { return false; }
@@ -233,8 +276,14 @@
class NullNode : public ExpressionNode {
public:
- NullNode() KJS_FAST_CALL : ExpressionNode(NullType) {}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ NullNode() KJS_FAST_CALL
+ : ExpressionNode(NullType)
+ {
+ }
+
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecPrimary; }
};
@@ -246,8 +295,10 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL { return false; }
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL { return false; }
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecPrimary; }
};
@@ -259,8 +310,10 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL { return true; }
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL { return true; }
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecPrimary; }
};
@@ -284,11 +337,13 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return signbit(m_double) ? PrecUnary : PrecPrimary; }
@@ -309,9 +364,9 @@
ASSERT(v == JSImmediate::from(d));
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void setValue(double d) KJS_FAST_CALL { m_double = d; m_value = JSImmediate::from(d); ASSERT(m_value); }
@@ -327,9 +382,11 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecPrimary; }
@@ -344,7 +401,9 @@
{
}
- JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecPrimary; }
@@ -358,7 +417,9 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecPrimary; }
};
@@ -377,13 +438,14 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecPrimary; }
@@ -392,36 +454,36 @@
const Identifier& identifier() const KJS_FAST_CALL { return m_ident; }
protected:
- ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
+ ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
Identifier m_ident;
- size_t m_index; // Used by LocalVarAccessNode and ScopedVarAccessNode.
+ int m_index; // Used by LocalVarAccessNode and ScopedVarAccessNode.
size_t m_scopeDepth; // Used by ScopedVarAccessNode
};
class LocalVarAccessNode : public ResolveNode {
public:
// Overwrites a ResolveNode in place.
- LocalVarAccessNode(size_t i) KJS_FAST_CALL
+ LocalVarAccessNode(int i) KJS_FAST_CALL
: ResolveNode(PlacementNewAdopt)
{
ASSERT(i != missingSymbolMarker());
m_index = i;
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
private:
- ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
+ ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
};
class ScopedVarAccessNode : public ResolveNode {
public:
// Overwrites a ResolveNode in place.
- ScopedVarAccessNode(size_t i, size_t scopeDepth) KJS_FAST_CALL
+ ScopedVarAccessNode(int i, size_t scopeDepth) KJS_FAST_CALL
: ResolveNode(PlacementNewAdopt)
{
ASSERT(i != missingSymbolMarker());
@@ -429,14 +491,14 @@
m_scopeDepth = scopeDepth;
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
private:
- ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
+ ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
};
class NonLocalVarAccessNode : public ResolveNode {
@@ -449,14 +511,14 @@
m_scopeDepth = scopeDepth;
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
private:
- ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
+ ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
};
class ElementNode : public Node {
@@ -476,11 +538,11 @@
virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
PassRefPtr<ElementNode> releaseNext() KJS_FAST_CALL { return m_next.release(); }
- JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
private:
friend class ArrayNode;
@@ -511,8 +573,10 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecPrimary; }
@@ -533,11 +597,11 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
- JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
const Identifier& name() const { return m_name; }
private:
@@ -560,11 +624,12 @@
list->m_next = this;
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
- JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
PassRefPtr<PropertyListNode> releaseNext() KJS_FAST_CALL { return m_next.release(); }
private:
@@ -584,8 +649,9 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecPrimary; }
virtual bool needsParensIfLeftmost() const { return true; }
@@ -602,12 +668,14 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecMember; }
@@ -617,7 +685,7 @@
ExpressionNode* subscript() KJS_FAST_CALL { return m_subscript.get(); }
private:
- ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
+ ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_base;
RefPtr<ExpressionNode> m_subscript;
@@ -631,12 +699,13 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecMember; }
@@ -646,7 +715,7 @@
const Identifier& identifier() const KJS_FAST_CALL { return m_ident; }
private:
- ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
+ ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_base;
Identifier m_ident;
@@ -665,15 +734,14 @@
listNode->m_next = this;
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
- void evaluateList(ExecState*, List&) KJS_FAST_CALL;
+ void evaluateList(OldInterpreterExecState*, List&) KJS_FAST_CALL;
PassRefPtr<ArgumentListNode> releaseNext() KJS_FAST_CALL { return m_next.release(); }
- private:
- friend class ArgumentsNode;
ListRefPtr<ArgumentListNode> m_next;
RefPtr<ExpressionNode> m_expr;
};
@@ -689,13 +757,12 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
- void evaluateList(ExecState* exec, List& list) KJS_FAST_CALL { if (m_listNode) m_listNode->evaluateList(exec, list); }
+ void evaluateList(OldInterpreterExecState* exec, List& list) KJS_FAST_CALL { if (m_listNode) m_listNode->evaluateList(exec, list); }
- private:
RefPtr<ArgumentListNode> m_listNode;
};
@@ -712,17 +779,19 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecLeftHandSide; }
private:
- ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
+ ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_expr;
RefPtr<ArgumentsNode> m_args;
@@ -735,8 +804,9 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecCall; }
@@ -752,8 +822,9 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecCall; }
@@ -777,17 +848,19 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecCall; }
protected:
- ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
+ ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
Identifier m_ident;
RefPtr<ArgumentsNode> m_args;
@@ -797,26 +870,26 @@
class LocalVarFunctionCallNode : public FunctionCallResolveNode {
public:
- LocalVarFunctionCallNode(size_t i) KJS_FAST_CALL
+ LocalVarFunctionCallNode(int i) KJS_FAST_CALL
: FunctionCallResolveNode(PlacementNewAdopt)
{
ASSERT(i != missingSymbolMarker());
m_index = i;
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
private:
- ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
+ ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
};
class ScopedVarFunctionCallNode : public FunctionCallResolveNode {
public:
- ScopedVarFunctionCallNode(size_t i, size_t depth) KJS_FAST_CALL
+ ScopedVarFunctionCallNode(int i, size_t depth) KJS_FAST_CALL
: FunctionCallResolveNode(PlacementNewAdopt)
{
ASSERT(i != missingSymbolMarker());
@@ -824,14 +897,14 @@
m_scopeDepth = depth;
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
private:
- ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
+ ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
};
class NonLocalVarFunctionCallNode : public FunctionCallResolveNode {
@@ -842,14 +915,14 @@
m_scopeDepth = depth;
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
private:
- ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
+ ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
};
class FunctionCallBracketNode : public ExpressionNode {
@@ -861,8 +934,9 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecCall; }
@@ -881,17 +955,18 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecCall; }
private:
- ALWAYS_INLINE JSValue* inlineEvaluate(ExecState*);
+ ALWAYS_INLINE JSValue* inlineEvaluate(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_base;
Identifier m_ident;
@@ -929,8 +1004,9 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecPostfix; }
virtual void optimizeForUnnecessaryResult();
@@ -938,27 +1014,27 @@
class PostIncLocalVarNode : public PostIncResolveNode {
public:
- PostIncLocalVarNode(size_t i) KJS_FAST_CALL
+ PostIncLocalVarNode(int i) KJS_FAST_CALL
: PostIncResolveNode(PlacementNewAdopt)
{
ASSERT(i != missingSymbolMarker());
m_index = i;
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void optimizeForUnnecessaryResult();
};
class PostIncConstNode : public PostIncResolveNode {
public:
- PostIncConstNode(size_t i) KJS_FAST_CALL
+ PostIncConstNode(int i) KJS_FAST_CALL
: PostIncResolveNode(PlacementNewAdopt)
{
ASSERT(i != missingSymbolMarker());
m_index = i;
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
};
class PostDecResolveNode : public PrePostResolveNode {
@@ -973,8 +1049,10 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecPostfix; }
virtual void optimizeForUnnecessaryResult();
@@ -982,34 +1060,34 @@
class PostDecLocalVarNode : public PostDecResolveNode {
public:
- PostDecLocalVarNode(size_t i) KJS_FAST_CALL
+ PostDecLocalVarNode(int i) KJS_FAST_CALL
: PostDecResolveNode(PlacementNewAdopt)
{
ASSERT(i != missingSymbolMarker());
m_index = i;
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void optimizeForUnnecessaryResult();
private:
- ALWAYS_INLINE double inlineEvaluateToNumber(ExecState*);
+ ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*);
};
class PostDecConstNode : public PostDecResolveNode {
public:
- PostDecConstNode(size_t i) KJS_FAST_CALL
+ PostDecConstNode(int i) KJS_FAST_CALL
: PostDecResolveNode(PlacementNewAdopt)
{
ASSERT(i != missingSymbolMarker());
m_index = i;
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
};
class PostfixBracketNode : public ExpressionNode {
@@ -1020,7 +1098,7 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecPostfix; }
protected:
@@ -1035,7 +1113,9 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
};
@@ -1046,7 +1126,9 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
};
@@ -1058,7 +1140,7 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecPostfix; }
protected:
@@ -1073,7 +1155,9 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
};
@@ -1084,7 +1168,9 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
};
@@ -1096,7 +1182,8 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecPostfix; }
@@ -1118,8 +1205,10 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecUnary; }
@@ -1134,7 +1223,7 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
};
class DeleteBracketNode : public ExpressionNode {
@@ -1145,8 +1234,10 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecUnary; }
@@ -1163,8 +1254,10 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecUnary; }
@@ -1180,8 +1273,10 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecUnary; }
@@ -1196,8 +1291,10 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecUnary; }
@@ -1220,9 +1317,10 @@
m_expectedReturnType = StringType;
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecUnary; }
@@ -1235,7 +1333,7 @@
class LocalVarTypeOfNode : public TypeOfResolveNode {
public:
- LocalVarTypeOfNode(size_t i) KJS_FAST_CALL
+ LocalVarTypeOfNode(int i) KJS_FAST_CALL
: TypeOfResolveNode(PlacementNewAdopt)
{
m_expectedReturnType = StringType;
@@ -1243,7 +1341,7 @@
m_index = i;
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
};
class TypeOfValueNode : public ExpressionNode {
@@ -1254,8 +1352,10 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecUnary; }
@@ -1275,35 +1375,36 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecUnary; }
};
class PreIncLocalVarNode : public PreIncResolveNode {
public:
- PreIncLocalVarNode(size_t i) KJS_FAST_CALL
+ PreIncLocalVarNode(int i) KJS_FAST_CALL
: PreIncResolveNode(PlacementNewAdopt)
{
ASSERT(i != missingSymbolMarker());
m_index = i;
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
};
class PreIncConstNode : public PreIncResolveNode {
public:
- PreIncConstNode(size_t i) KJS_FAST_CALL
+ PreIncConstNode(int i) KJS_FAST_CALL
: PreIncResolveNode(PlacementNewAdopt)
{
ASSERT(i != missingSymbolMarker());
m_index = i;
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
};
class PreDecResolveNode : public PrePostResolveNode {
@@ -1318,35 +1419,36 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecUnary; }
};
class PreDecLocalVarNode : public PreDecResolveNode {
public:
- PreDecLocalVarNode(size_t i) KJS_FAST_CALL
+ PreDecLocalVarNode(int i) KJS_FAST_CALL
: PreDecResolveNode(PlacementNewAdopt)
{
ASSERT(i != missingSymbolMarker());
m_index = i;
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
};
class PreDecConstNode : public PreDecResolveNode {
public:
- PreDecConstNode(size_t i) KJS_FAST_CALL
+ PreDecConstNode(int i) KJS_FAST_CALL
: PreDecResolveNode(PlacementNewAdopt)
{
ASSERT(i != missingSymbolMarker());
m_index = i;
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
};
class PrefixBracketNode : public ExpressionNode {
@@ -1357,7 +1459,7 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecUnary; }
protected:
@@ -1372,7 +1474,9 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
};
@@ -1383,7 +1487,9 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
};
@@ -1395,7 +1501,7 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecPostfix; }
protected:
@@ -1410,7 +1516,9 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
};
@@ -1421,7 +1529,9 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
};
@@ -1433,7 +1543,8 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecUnary; }
@@ -1450,12 +1561,13 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecUnary; }
@@ -1471,9 +1583,10 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecUnary; }
@@ -1489,17 +1602,18 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecUnary; }
private:
- ALWAYS_INLINE int32_t inlineEvaluateToInt32(ExecState*);
+ ALWAYS_INLINE int32_t inlineEvaluateToInt32(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_expr;
};
@@ -1512,9 +1626,10 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecUnary; }
@@ -1531,17 +1646,18 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecMultiplicitave; }
private:
- ALWAYS_INLINE double inlineEvaluateToNumber(ExecState*);
+ ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_term1;
RefPtr<ExpressionNode> m_term2;
@@ -1556,16 +1672,17 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecMultiplicitave; }
private:
- ALWAYS_INLINE double inlineEvaluateToNumber(ExecState*);
+ ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_term1;
RefPtr<ExpressionNode> m_term2;
@@ -1580,17 +1697,18 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecMultiplicitave; }
private:
- ALWAYS_INLINE double inlineEvaluateToNumber(ExecState*);
+ ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_term1;
RefPtr<ExpressionNode> m_term2;
@@ -1604,11 +1722,12 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecAdditive; }
@@ -1624,7 +1743,7 @@
RefPtr<ExpressionNode> m_term2;
private:
- ALWAYS_INLINE double inlineEvaluateToNumber(ExecState*);
+ ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*);
};
class AddNumbersNode : public AddNode {
@@ -1634,13 +1753,13 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
private:
- ALWAYS_INLINE double inlineEvaluateToNumber(ExecState*) KJS_FAST_CALL;
+ ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
};
class AddStringLeftNode : public AddNode {
@@ -1650,7 +1769,7 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
};
class AddStringRightNode : public AddNode {
@@ -1660,7 +1779,7 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
};
class AddStringsNode : public AddNode {
@@ -1670,7 +1789,7 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
};
class SubNode : public ExpressionNode {
@@ -1682,16 +1801,17 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecAdditive; }
private:
- ALWAYS_INLINE double inlineEvaluateToNumber(ExecState*);
+ ALWAYS_INLINE double inlineEvaluateToNumber(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_term1;
RefPtr<ExpressionNode> m_term2;
@@ -1706,16 +1826,17 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecShift; }
private:
- ALWAYS_INLINE int32_t inlineEvaluateToInt32(ExecState*);
+ ALWAYS_INLINE int32_t inlineEvaluateToInt32(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_term1;
RefPtr<ExpressionNode> m_term2;
@@ -1730,16 +1851,17 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecShift; }
private:
- ALWAYS_INLINE int32_t inlineEvaluateToInt32(ExecState*);
+ ALWAYS_INLINE int32_t inlineEvaluateToInt32(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_term1;
RefPtr<ExpressionNode> m_term2;
@@ -1754,15 +1876,16 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecShift; }
private:
- ALWAYS_INLINE uint32_t inlineEvaluateToUInt32(ExecState*);
+ ALWAYS_INLINE uint32_t inlineEvaluateToUInt32(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_term1;
RefPtr<ExpressionNode> m_term2;
@@ -1777,14 +1900,15 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecRelational; }
private:
- ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
+ ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
protected:
RefPtr<ExpressionNode> m_expr1;
@@ -1798,11 +1922,11 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
private:
- ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
+ ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
};
class LessStringsNode : public LessNode {
@@ -1812,11 +1936,11 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
private:
- ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
+ ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
};
class GreaterNode : public ExpressionNode {
@@ -1827,14 +1951,15 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecRelational; }
private:
- ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
+ ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_expr1;
RefPtr<ExpressionNode> m_expr2;
@@ -1848,14 +1973,15 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecRelational; }
private:
- ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
+ ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_expr1;
RefPtr<ExpressionNode> m_expr2;
@@ -1869,14 +1995,15 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecRelational; }
private:
- ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
+ ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_expr1;
RefPtr<ExpressionNode> m_expr2;
@@ -1891,9 +2018,10 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecRelational; }
@@ -1910,9 +2038,11 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecRelational; }
@@ -1930,14 +2060,15 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecEquality; }
private:
- ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
+ ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_expr1;
RefPtr<ExpressionNode> m_expr2;
@@ -1952,14 +2083,15 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecEquality; }
private:
- ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
+ ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_expr1;
RefPtr<ExpressionNode> m_expr2;
@@ -1974,14 +2106,15 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecEquality; }
private:
- ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
+ ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_expr1;
RefPtr<ExpressionNode> m_expr2;
@@ -1996,14 +2129,15 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecEquality; }
private:
- ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
+ ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_expr1;
RefPtr<ExpressionNode> m_expr2;
@@ -2018,17 +2152,18 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecBitwiseAnd; }
private:
- ALWAYS_INLINE int32_t inlineEvaluateToInt32(ExecState*);
+ ALWAYS_INLINE int32_t inlineEvaluateToInt32(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_expr1;
RefPtr<ExpressionNode> m_expr2;
@@ -2043,17 +2178,18 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecBitwiseOr; }
private:
- ALWAYS_INLINE int32_t inlineEvaluateToInt32(ExecState*);
+ ALWAYS_INLINE int32_t inlineEvaluateToInt32(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_expr1;
RefPtr<ExpressionNode> m_expr2;
@@ -2068,17 +2204,18 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecBitwiseXor; }
private:
- ALWAYS_INLINE int32_t inlineEvaluateToInt32(ExecState*);
+ ALWAYS_INLINE int32_t inlineEvaluateToInt32(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_expr1;
RefPtr<ExpressionNode> m_expr2;
@@ -2096,14 +2233,15 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecLogicalAnd; }
private:
- ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
+ ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_expr1;
RefPtr<ExpressionNode> m_expr2;
@@ -2118,14 +2256,15 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecLogicalOr; }
private:
- ALWAYS_INLINE bool inlineEvaluateToBoolean(ExecState*);
+ ALWAYS_INLINE bool inlineEvaluateToBoolean(OldInterpreterExecState*);
RefPtr<ExpressionNode> m_expr1;
RefPtr<ExpressionNode> m_expr2;
@@ -2143,12 +2282,13 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- virtual bool evaluateToBoolean(ExecState*) KJS_FAST_CALL;
- virtual double evaluateToNumber(ExecState*) KJS_FAST_CALL;
- virtual int32_t evaluateToInt32(ExecState*) KJS_FAST_CALL;
- virtual uint32_t evaluateToUInt32(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual bool evaluateToBoolean(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual double evaluateToNumber(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual int32_t evaluateToInt32(OldInterpreterExecState*) KJS_FAST_CALL;
+ virtual uint32_t evaluateToUInt32(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecConditional; }
@@ -2160,10 +2300,11 @@
class ReadModifyResolveNode : public ExpressionNode {
public:
- ReadModifyResolveNode(const Identifier& ident, Operator oper, ExpressionNode* right) KJS_FAST_CALL
+ ReadModifyResolveNode(const Identifier& ident, Operator oper, ExpressionNode* right, bool rightHasAssignments) KJS_FAST_CALL
: m_ident(ident)
- , m_operator(oper)
, m_right(right)
+ , m_operator(oper)
+ , m_rightHasAssignments(rightHasAssignments)
{
}
@@ -2171,50 +2312,55 @@
: ExpressionNode(PlacementNewAdopt)
, m_ident(PlacementNewAdopt)
, m_right(PlacementNewAdopt)
+ , m_rightHasAssignments(true)
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecAssignment; }
protected:
Identifier m_ident;
- Operator m_operator;
RefPtr<ExpressionNode> m_right;
size_t m_index; // Used by ReadModifyLocalVarNode.
+ Operator m_operator : 31;
+ bool m_rightHasAssignments : 1;
};
class ReadModifyLocalVarNode : public ReadModifyResolveNode {
public:
- ReadModifyLocalVarNode(size_t i) KJS_FAST_CALL
+ ReadModifyLocalVarNode(int i) KJS_FAST_CALL
: ReadModifyResolveNode(PlacementNewAdopt)
{
ASSERT(i != missingSymbolMarker());
m_index = i;
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
};
class ReadModifyConstNode : public ReadModifyResolveNode {
public:
- ReadModifyConstNode(size_t i) KJS_FAST_CALL
+ ReadModifyConstNode(int i) KJS_FAST_CALL
: ReadModifyResolveNode(PlacementNewAdopt)
{
ASSERT(i != missingSymbolMarker());
m_index = i;
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
};
class AssignResolveNode : public ExpressionNode {
public:
- AssignResolveNode(const Identifier& ident, ExpressionNode* right) KJS_FAST_CALL
+ AssignResolveNode(const Identifier& ident, ExpressionNode* right, bool rightHasAssignments) KJS_FAST_CALL
: m_ident(ident)
, m_right(right)
+ , m_rightHasAssignments(rightHasAssignments)
{
}
@@ -2224,9 +2370,11 @@
, m_right(PlacementNewAdopt)
{
}
+
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecAssignment; }
@@ -2234,18 +2382,19 @@
Identifier m_ident;
RefPtr<ExpressionNode> m_right;
size_t m_index; // Used by ReadModifyLocalVarNode.
+ bool m_rightHasAssignments;
};
class AssignLocalVarNode : public AssignResolveNode {
public:
- AssignLocalVarNode(size_t i) KJS_FAST_CALL
+ AssignLocalVarNode(int i) KJS_FAST_CALL
: AssignResolveNode(PlacementNewAdopt)
{
ASSERT(i != missingSymbolMarker());
m_index = i;
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
};
class AssignConstNode : public AssignResolveNode {
@@ -2255,42 +2404,52 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
};
class ReadModifyBracketNode : public ExpressionNode {
public:
- ReadModifyBracketNode(ExpressionNode* base, ExpressionNode* subscript, Operator oper, ExpressionNode* right) KJS_FAST_CALL
+ ReadModifyBracketNode(ExpressionNode* base, ExpressionNode* subscript, Operator oper, ExpressionNode* right, bool subscriptHasAssignments, bool rightHasAssignments) KJS_FAST_CALL
: m_base(base)
, m_subscript(subscript)
- , m_operator(oper)
, m_right(right)
+ , m_operator(oper)
+ , m_subscriptHasAssignments(subscriptHasAssignments)
+ , m_rightHasAssignments(rightHasAssignments)
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecAssignment; }
protected:
RefPtr<ExpressionNode> m_base;
RefPtr<ExpressionNode> m_subscript;
- Operator m_operator;
RefPtr<ExpressionNode> m_right;
+ Operator m_operator : 30;
+ bool m_subscriptHasAssignments : 1;
+ bool m_rightHasAssignments : 1;
};
class AssignBracketNode : public ExpressionNode {
public:
- AssignBracketNode(ExpressionNode* base, ExpressionNode* subscript, ExpressionNode* right) KJS_FAST_CALL
+ AssignBracketNode(ExpressionNode* base, ExpressionNode* subscript, ExpressionNode* right, bool subscriptHasAssignments, bool rightHasAssignments) KJS_FAST_CALL
: m_base(base)
, m_subscript(subscript)
, m_right(right)
+ , m_subscriptHasAssignments(subscriptHasAssignments)
+ , m_rightHasAssignments(rightHasAssignments)
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecAssignment; }
@@ -2298,19 +2457,23 @@
RefPtr<ExpressionNode> m_base;
RefPtr<ExpressionNode> m_subscript;
RefPtr<ExpressionNode> m_right;
+ bool m_subscriptHasAssignments : 1;
+ bool m_rightHasAssignments : 1;
};
class AssignDotNode : public ExpressionNode {
public:
- AssignDotNode(ExpressionNode* base, const Identifier& ident, ExpressionNode* right) KJS_FAST_CALL
+ AssignDotNode(ExpressionNode* base, const Identifier& ident, ExpressionNode* right, bool rightHasAssignments) KJS_FAST_CALL
: m_base(base)
, m_ident(ident)
, m_right(right)
+ , m_rightHasAssignments(rightHasAssignments)
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecAssignment; }
@@ -2318,28 +2481,33 @@
RefPtr<ExpressionNode> m_base;
Identifier m_ident;
RefPtr<ExpressionNode> m_right;
+ bool m_rightHasAssignments;
};
class ReadModifyDotNode : public ExpressionNode {
public:
- ReadModifyDotNode(ExpressionNode* base, const Identifier& ident, Operator oper, ExpressionNode* right) KJS_FAST_CALL
+ ReadModifyDotNode(ExpressionNode* base, const Identifier& ident, Operator oper, ExpressionNode* right, bool rightHasAssignments) KJS_FAST_CALL
: m_base(base)
, m_ident(ident)
- , m_operator(oper)
, m_right(right)
+ , m_operator(oper)
+ , m_rightHasAssignments(rightHasAssignments)
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecAssignment; }
protected:
RefPtr<ExpressionNode> m_base;
Identifier m_ident;
- Operator m_operator;
RefPtr<ExpressionNode> m_right;
+ Operator m_operator : 31;
+ bool m_rightHasAssignments : 1;
};
class AssignErrorNode : public ExpressionNode {
@@ -2351,7 +2519,8 @@
{
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecAssignment; }
@@ -2370,8 +2539,9 @@
m_expr1->optimizeForUnnecessaryResult();
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecExpression; }
@@ -2393,9 +2563,9 @@
public:
ConstDeclNode(const Identifier& ident, ExpressionNode* in) KJS_FAST_CALL;
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual KJS::JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- void evaluateSingle(ExecState*) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual KJS::JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ void evaluateSingle(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
PassRefPtr<ConstDeclNode> releaseNext() KJS_FAST_CALL { return m_next.release(); }
@@ -2403,9 +2573,11 @@
Identifier m_ident;
ListRefPtr<ConstDeclNode> m_next;
RefPtr<ExpressionNode> m_init;
-
+
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual RegisterID* emitCodeSingle(CodeGenerator&) KJS_FAST_CALL;
private:
- void handleSlowCase(ExecState*, const ScopeChain&, JSValue*) KJS_FAST_CALL NEVER_INLINE;
+ void handleSlowCase(OldInterpreterExecState*, const ScopeChain&, JSValue*) KJS_FAST_CALL NEVER_INLINE;
};
class ConstStatementNode : public StatementNode {
@@ -2415,10 +2587,11 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
-
+
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
private:
RefPtr<ConstDeclNode> m_next;
};
@@ -2442,8 +2615,9 @@
public:
BlockNode(SourceElements* children) KJS_FAST_CALL;
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
protected:
@@ -2456,7 +2630,9 @@
{
}
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual bool isEmptyStatement() const KJS_FAST_CALL { return true; }
};
@@ -2468,8 +2644,9 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
private:
@@ -2482,9 +2659,11 @@
: m_expr(expr)
{
}
+
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
private:
@@ -2499,8 +2678,9 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
protected:
@@ -2516,8 +2696,9 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
private:
@@ -2532,8 +2713,9 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
private:
@@ -2549,8 +2731,9 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
private:
@@ -2576,8 +2759,9 @@
m_expr3->optimizeForUnnecessaryResult();
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
private:
@@ -2592,9 +2776,10 @@
public:
ForInNode(ExpressionNode*, ExpressionNode*, StatementNode*) KJS_FAST_CALL;
ForInNode(const Identifier&, ExpressionNode*, ExpressionNode*, StatementNode*) KJS_FAST_CALL;
-
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
private:
@@ -2616,8 +2801,9 @@
: m_ident(ident)
{
}
-
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
private:
@@ -2634,8 +2820,9 @@
: m_ident(ident)
{
}
-
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
private:
@@ -2649,9 +2836,11 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
+ virtual bool isReturnNode() const KJS_FAST_CALL { return true; }
private:
RefPtr<ExpressionNode> m_value;
@@ -2665,8 +2854,9 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
private:
@@ -2682,8 +2872,9 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual void pushLabel(const Identifier& ident) KJS_FAST_CALL { m_statement->pushLabel(ident); }
@@ -2699,8 +2890,9 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
private:
@@ -2717,10 +2909,12 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* dst = 0) KJS_FAST_CALL;
+
private:
RefPtr<StatementNode> m_tryBlock;
Identifier m_exceptionIdent;
@@ -2764,12 +2958,13 @@
bool usesEval() const { return m_usesEval; }
bool needsClosure() const { return m_needsClosure; }
-
+
protected:
- void optimizeVariableAccess(ExecState*) KJS_FAST_CALL;
+ void optimizeVariableAccess(OldInterpreterExecState*) KJS_FAST_CALL;
VarStack m_varStack;
FunctionStack m_functionStack;
+
private:
UString m_sourceURL;
int m_sourceId;
@@ -2780,69 +2975,119 @@
class ProgramNode : public ScopeNode {
public:
static ProgramNode* create(SourceElements*, VarStack*, FunctionStack*, bool usesEval, bool needsClosure) KJS_FAST_CALL;
+ virtual ~ProgramNode();
+
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ ProgramCodeBlock& code(ScopeChainNode* scopeChain, bool canCreateGlobals) KJS_FAST_CALL
+ {
+ if (!m_code)
+ generateCode(scopeChain, canCreateGlobals);
+ return *m_code;
+ }
private:
ProgramNode(SourceElements*, VarStack*, FunctionStack*, bool usesEval, bool needsClosure) KJS_FAST_CALL;
- void initializeSymbolTable(ExecState*) KJS_FAST_CALL;
- ALWAYS_INLINE void processDeclarations(ExecState*) KJS_FAST_CALL;
+ void generateCode(ScopeChainNode*, bool) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ void initializeSymbolTable(OldInterpreterExecState*) KJS_FAST_CALL;
+ ALWAYS_INLINE void processDeclarations(OldInterpreterExecState*) KJS_FAST_CALL;
Vector<size_t> m_varIndexes; // Storage indexes belonging to the nodes in m_varStack. (Recorded to avoid double lookup.)
Vector<size_t> m_functionIndexes; // Storage indexes belonging to the nodes in m_functionStack. (Recorded to avoid double lookup.)
+
+ OwnPtr<ProgramCodeBlock> m_code;
};
class EvalNode : public ScopeNode {
public:
static EvalNode* create(SourceElements*, VarStack*, FunctionStack*, bool usesEval, bool needsClosure) KJS_FAST_CALL;
+ virtual ~EvalNode();
+
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ EvalCodeBlock& code(ScopeChainNode* scopeChain) KJS_FAST_CALL
+ {
+ if (!m_code)
+ generateCode(scopeChain);
+ return *m_code;
+ }
private:
EvalNode(SourceElements*, VarStack*, FunctionStack*, bool usesEval, bool needsClosure) KJS_FAST_CALL;
- ALWAYS_INLINE void processDeclarations(ExecState*) KJS_FAST_CALL;
+ ALWAYS_INLINE void processDeclarations(OldInterpreterExecState*) KJS_FAST_CALL;
+ void generateCode(ScopeChainNode*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ OwnPtr<EvalCodeBlock> m_code;
};
class FunctionBodyNode : public ScopeNode {
public:
static FunctionBodyNode* create(SourceElements*, VarStack*, FunctionStack*, bool usesEval, bool needsClosure) KJS_FAST_CALL;
-
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
-
- SymbolTable& symbolTable() KJS_FAST_CALL { return m_symbolTable; }
-
+ virtual ~FunctionBodyNode();
+
Vector<Identifier>& parameters() KJS_FAST_CALL { return m_parameters; }
UString paramString() const KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ SymbolTable& symbolTable() { return m_symbolTable; } // FIXME: Remove this
+
+ CodeBlock& code(ScopeChainNode* scopeChain) KJS_FAST_CALL
+ {
+ ASSERT(scopeChain);
+ if (!m_code)
+ generateCode(scopeChain);
+ return *m_code;
+ }
+
+ CodeBlock& generatedCode() KJS_FAST_CALL
+ {
+ ASSERT(m_code);
+ return *m_code;
+ }
+
+ void mark();
+
+ void setSource(const SourceRange& source) { m_source = source; }
+ UString toSourceString() const KJS_FAST_CALL { return UString("{") + m_source.toString() + UString("}"); }
+
protected:
FunctionBodyNode(SourceElements*, VarStack*, FunctionStack*, bool usesEval, bool needsClosure) KJS_FAST_CALL;
private:
- void initializeSymbolTable(ExecState*) KJS_FAST_CALL;
- ALWAYS_INLINE void processDeclarations(ExecState*) KJS_FAST_CALL;
-
- bool m_initialized;
+ void generateCode(ScopeChainNode*) KJS_FAST_CALL;
+
Vector<Identifier> m_parameters;
SymbolTable m_symbolTable;
+ OwnPtr<CodeBlock> m_code;
+ SourceRange m_source;
};
class FuncExprNode : public ExpressionNode {
public:
- FuncExprNode(const Identifier& ident, FunctionBodyNode* body, ParameterNode* parameter = 0) KJS_FAST_CALL
+ FuncExprNode(const Identifier& ident, FunctionBodyNode* body, const SourceRange& source, ParameterNode* parameter = 0) KJS_FAST_CALL
: m_ident(ident)
, m_parameter(parameter)
, m_body(body)
{
addParams();
+ m_body->setSource(source);
}
- virtual JSValue* evaluate(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+ FunctionImp* makeFunction(ExecState*, ScopeChainNode*) KJS_FAST_CALL;
+ virtual JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecMember; }
virtual bool needsParensIfLeftmost() const { return true; }
+ FunctionBodyNode* body() { return m_body.get(); }
+
private:
void addParams() KJS_FAST_CALL;
@@ -2855,27 +3100,25 @@
class FuncDeclNode : public StatementNode {
public:
- FuncDeclNode(const Identifier& ident, FunctionBodyNode* body) KJS_FAST_CALL
- : m_ident(ident)
- , m_body(body)
- {
- addParams();
- }
-
- FuncDeclNode(const Identifier& ident, ParameterNode* parameter, FunctionBodyNode* body) KJS_FAST_CALL
+ FuncDeclNode(const Identifier& ident, FunctionBodyNode* body, const SourceRange& source, ParameterNode* parameter = 0) KJS_FAST_CALL
: m_ident(ident)
, m_parameter(parameter)
, m_body(body)
{
addParams();
+ m_body->setSource(source);
}
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
- ALWAYS_INLINE FunctionImp* makeFunction(ExecState*) KJS_FAST_CALL;
+ FunctionImp* makeFunction(ExecState*, ScopeChainNode*) KJS_FAST_CALL;
Identifier m_ident;
+ FunctionBodyNode* body() { return m_body.get(); }
+
private:
void addParams() KJS_FAST_CALL;
@@ -2897,12 +3140,15 @@
children->releaseContentsIntoVector(m_children);
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
- JSValue* evaluate(ExecState*) KJS_FAST_CALL;
- JSValue* executeStatements(ExecState*) KJS_FAST_CALL;
+ JSValue* evaluate(OldInterpreterExecState*) KJS_FAST_CALL;
+ JSValue* executeStatements(OldInterpreterExecState*) KJS_FAST_CALL;
+
+ ExpressionNode* expr() const { return m_expr.get(); }
+ StatementVector& children() { return m_children; }
private:
RefPtr<ExpressionNode> m_expr;
@@ -2922,7 +3168,7 @@
clauseList->m_next = this;
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
CaseClauseNode* getClause() const KJS_FAST_CALL { return m_clause.get(); }
ClauseListNode* getNext() const KJS_FAST_CALL { return m_next.get(); }
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
@@ -2937,10 +3183,17 @@
class CaseBlockNode : public Node {
public:
- CaseBlockNode(ClauseListNode* list1, CaseClauseNode* defaultClause, ClauseListNode* list2) KJS_FAST_CALL;
+ CaseBlockNode(ClauseListNode* list1, CaseClauseNode* defaultClause, ClauseListNode* list2) KJS_FAST_CALL
+ : m_list1(list1)
+ , m_defaultClause(defaultClause)
+ , m_list2(list2)
+ {
+ }
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- JSValue* executeBlock(ExecState*, JSValue *input) KJS_FAST_CALL;
+ RegisterID* emitCodeForBlock(CodeGenerator&, RegisterID* input, RegisterID* dst = 0) KJS_FAST_CALL;
+
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ JSValue* executeBlock(OldInterpreterExecState*, JSValue *input) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { ASSERT_NOT_REACHED(); return PrecExpression; }
@@ -2958,8 +3211,10 @@
{
}
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
+
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
private:
@@ -2971,9 +3226,9 @@
public:
BreakpointCheckStatement(PassRefPtr<StatementNode>) KJS_FAST_CALL;
- virtual JSValue* execute(ExecState*) KJS_FAST_CALL;
+ virtual JSValue* execute(OldInterpreterExecState*) KJS_FAST_CALL;
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
- virtual void optimizeVariableAccess(ExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
+ virtual void optimizeVariableAccess(OldInterpreterExecState*, const SymbolTable&, const LocalStorage&, NodeStack&) KJS_FAST_CALL;
private:
RefPtr<StatementNode> m_statement;