Changeset 60655 in webkit


Ignore:
Timestamp:
Jun 3, 2010 10:57:42 PM (14 years ago)
Author:
eric@webkit.org
Message:

2010-06-03 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>

Reviewed by Kenneth Rohde Christiansen.

New states in QScriptValuePrivate.

The CSpecial state was divided into CNull and CUndefined. It simplify
the QScriptValue code by avoiding a few "cast" and "if".
Moreover the MSVS compiler didn't like casting between a double and an
enum which is avoided now.

[Qt] The QScriptValuePrivate::CSpecial is too generic.
https://bugs.webkit.org/show_bug.cgi?id=40067

  • qt/api/qscriptvalue_p.h: (QScriptValuePrivate::): (QScriptValuePrivate::QScriptValuePrivate): (QScriptValuePrivate::isNull): (QScriptValuePrivate::isUndefined): (QScriptValuePrivate::toString): (QScriptValuePrivate::toNumber): (QScriptValuePrivate::toBool): (QScriptValuePrivate::toObject): (QScriptValuePrivate::assignEngine): (QScriptValuePrivate::isNumberBased):
Location:
trunk/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/ChangeLog

    r60650 r60655  
     12010-06-03  Jedrzej Nowacki  <jedrzej.nowacki@nokia.com>
     2
     3        Reviewed by Kenneth Rohde Christiansen.
     4
     5        New states in QScriptValuePrivate.
     6
     7        The CSpecial state was divided into CNull and CUndefined. It simplify
     8        the QScriptValue code by avoiding a few "cast" and "if".
     9        Moreover the MSVS compiler didn't like casting between a double and an
     10        enum which is avoided now.
     11
     12        [Qt] The QScriptValuePrivate::CSpecial is too generic.
     13        https://bugs.webkit.org/show_bug.cgi?id=40067
     14
     15        * qt/api/qscriptvalue_p.h:
     16        (QScriptValuePrivate::):
     17        (QScriptValuePrivate::QScriptValuePrivate):
     18        (QScriptValuePrivate::isNull):
     19        (QScriptValuePrivate::isUndefined):
     20        (QScriptValuePrivate::toString):
     21        (QScriptValuePrivate::toNumber):
     22        (QScriptValuePrivate::toBool):
     23        (QScriptValuePrivate::toObject):
     24        (QScriptValuePrivate::assignEngine):
     25        (QScriptValuePrivate::isNumberBased):
     26
    1272010-06-03  Gavin Barraclough  <barraclough@apple.com>
    228
  • trunk/JavaScriptCore/qt/api/qscriptvalue_p.h

    r60585 r60655  
    5151    CBool -> QSVP is created from bool and no JSC engine has been associated yet. Current value is kept
    5252        in m_number
    53     CSpecial -> QSVP is Undefined or Null, but a JSC engine hasn't been associated yet, current value
    54         is kept in m_number (cast of QScriptValue::SpecialValue)
     53    CNull -> QSVP is null, but a JSC engine hasn't been associated yet.
     54    CUndefined -> QSVP is undefined, but a JSC engine hasn't been associated yet.
    5555    JSValue -> QSVP is associated with engine, but there is no information about real type, the state
    5656        have really short live cycle. Normally it is created as a function call result.
     
    126126        CNumber,
    127127        CBool,
    128         CSpecial,
     128        CNull,
     129        CUndefined,
    129130        JSValue = 0x2000, // JS values are equal or higher then this value.
    130131        JSPrimitive,
     
    207208
    208209QScriptValuePrivate::QScriptValuePrivate(QScriptValue::SpecialValue value)
    209     : m_state(CSpecial)
    210     , m_number(value)
     210    : m_state(value == QScriptValue::NullValue ? CNull : CUndefined)
    211211    , m_value(0)
    212212{
     
    326326{
    327327    switch (m_state) {
    328     case CSpecial:
    329         return m_number == static_cast<int>(QScriptValue::NullValue);
     328    case CNull:
     329        return true;
    330330    case JSValue:
    331331        if (refinedJSValue() != JSPrimitive)
     
    358358{
    359359    switch (m_state) {
    360     case CSpecial:
    361         return m_number == static_cast<int>(QScriptValue::UndefinedValue);
     360    case CUndefined:
     361        return true;
    362362    case JSValue:
    363363        if (refinedJSValue() != JSPrimitive)
     
    423423    case CNumber:
    424424        return QScriptConverter::toString(m_number);
    425     case CSpecial:
    426         return m_number == QScriptValue::NullValue ? QString::fromLatin1("null") : QString::fromLatin1("undefined");
     425    case CNull:
     426        return QString::fromLatin1("null");
     427    case CUndefined:
     428        return QString::fromLatin1("undefined");
    427429    case JSValue:
    428430    case JSPrimitive:
     
    447449    case CBool:
    448450        return m_number ? 1 : 0;
     451    case CNull:
    449452    case Invalid:
    450453        return 0;
    451     case CSpecial:
    452         return m_number == QScriptValue::NullValue ? 0 : qQNaN();
     454    case CUndefined:
     455        return qQNaN();
    453456    case CString:
    454457        bool ok;
     
    481484        return m_number;
    482485    case Invalid:
    483     case CSpecial:
     486    case CNull:
     487    case CUndefined:
    484488        return false;
    485489    case CString:
     
    537541    switch (m_state) {
    538542    case Invalid:
    539     case CSpecial:
     543    case CNull:
     544    case CUndefined:
    540545        return new QScriptValuePrivate;
    541546    case CString:
     
    675680        value = engine->makeJSValue(m_number);
    676681        break;
    677     case CSpecial:
    678         value = engine->makeJSValue(static_cast<QScriptValue::SpecialValue>(m_number));
     682    case CNull:
     683        value = engine->makeJSValue(QScriptValue::NullValue);
     684        break;
     685    case CUndefined:
     686        value = engine->makeJSValue(QScriptValue::UndefinedValue);
    679687        break;
    680688    default:
     
    804812  Returns true if current value of QSV is placed in m_number.
    805813*/
    806 bool QScriptValuePrivate::isNumberBased() const { return !isJSBased() && !isStringBased() && m_state != Invalid; }
     814bool QScriptValuePrivate::isNumberBased() const { return m_state == CNumber || m_state == CBool; }
    807815
    808816/*!
Note: See TracChangeset for help on using the changeset viewer.