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


Ignore:
Timestamp:
Oct 24, 2007, 1:06:03 AM (18 years ago)
Author:
eseidel
Message:

2007-10-24 Eric Seidel <[email protected]>

Reviewed by darin.


Add ImmediateNumberNode to hold a JSValue* instead of a double for numbers
which can be represented by JSImmediate.

  • kjs/grammar.y:
  • kjs/nodes.cpp: (KJS::NumberNode::evaluate): (KJS::ImmediateNumberNode::evaluate):
  • kjs/nodes.h: (KJS::Node::): (KJS::ImmediateNumberNode::):
  • kjs/nodes2string.cpp: (ImmediateNumberNode::streamTo):
File:
1 edited

Legend:

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

    r26925 r26957  
    118118
    119119    virtual bool isNumber() const KJS_FAST_CALL { return false; }
     120    virtual bool isImmediateValue() const KJS_FAST_CALL { return false; }
    120121    virtual bool isLocation() const KJS_FAST_CALL { return false; }
    121122    virtual bool isResolveNode() const KJS_FAST_CALL { return false; }
     
    200201  private:
    201202    double val;
     203  };
     204 
     205  class ImmediateNumberNode : public Node {
     206  public:
     207      ImmediateNumberNode(JSValue* v) KJS_FAST_CALL : m_value(v) {}
     208      JSValue* evaluate(ExecState*) KJS_FAST_CALL;
     209      virtual void streamTo(SourceStream&) const KJS_FAST_CALL;
     210     
     211      virtual bool isImmediateValue() const KJS_FAST_CALL { return true; }
     212      double value() const KJS_FAST_CALL { return JSImmediate::toDouble(m_value); }
     213      void setValue(double v) KJS_FAST_CALL { m_value = JSImmediate::fromDouble(v); ASSERT(m_value == v); }
     214  private:
     215      JSValue* m_value;
    202216  };
    203217
Note: See TracChangeset for help on using the changeset viewer.