Reviewed by Maciej.
Combine TrueNode and FalseNode to make BooleanNode, and remove the
unused class PlaceholderTrueNode.
* kjs/grammar.y:
* kjs/nodes.cpp:
(KJS::BooleanNode::emitCode):
* kjs/nodes.h:
(KJS::BooleanNode::):
(KJS::BooleanNode::precedence):
* kjs/nodes2string.cpp:
(KJS::BooleanNode::streamTo):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@34529
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2008-06-13 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+
+ Reviewed by Maciej.
+
+ Combine TrueNode and FalseNode to make BooleanNode, and remove the
+ unused class PlaceholderTrueNode.
+
+ * kjs/grammar.y:
+ * kjs/nodes.cpp:
+ (KJS::BooleanNode::emitCode):
+ * kjs/nodes.h:
+ (KJS::BooleanNode::):
+ (KJS::BooleanNode::precedence):
+ * kjs/nodes2string.cpp:
+ (KJS::BooleanNode::streamTo):
+
2008-06-13 Cameron Zwarich <cwzwarich@uwaterloo.ca>
Reviewed by Maciej.
Literal:
NULLTOKEN { $$ = createNodeFeatureInfo<ExpressionNode*>(new NullNode, 0); }
- | TRUETOKEN { $$ = createNodeFeatureInfo<ExpressionNode*>(new TrueNode, 0); }
- | FALSETOKEN { $$ = createNodeFeatureInfo<ExpressionNode*>(new FalseNode, 0); }
+ | TRUETOKEN { $$ = createNodeFeatureInfo<ExpressionNode*>(new BooleanNode(true), 0); }
+ | FALSETOKEN { $$ = createNodeFeatureInfo<ExpressionNode*>(new BooleanNode(false), 0); }
| NUMBER { $$ = createNodeFeatureInfo<ExpressionNode*>(makeNumberNode($1), 0); }
| STRING { $$ = createNodeFeatureInfo<ExpressionNode*>(new StringNode($1), 0); }
| '/' /* regexp */ {
return generator.emitLoad(generator.finalDestination(dst), jsNull());
}
-// ------------------------------ FalseNode ----------------------------------
+// ------------------------------ BooleanNode ----------------------------------
-RegisterID* FalseNode::emitCode(CodeGenerator& generator, RegisterID* dst)
+RegisterID* BooleanNode::emitCode(CodeGenerator& generator, RegisterID* dst)
{
- return generator.emitLoad(generator.finalDestination(dst), false);
-}
-
-// ------------------------------ TrueNode ----------------------------------
-
-RegisterID* TrueNode::emitCode(CodeGenerator& generator, RegisterID* dst)
-{
- return generator.emitLoad(generator.finalDestination(dst), true);
+ return generator.emitLoad(generator.finalDestination(dst), m_value);
}
// ------------------------------ NumberNode -----------------------------------
virtual Precedence precedence() const { return PrecPrimary; }
};
- class FalseNode : public ExpressionNode {
+ class BooleanNode : public ExpressionNode {
public:
- FalseNode() KJS_FAST_CALL
+ BooleanNode(bool value) KJS_FAST_CALL
: ExpressionNode(BooleanType)
+ , m_value(value)
{
}
virtual bool isConstant() const KJS_FAST_CALL { return true; }
virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
virtual Precedence precedence() const { return PrecPrimary; }
- };
-
- class TrueNode : public ExpressionNode {
- public:
- TrueNode() KJS_FAST_CALL
- : ExpressionNode(BooleanType)
- {
- }
-
- virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
- virtual bool isConstant() const KJS_FAST_CALL { return true; }
- virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
- virtual Precedence precedence() const { return PrecPrimary; }
- };
-
- class PlaceholderTrueNode : public TrueNode {
- public:
- // Like TrueNode, but does not serialize as "true".
- PlaceholderTrueNode() KJS_FAST_CALL
- : TrueNode()
- {
- }
-
- virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
+ protected:
+ bool m_value;
};
class NumberNode : public ExpressionNode {
s << "null";
}
-void FalseNode::streamTo(SourceStream& s) const
-{
- s << "false";
-}
-
-void TrueNode::streamTo(SourceStream& s) const
-{
- s << "true";
-}
-
-void PlaceholderTrueNode::streamTo(SourceStream&) const
+void BooleanNode::streamTo(SourceStream& s) const
{
+ s << (m_value ? "true" : "false");
}
void NumberNode::streamTo(SourceStream& s) const