Ignore:
Timestamp:
Mar 30, 2006, 10:52:16 PM (19 years ago)
Author:
eseidel
Message:

2006-03-30 Eric Seidel <[email protected]>

Reviewed by anders.

Small code-style update.

  • kjs/operations.cpp: (KJS::isNaN): (KJS::isInf): (KJS::isPosInf): (KJS::isNegInf): (KJS::equal): (KJS::strictEqual): (KJS::relation): (KJS::maxInt): (KJS::minInt): (KJS::add): (KJS::mult):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/operations.cpp

    r13089 r13598  
    4242
    4343namespace KJS {
    44 
     44   
    4545#if !PLATFORM(DARWIN)
    46   // FIXME: should probably be inlined on other platforms too, and controlled exclusively
    47   // by HAVE macros
    48 
    49 
     46// FIXME: should probably be inlined on other platforms too, and controlled exclusively
     47// by HAVE macros
     48   
     49   
    5050bool isNaN(double d)
    5151{
    5252#if HAVE(FUNC_ISNAN)
    53   return isnan(d);
     53    return isnan(d);
    5454#elif HAVE(FLOAT_H)
    55   return _isnan(d) != 0;
    56 #else
    57   return !(d == d);
     55    return _isnan(d) != 0;
     56#else
     57    return !(d == d);
    5858#endif
    5959}
     
    6161bool isInf(double d)
    6262{
    63   // FIXME: should be HAVE(_FPCLASS)
     63    // FIXME: should be HAVE(_FPCLASS)
    6464#if PLATFORM(WIN_OS)
    65   int fpClass = _fpclass(d);
    66   return _FPCLASS_PINF == fpClass || _FPCLASS_NINF == fpClass;
     65    int fpClass = _fpclass(d);
     66    return _FPCLASS_PINF == fpClass || _FPCLASS_NINF == fpClass;
    6767#elif HAVE(FUNC_ISINF)
    68   return isinf(d);
     68    return isinf(d);
    6969#elif HAVE(FUNC_FINITE)
    70   return finite(d) == 0 && d == d;
     70    return finite(d) == 0 && d == d;
    7171#elif HAVE(FUNC__FINITE)
    72   return _finite(d) == 0 && d == d;
    73 #else
    74   return false;
     72    return _finite(d) == 0 && d == d;
     73#else
     74    return false;
    7575#endif
    7676}
     
    7878bool isPosInf(double d)
    7979{
    80   // FIXME: should be HAVE(_FPCLASS)
     80    // FIXME: should be HAVE(_FPCLASS)
    8181#if PLATFORM(WIN_OS)
    82   return _FPCLASS_PINF == _fpclass(d);
     82    return _FPCLASS_PINF == _fpclass(d);
    8383#elif HAVE(FUNC_ISINF)
    84   return (isinf(d) == 1);
     84    return (isinf(d) == 1);
    8585#elif HAVE(FUNC_FINITE)
    86   return !finite(d) && d == d; // ### can we distinguish between + and - ?
     86    return !finite(d) && d == d; // ### can we distinguish between + and - ?
    8787#elif HAVE(FUNC__FINITE)
    88   return !_finite(d) && d == d; // ###
    89 #else
    90   return false;
     88    return !_finite(d) && d == d; // ###
     89#else
     90    return false;
    9191#endif
    9292}
     
    9494bool isNegInf(double d)
    9595{
    96   // FIXME: should be HAVE(_FPCLASS)
     96    // FIXME: should be HAVE(_FPCLASS)
    9797#if PLATFORM(WIN_OS)
    98   return _FPCLASS_NINF == _fpclass(d);
     98    return _FPCLASS_NINF == _fpclass(d);
    9999#elif HAVE(FUNC_ISINF)
    100   return (isinf(d) == -1);
     100    return (isinf(d) == -1);
    101101#elif HAVE(FUNC_FINITE)
    102   return finite(d) == 0 && d == d; // ###
     102    return finite(d) == 0 && d == d; // ###
    103103#elif HAVE(FUNC__FINITE)
    104   return _finite(d) == 0 && d == d; // ###
    105 #else
    106   return false;
     104    return _finite(d) == 0 && d == d; // ###
     105#else
     106    return false;
    107107#endif
    108108}
     
    115115    JSType t1 = v1->type();
    116116    JSType t2 = v2->type();
    117 
     117   
    118118    if (t1 != t2) {
    119119        if (t1 == UndefinedType)
     
    121121        if (t2 == UndefinedType)
    122122            t2 = NullType;
    123 
     123       
    124124        if (t1 == BooleanType)
    125125            t1 = NumberType;
    126126        if (t2 == BooleanType)
    127127            t2 = NumberType;
    128 
     128       
    129129        if (t1 == NumberType && t2 == StringType) {
    130130            // use toNumber
     
    145145        }
    146146    }
    147 
     147   
    148148    if (t1 == UndefinedType || t1 == NullType)
    149149        return true;
    150 
     150   
    151151    if (t1 == NumberType) {
    152152        double d1 = v1->toNumber(exec);
     
    154154        return d1 == d2;
    155155    }
    156 
     156   
    157157    if (t1 == StringType)
    158158        return v1->toString(exec) == v2->toString(exec);
    159 
     159   
    160160    if (t1 == BooleanType)
    161161        return v1->toBoolean(exec) == v2->toBoolean(exec);
    162 
     162   
    163163    // types are Object
    164164    return v1 == v2;
     
    167167bool strictEqual(ExecState *exec, JSValue *v1, JSValue *v2)
    168168{
    169   JSType t1 = v1->type();
    170   JSType t2 = v2->type();
    171 
    172   if (t1 != t2)
    173     return false;
    174   if (t1 == UndefinedType || t1 == NullType)
    175     return true;
    176   if (t1 == NumberType) {
     169    JSType t1 = v1->type();
     170    JSType t2 = v2->type();
     171   
     172    if (t1 != t2)
     173        return false;
     174    if (t1 == UndefinedType || t1 == NullType)
     175        return true;
     176    if (t1 == NumberType) {
     177        double n1 = v1->toNumber(exec);
     178        double n2 = v2->toNumber(exec);
     179        if (n1 == n2)
     180            return true;
     181        return false;
     182    } else if (t1 == StringType)
     183        return v1->toString(exec) == v2->toString(exec);
     184    else if (t2 == BooleanType)
     185        return v1->toBoolean(exec) == v2->toBoolean(exec);
     186   
     187    if (v1 == v2)
     188        return true;
     189    /* TODO: joined objects */
     190   
     191    return false;
     192}
     193
     194int relation(ExecState *exec, JSValue *v1, JSValue *v2)
     195{
     196    JSValue *p1 = v1->toPrimitive(exec,NumberType);
     197    JSValue *p2 = v2->toPrimitive(exec,NumberType);
     198   
     199    if (p1->isString() && p2->isString())
     200        return p1->toString(exec) < p2->toString(exec) ? 1 : 0;
     201   
     202    double n1 = p1->toNumber(exec);
     203    double n2 = p2->toNumber(exec);
     204    if (n1 < n2)
     205        return 1;
     206    if (n1 >= n2)
     207        return 0;
     208    return -1; // must be NaN, so undefined
     209}
     210
     211int maxInt(int d1, int d2)
     212{
     213    return (d1 > d2) ? d1 : d2;
     214}
     215
     216int minInt(int d1, int d2)
     217{
     218    return (d1 < d2) ? d1 : d2;
     219}
     220
     221// ECMA 11.6
     222JSValue *add(ExecState *exec, JSValue *v1, JSValue *v2, char oper)
     223{
     224    // exception for the Date exception in defaultValue()
     225    JSType preferred = oper == '+' ? UnspecifiedType : NumberType;
     226    JSValue *p1 = v1->toPrimitive(exec, preferred);
     227    JSValue *p2 = v2->toPrimitive(exec, preferred);
     228   
     229    if ((p1->isString() || p2->isString()) && oper == '+')
     230        return jsString(p1->toString(exec) + p2->toString(exec));
     231   
     232    if (oper == '+')
     233        return jsNumber(p1->toNumber(exec) + p2->toNumber(exec));
     234    else
     235        return jsNumber(p1->toNumber(exec) - p2->toNumber(exec));
     236}
     237
     238// ECMA 11.5
     239JSValue *mult(ExecState *exec, JSValue *v1, JSValue *v2, char oper)
     240{
    177241    double n1 = v1->toNumber(exec);
    178242    double n2 = v2->toNumber(exec);
    179     if (n1 == n2)
    180         return true;
    181     return false;
    182   } else if (t1 == StringType) {
    183     return v1->toString(exec) == v2->toString(exec);
    184   } else if (t2 == BooleanType) {
    185     return v1->toBoolean(exec) == v2->toBoolean(exec);
    186   }
    187   if (v1 == v2)
    188     return true;
    189   /* TODO: joined objects */
    190 
    191   return false;
    192 }
    193 
    194 int relation(ExecState *exec, JSValue *v1, JSValue *v2)
    195 {
    196   JSValue *p1 = v1->toPrimitive(exec,NumberType);
    197   JSValue *p2 = v2->toPrimitive(exec,NumberType);
    198 
    199   if (p1->isString() && p2->isString())
    200     return p1->toString(exec) < p2->toString(exec) ? 1 : 0;
    201 
    202   double n1 = p1->toNumber(exec);
    203   double n2 = p2->toNumber(exec);
    204   if (n1 < n2)
    205     return 1;
    206   if (n1 >= n2)
    207     return 0;
    208   return -1; // must be NaN, so undefined
    209 }
    210 
    211 int maxInt(int d1, int d2)
    212 {
    213   return (d1 > d2) ? d1 : d2;
    214 }
    215 
    216 int minInt(int d1, int d2)
    217 {
    218   return (d1 < d2) ? d1 : d2;
    219 }
    220 
    221 // ECMA 11.6
    222 JSValue *add(ExecState *exec, JSValue *v1, JSValue *v2, char oper)
    223 {
    224   // exception for the Date exception in defaultValue()
    225   JSType preferred = oper == '+' ? UnspecifiedType : NumberType;
    226   JSValue *p1 = v1->toPrimitive(exec, preferred);
    227   JSValue *p2 = v2->toPrimitive(exec, preferred);
    228 
    229   if ((p1->isString() || p2->isString()) && oper == '+') {
    230     return jsString(p1->toString(exec) + p2->toString(exec));
    231   }
    232 
    233   if (oper == '+')
    234     return jsNumber(p1->toNumber(exec) + p2->toNumber(exec));
    235   else
    236     return jsNumber(p1->toNumber(exec) - p2->toNumber(exec));
    237 }
    238 
    239 // ECMA 11.5
    240 JSValue *mult(ExecState *exec, JSValue *v1, JSValue *v2, char oper)
    241 {
    242   double n1 = v1->toNumber(exec);
    243   double n2 = v2->toNumber(exec);
    244 
    245   double result;
    246 
    247   if (oper == '*') {
    248     result = n1 * n2;
    249   } else if (oper == '/') {
    250     result = n1 / n2;
    251   } else {
    252     result = fmod(n1, n2);
    253   }
    254 
    255   return jsNumber(result);
    256 }
    257 
    258 }
     243   
     244    double result;
     245   
     246    if (oper == '*')
     247        result = n1 * n2;
     248    else if (oper == '/')
     249        result = n1 / n2;
     250    else
     251        result = fmod(n1, n2);
     252   
     253    return jsNumber(result);
     254}
     255
     256}
Note: See TracChangeset for help on using the changeset viewer.