Rewrite Function.bind as a builtin
[WebKit.git] / Source / JavaScriptCore / parser / Nodes.h
index 2500fb3..cdb263c 100644 (file)
@@ -164,6 +164,7 @@ namespace JSC {
         virtual bool isSubtract() const { return false; }
         virtual bool isBoolean() const { return false; }
         virtual bool isSpreadExpression() const { return false; }
+        virtual bool getBooleanConstant(bool&) const { return false; }
 
         virtual void emitBytecodeInConditionContext(BytecodeGenerator&, Label*, Label*, FallThroughMode);
 
@@ -213,6 +214,13 @@ namespace JSC {
         NullNode(const JSTokenLocation&);
 
     private:
+        
+        bool getBooleanConstant(bool& value) const override
+        {
+            value = false;
+            return true;
+        }
+        
         virtual bool isNull() const override { return true; }
         virtual JSValue jsValue(BytecodeGenerator&) const override { return jsNull(); }
     };
@@ -221,8 +229,14 @@ namespace JSC {
     public:
         BooleanNode(const JSTokenLocation&, bool value);
         bool value() { return m_value; }
-
+        
     private:
+        bool getBooleanConstant(bool& value) const override
+        {
+            value = m_value;
+            return true;
+        }
+
         virtual bool isBoolean() const override { return true; }
         virtual JSValue jsValue(BytecodeGenerator&) const override { return jsBoolean(m_value); }
 
@@ -236,6 +250,11 @@ namespace JSC {
         void setValue(double value) { m_value = value; }
 
     private:
+        bool getBooleanConstant(bool& value) const override
+        {
+            value = (bool)m_value;
+            return true;
+        }
         virtual bool isNumber() const override { return true; }
         virtual JSValue jsValue(BytecodeGenerator&) const override { return jsNumber(m_value); }