Ignore:
Timestamp:
May 1, 2009, 2:20:11 PM (16 years ago)
Author:
[email protected]
Message:

2009-05-01 Geoffrey Garen <[email protected]>

Reviewed by Sam "That doesn't look like what I thought it looks like" Weinig.


Beefed up the JSValuePtr class and removed some non-JSValuePtr dependencies
on JSImmediate, in prepapration for making JSImmediate an implementation
detail of JSValuePtr.


SunSpider reports no change.

  • interpreter/Interpreter.cpp: (JSC::Interpreter::privateExecute):
  • jit/JIT.cpp: (JSC::JIT::privateCompileMainPass):
  • jit/JITArithmetic.cpp: (JSC::JIT::compileFastArith_op_mod):
  • runtime/JSGlobalObjectFunctions.cpp: (JSC::globalFuncParseInt): Updated for interface changes.
  • runtime/JSImmediate.h: (JSC::JSValuePtr::JSValuePtr):
  • runtime/JSValue.h: (JSC::JSValuePtr::): (JSC::jsImpossibleValue): (JSC::jsNull): (JSC::jsUndefined): (JSC::jsBoolean): (JSC::JSValuePtr::encode): (JSC::JSValuePtr::decode): (JSC::JSValuePtr::JSValuePtr): (JSC::JSValuePtr::operator bool): (JSC::JSValuePtr::operator==): (JSC::JSValuePtr::operator!=): (JSC::JSValuePtr::isUndefined): (JSC::JSValuePtr::isNull): Changed jsImpossibleValue(), jsNull(), jsUndefined(), and jsBoolean() to operate in terms of JSValuePtr instead of JSImmediate.
  • wtf/StdLibExtras.h: (WTF::bitwise_cast): Fixed up for clarity.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/runtime/JSImmediate.h

    r40046 r43121  
    4343    class UString;
    4444
    45     JSValuePtr js0();
    46     JSValuePtr jsNull();
    47     JSValuePtr jsBoolean(bool b);
    48     JSValuePtr jsUndefined();
    49     JSValuePtr jsImpossibleValue();
    5045    JSValuePtr jsNumber(ExecState* exec, double d);
    5146    JSValuePtr jsNumber(ExecState*, char i);
     
    161156        friend class JSValuePtr;
    162157        friend class JSFastMath;
    163         friend JSValuePtr js0();
    164         friend JSValuePtr jsNull();
    165         friend JSValuePtr jsBoolean(bool b);
    166         friend JSValuePtr jsUndefined();
    167         friend JSValuePtr jsImpossibleValue();
    168158        friend JSValuePtr jsNumber(ExecState* exec, double d);
    169159        friend JSValuePtr jsNumber(ExecState*, char i);
     
    578568    }
    579569
    580     inline JSValuePtr js0()
    581     {
    582         return JSImmediate::zeroImmediate();
    583     }
    584 
    585     inline JSValuePtr jsNull()
    586     {
    587         return JSImmediate::nullImmediate();
    588     }
    589 
    590     inline JSValuePtr jsBoolean(bool b)
    591     {
    592         return b ? JSImmediate::trueImmediate() : JSImmediate::falseImmediate();
    593     }
    594 
    595     inline JSValuePtr jsUndefined()
    596     {
    597         return JSImmediate::undefinedImmediate();
    598     }
    599 
    600     inline JSValuePtr jsImpossibleValue()
    601     {
    602         return JSImmediate::impossibleValue();
    603     }
    604 
    605570    // These are identical logic to the JSValue functions above, and faster than jsNumber(number).toInt32().
    606571    int32_t toInt32(double);
     
    609574    uint32_t toUInt32SlowCase(double, bool& ok);
    610575
    611     inline bool JSValuePtr::isUndefined() const
    612     {
    613         return asValue() == jsUndefined();
    614     }
    615 
    616     inline bool JSValuePtr::isNull() const
    617     {
    618         return asValue() == jsNull();
     576    inline JSValuePtr::JSValuePtr(ImpossibleValueTag)
     577    {
     578        *this = JSImmediate::impossibleValue();
     579    }
     580
     581    inline JSValuePtr::JSValuePtr(JSNullTag)
     582    {
     583        *this = JSImmediate::nullImmediate();
     584    }
     585   
     586    inline JSValuePtr::JSValuePtr(JSUndefinedTag)
     587    {
     588        *this = JSImmediate::undefinedImmediate();
     589    }
     590
     591    inline JSValuePtr::JSValuePtr(JSTrueTag)
     592    {
     593        *this = JSImmediate::trueImmediate();
     594    }
     595
     596    inline JSValuePtr::JSValuePtr(JSFalseTag)
     597    {
     598        *this = JSImmediate::falseImmediate();
    619599    }
    620600
Note: See TracChangeset for help on using the changeset viewer.