Ignore:
Timestamp:
May 12, 2008, 12:12:31 AM (17 years ago)
Author:
[email protected]
Message:

Roll out recent threading changes (r32807, r32810, r32819, r32822) to simplify
SquirrelFish merging.

File:
1 edited

Legend:

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

    r32807 r33038  
    171171enum LocaleDateTimeFormat { LocaleDateAndTime, LocaleDate, LocaleTime };
    172172 
    173 static JSCell* formatLocaleDate(ExecState* exec, const GregorianDateTime& gdt, const LocaleDateTimeFormat format)
     173static JSCell* formatLocaleDate(const GregorianDateTime& gdt, const LocaleDateTimeFormat format)
    174174{
    175175    static const char* formatStrings[] = {"%#c", "%#x", "%X"};
     
    189189 
    190190    if ( ret == 0 )
    191         return jsString(exec, "");
     191        return jsString("");
    192192 
    193193    // Copy original into the buffer
     
    203203    }
    204204 
    205     return jsString(exec, timebuffer);
     205    return jsString(timebuffer);
    206206}
    207207
     
    470470// ECMA 15.9.4
    471471
    472 DatePrototype::DatePrototype(ExecState* exec, ObjectPrototype *objectProto)
     472DatePrototype::DatePrototype(ExecState *, ObjectPrototype *objectProto)
    473473  : DateInstance(objectProto)
    474474{
    475     setInternalValue(jsNaN(exec));
     475    setInternalValue(jsNaN());
    476476    // The constructor will be added later, after DateObjectImp has been built.
    477477}
     
    490490{
    491491  putDirect(exec->propertyNames().prototype, dateProto, DontEnum|DontDelete|ReadOnly);
    492   putDirectFunction(new (exec) DateObjectFuncImp(exec, funcProto, DateObjectFuncImp::Parse, 1, exec->propertyNames().parse), DontEnum);
    493   putDirectFunction(new (exec) DateObjectFuncImp(exec, funcProto, DateObjectFuncImp::UTC, 7, exec->propertyNames().UTC), DontEnum);
    494   putDirect(exec, exec->propertyNames().length, 7, ReadOnly|DontDelete|DontEnum);
     492  putDirectFunction(new DateObjectFuncImp(exec, funcProto, DateObjectFuncImp::Parse, 1, exec->propertyNames().parse), DontEnum);
     493  putDirectFunction(new DateObjectFuncImp(exec, funcProto, DateObjectFuncImp::UTC, 7, exec->propertyNames().UTC), DontEnum);
     494  putDirect(exec->propertyNames().length, 7, ReadOnly|DontDelete|DontEnum);
    495495}
    496496
     
    543543  }
    544544 
    545   DateInstance* ret = new (exec) DateInstance(exec->lexicalGlobalObject()->datePrototype());
    546   ret->setInternalValue(jsNumber(exec, timeClip(value)));
     545  DateInstance *ret = new DateInstance(exec->lexicalGlobalObject()->datePrototype());
     546  ret->setInternalValue(jsNumber(timeClip(value)));
    547547  return ret;
    548548}
    549549
    550550// ECMA 15.9.2
    551 JSValue* DateObjectImp::callAsFunction(ExecState* exec, JSObject* /*thisObj*/, const List& /*args*/)
     551JSValue *DateObjectImp::callAsFunction(ExecState * /*exec*/, JSObject * /*thisObj*/, const List &/*args*/)
    552552{
    553553    time_t localTime = time(0);
     
    555555    getLocalTime(&localTime, &localTM);
    556556    GregorianDateTime ts(localTM);
    557     return jsString(exec, formatDate(ts) + " " + formatTime(ts, false));
     557    return jsString(formatDate(ts) + " " + formatTime(ts, false));
    558558}
    559559
     
    563563    : InternalFunctionImp(funcProto, name), id(i)
    564564{
    565     putDirect(exec, exec->propertyNames().length, len, DontDelete|ReadOnly|DontEnum);
     565    putDirect(exec->propertyNames().length, len, DontDelete|ReadOnly|DontEnum);
    566566}
    567567
     
    570570{
    571571  if (id == Parse) {
    572     return jsNumber(exec, parseDate(args[0]->toString(exec)));
     572    return jsNumber(parseDate(args[0]->toString(exec)));
    573573  }
    574574  else { // UTC
     
    581581        || (n >= 6 && isnan(args[5]->toNumber(exec)))
    582582        || (n >= 7 && isnan(args[6]->toNumber(exec)))) {
    583       return jsNaN(exec);
     583      return jsNaN();
    584584    }
    585585
     
    593593    t.second = args[5]->toInt32(exec);
    594594    double ms = (n >= 7) ? args[6]->toNumber(exec) : 0;
    595     return jsNumber(exec, gregorianDateTimeToMS(t, ms, true));
     595    return jsNumber(gregorianDateTimeToMS(t, ms, true));
    596596  }
    597597}
     
    988988    double milli = v->toNumber(exec);
    989989    if (isnan(milli))
    990         return jsString(exec, "Invalid Date");
    991 
    992     GregorianDateTime t;
    993     thisDateObj->msToGregorianDateTime(milli, utc, t);
    994     return jsString(exec, formatDate(t) + " " + formatTime(t, utc));
     990        return jsString("Invalid Date");
     991
     992    GregorianDateTime t;
     993    thisDateObj->msToGregorianDateTime(milli, utc, t);
     994    return jsString(formatDate(t) + " " + formatTime(t, utc));
    995995}
    996996
     
    10061006    double milli = v->toNumber(exec);
    10071007    if (isnan(milli))
    1008         return jsString(exec, "Invalid Date");
    1009 
    1010     GregorianDateTime t;
    1011     thisDateObj->msToGregorianDateTime(milli, utc, t);
    1012     return jsString(exec, formatDateUTCVariant(t) + " " + formatTime(t, utc));
     1008        return jsString("Invalid Date");
     1009
     1010    GregorianDateTime t;
     1011    thisDateObj->msToGregorianDateTime(milli, utc, t);
     1012    return jsString(formatDateUTCVariant(t) + " " + formatTime(t, utc));
    10131013}
    10141014
     
    10241024    double milli = v->toNumber(exec);
    10251025    if (isnan(milli))
    1026         return jsString(exec, "Invalid Date");
    1027 
    1028     GregorianDateTime t;
    1029     thisDateObj->msToGregorianDateTime(milli, utc, t);
    1030     return jsString(exec, formatDate(t));
     1026        return jsString("Invalid Date");
     1027
     1028    GregorianDateTime t;
     1029    thisDateObj->msToGregorianDateTime(milli, utc, t);
     1030    return jsString(formatDate(t));
    10311031}
    10321032
     
    10421042    double milli = v->toNumber(exec);
    10431043    if (isnan(milli))
    1044         return jsString(exec, "Invalid Date");
    1045 
    1046     GregorianDateTime t;
    1047     thisDateObj->msToGregorianDateTime(milli, utc, t);
    1048     return jsString(exec, formatTime(t, utc));
     1044        return jsString("Invalid Date");
     1045
     1046    GregorianDateTime t;
     1047    thisDateObj->msToGregorianDateTime(milli, utc, t);
     1048    return jsString(formatTime(t, utc));
    10491049}
    10501050
     
    10581058    double milli = v->toNumber(exec);
    10591059    if (isnan(milli))
    1060         return jsString(exec, "Invalid Date");
     1060        return jsString("Invalid Date");
    10611061
    10621062#if PLATFORM(MAC)
    10631063    double secs = floor(milli / msPerSecond);
    1064     return jsString(exec, formatLocaleDate(exec, secs, true, true, args));
     1064    return jsString(formatLocaleDate(exec, secs, true, true, args));
    10651065#else
    10661066    UNUSED_PARAM(args);
     
    10701070    GregorianDateTime t;
    10711071    thisDateObj->msToGregorianDateTime(milli, utc, t);
    1072     return formatLocaleDate(exec, t, LocaleDateAndTime);
     1072    return formatLocaleDate(t, LocaleDateAndTime);
    10731073#endif
    10741074}
     
    10831083    double milli = v->toNumber(exec);
    10841084    if (isnan(milli))
    1085         return jsString(exec, "Invalid Date");
     1085        return jsString("Invalid Date");
    10861086
    10871087#if PLATFORM(MAC)
    10881088    double secs = floor(milli / msPerSecond);
    1089     return jsString(exec, formatLocaleDate(exec, secs, true, false, args));
     1089    return jsString(formatLocaleDate(exec, secs, true, false, args));
    10901090#else
    10911091    UNUSED_PARAM(args);
     
    10951095    GregorianDateTime t;
    10961096    thisDateObj->msToGregorianDateTime(milli, utc, t);
    1097     return formatLocaleDate(exec, t, LocaleDate);
     1097    return formatLocaleDate(t, LocaleDate);
    10981098#endif
    10991099}
     
    11081108    double milli = v->toNumber(exec);
    11091109    if (isnan(milli))
    1110         return jsString(exec, "Invalid Date");
     1110        return jsString("Invalid Date");
    11111111
    11121112#if PLATFORM(MAC)
    11131113    double secs = floor(milli / msPerSecond);
    1114     return jsString(exec, formatLocaleDate(exec, secs, false, true, args));
     1114    return jsString(formatLocaleDate(exec, secs, false, true, args));
    11151115#else
    11161116    UNUSED_PARAM(args);
     
    11201120    GregorianDateTime t;
    11211121    thisDateObj->msToGregorianDateTime(milli, utc, t);
    1122     return formatLocaleDate(exec, t, LocaleTime);
     1122    return formatLocaleDate(t, LocaleTime);
    11231123#endif
    11241124}
     
    11331133    double milli = v->toNumber(exec);
    11341134    if (isnan(milli))
    1135         return jsNaN(exec);
    1136 
    1137     return jsNumber(exec, milli);
     1135        return jsNaN();
     1136
     1137    return jsNumber(milli);
    11381138}
    11391139
     
    11471147    double milli = v->toNumber(exec);
    11481148    if (isnan(milli))
    1149         return jsNaN(exec);
    1150 
    1151     return jsNumber(exec, milli);
     1149        return jsNaN();
     1150
     1151    return jsNumber(milli);
    11521152}
    11531153
     
    11631163    double milli = v->toNumber(exec);
    11641164    if (isnan(milli))
    1165         return jsNaN(exec);
    1166 
    1167     GregorianDateTime t;
    1168     thisDateObj->msToGregorianDateTime(milli, utc, t);
    1169     return jsNumber(exec, 1900 + t.year);
     1165        return jsNaN();
     1166
     1167    GregorianDateTime t;
     1168    thisDateObj->msToGregorianDateTime(milli, utc, t);
     1169    return jsNumber(1900 + t.year);
    11701170}
    11711171
     
    11811181    double milli = v->toNumber(exec);
    11821182    if (isnan(milli))
    1183         return jsNaN(exec);
    1184 
    1185     GregorianDateTime t;
    1186     thisDateObj->msToGregorianDateTime(milli, utc, t);
    1187     return jsNumber(exec, 1900 + t.year);
     1183        return jsNaN();
     1184
     1185    GregorianDateTime t;
     1186    thisDateObj->msToGregorianDateTime(milli, utc, t);
     1187    return jsNumber(1900 + t.year);
    11881188}
    11891189
     
    11991199    double milli = v->toNumber(exec);
    12001200    if (isnan(milli))
    1201         return jsString(exec, "Invalid Date");
    1202 
    1203     GregorianDateTime t;
    1204     thisDateObj->msToGregorianDateTime(milli, utc, t);
    1205     return jsString(exec, formatDateUTCVariant(t) + " " + formatTime(t, utc));
     1201        return jsString("Invalid Date");
     1202
     1203    GregorianDateTime t;
     1204    thisDateObj->msToGregorianDateTime(milli, utc, t);
     1205    return jsString(formatDateUTCVariant(t) + " " + formatTime(t, utc));
    12061206}
    12071207
     
    12171217    double milli = v->toNumber(exec);
    12181218    if (isnan(milli))
    1219         return jsNaN(exec);
    1220 
    1221     GregorianDateTime t;
    1222     thisDateObj->msToGregorianDateTime(milli, utc, t);
    1223     return jsNumber(exec, t.month);
     1219        return jsNaN();
     1220
     1221    GregorianDateTime t;
     1222    thisDateObj->msToGregorianDateTime(milli, utc, t);
     1223    return jsNumber(t.month);
    12241224}
    12251225
     
    12351235    double milli = v->toNumber(exec);
    12361236    if (isnan(milli))
    1237         return jsNaN(exec);
    1238 
    1239     GregorianDateTime t;
    1240     thisDateObj->msToGregorianDateTime(milli, utc, t);
    1241     return jsNumber(exec, t.month);
     1237        return jsNaN();
     1238
     1239    GregorianDateTime t;
     1240    thisDateObj->msToGregorianDateTime(milli, utc, t);
     1241    return jsNumber(t.month);
    12421242}
    12431243
     
    12531253    double milli = v->toNumber(exec);
    12541254    if (isnan(milli))
    1255         return jsNaN(exec);
    1256 
    1257     GregorianDateTime t;
    1258     thisDateObj->msToGregorianDateTime(milli, utc, t);
    1259     return jsNumber(exec, t.monthDay);
     1255        return jsNaN();
     1256
     1257    GregorianDateTime t;
     1258    thisDateObj->msToGregorianDateTime(milli, utc, t);
     1259    return jsNumber(t.monthDay);
    12601260}
    12611261
     
    12711271    double milli = v->toNumber(exec);
    12721272    if (isnan(milli))
    1273         return jsNaN(exec);
    1274 
    1275     GregorianDateTime t;
    1276     thisDateObj->msToGregorianDateTime(milli, utc, t);
    1277     return jsNumber(exec, t.monthDay);
     1273        return jsNaN();
     1274
     1275    GregorianDateTime t;
     1276    thisDateObj->msToGregorianDateTime(milli, utc, t);
     1277    return jsNumber(t.monthDay);
    12781278}
    12791279
     
    12891289    double milli = v->toNumber(exec);
    12901290    if (isnan(milli))
    1291         return jsNaN(exec);
    1292 
    1293     GregorianDateTime t;
    1294     thisDateObj->msToGregorianDateTime(milli, utc, t);
    1295     return jsNumber(exec, t.weekDay);
     1291        return jsNaN();
     1292
     1293    GregorianDateTime t;
     1294    thisDateObj->msToGregorianDateTime(milli, utc, t);
     1295    return jsNumber(t.weekDay);
    12961296}
    12971297
     
    13071307    double milli = v->toNumber(exec);
    13081308    if (isnan(milli))
    1309         return jsNaN(exec);
    1310 
    1311     GregorianDateTime t;
    1312     thisDateObj->msToGregorianDateTime(milli, utc, t);
    1313     return jsNumber(exec, t.weekDay);
     1309        return jsNaN();
     1310
     1311    GregorianDateTime t;
     1312    thisDateObj->msToGregorianDateTime(milli, utc, t);
     1313    return jsNumber(t.weekDay);
    13141314}
    13151315
     
    13251325    double milli = v->toNumber(exec);
    13261326    if (isnan(milli))
    1327         return jsNaN(exec);
    1328 
    1329     GregorianDateTime t;
    1330     thisDateObj->msToGregorianDateTime(milli, utc, t);
    1331     return jsNumber(exec, t.hour);
     1327        return jsNaN();
     1328
     1329    GregorianDateTime t;
     1330    thisDateObj->msToGregorianDateTime(milli, utc, t);
     1331    return jsNumber(t.hour);
    13321332}
    13331333
     
    13431343    double milli = v->toNumber(exec);
    13441344    if (isnan(milli))
    1345         return jsNaN(exec);
    1346 
    1347     GregorianDateTime t;
    1348     thisDateObj->msToGregorianDateTime(milli, utc, t);
    1349     return jsNumber(exec, t.hour);
     1345        return jsNaN();
     1346
     1347    GregorianDateTime t;
     1348    thisDateObj->msToGregorianDateTime(milli, utc, t);
     1349    return jsNumber(t.hour);
    13501350}
    13511351
     
    13611361    double milli = v->toNumber(exec);
    13621362    if (isnan(milli))
    1363         return jsNaN(exec);
    1364 
    1365     GregorianDateTime t;
    1366     thisDateObj->msToGregorianDateTime(milli, utc, t);
    1367     return jsNumber(exec, t.minute);
     1363        return jsNaN();
     1364
     1365    GregorianDateTime t;
     1366    thisDateObj->msToGregorianDateTime(milli, utc, t);
     1367    return jsNumber(t.minute);
    13681368}
    13691369
     
    13791379    double milli = v->toNumber(exec);
    13801380    if (isnan(milli))
    1381         return jsNaN(exec);
    1382 
    1383     GregorianDateTime t;
    1384     thisDateObj->msToGregorianDateTime(milli, utc, t);
    1385     return jsNumber(exec, t.minute);
     1381        return jsNaN();
     1382
     1383    GregorianDateTime t;
     1384    thisDateObj->msToGregorianDateTime(milli, utc, t);
     1385    return jsNumber(t.minute);
    13861386}
    13871387
     
    13971397    double milli = v->toNumber(exec);
    13981398    if (isnan(milli))
    1399         return jsNaN(exec);
    1400 
    1401     GregorianDateTime t;
    1402     thisDateObj->msToGregorianDateTime(milli, utc, t);
    1403     return jsNumber(exec, t.second);
     1399        return jsNaN();
     1400
     1401    GregorianDateTime t;
     1402    thisDateObj->msToGregorianDateTime(milli, utc, t);
     1403    return jsNumber(t.second);
    14041404}
    14051405
     
    14151415    double milli = v->toNumber(exec);
    14161416    if (isnan(milli))
    1417         return jsNaN(exec);
    1418 
    1419     GregorianDateTime t;
    1420     thisDateObj->msToGregorianDateTime(milli, utc, t);
    1421     return jsNumber(exec, t.second);
     1417        return jsNaN();
     1418
     1419    GregorianDateTime t;
     1420    thisDateObj->msToGregorianDateTime(milli, utc, t);
     1421    return jsNumber(t.second);
    14221422}
    14231423
     
    14311431    double milli = v->toNumber(exec);
    14321432    if (isnan(milli))
    1433         return jsNaN(exec);
     1433        return jsNaN();
    14341434
    14351435    double secs = floor(milli / msPerSecond);
    14361436    double ms = milli - secs * msPerSecond;
    1437     return jsNumber(exec, ms);
     1437    return jsNumber(ms);
    14381438}
    14391439
     
    14471447    double milli = v->toNumber(exec);
    14481448    if (isnan(milli))
    1449         return jsNaN(exec);
     1449        return jsNaN();
    14501450
    14511451    double secs = floor(milli / msPerSecond);
    14521452    double ms = milli - secs * msPerSecond;
    1453     return jsNumber(exec, ms);
     1453    return jsNumber(ms);
    14541454}
    14551455
     
    14651465    double milli = v->toNumber(exec);
    14661466    if (isnan(milli))
    1467         return jsNaN(exec);
    1468 
    1469     GregorianDateTime t;
    1470     thisDateObj->msToGregorianDateTime(milli, utc, t);
    1471     return jsNumber(exec, -gmtoffset(t) / minutesPerHour);
     1467        return jsNaN();
     1468
     1469    GregorianDateTime t;
     1470    thisDateObj->msToGregorianDateTime(milli, utc, t);
     1471    return jsNumber(-gmtoffset(t) / minutesPerHour);
    14721472}
    14731473
     
    14801480
    14811481    double milli = timeClip(args[0]->toNumber(exec));
    1482     JSValue* result = jsNumber(exec, milli);
     1482    JSValue* result = jsNumber(milli);
    14831483    thisDateObj->setInternalValue(result);
    14841484    return result;
     
    14951495   
    14961496    if (args.isEmpty() || isnan(milli)) {
    1497         JSValue* result = jsNaN(exec);
     1497        JSValue* result = jsNaN();
    14981498        thisDateObj->setInternalValue(result);
    14991499        return result;
     
    15071507
    15081508    if (!fillStructuresUsingTimeArgs(exec, args, numArgsToUse, &ms, &t)) {
    1509         JSValue* result = jsNaN(exec);
     1509        JSValue* result = jsNaN();
    15101510        thisDateObj->setInternalValue(result);
    15111511        return result;
    15121512    }
    15131513   
    1514     JSValue* result = jsNumber(exec, gregorianDateTimeToMS(t, ms, inputIsUTC));
     1514    JSValue* result = jsNumber(gregorianDateTimeToMS(t, ms, inputIsUTC));
    15151515    thisDateObj->setInternalValue(result);
    15161516    return result;
     
    15241524    DateInstance* thisDateObj = static_cast<DateInstance*>(thisObj);
    15251525    if (args.isEmpty()) {
    1526         JSValue* result = jsNaN(exec);
     1526        JSValue* result = jsNaN();
    15271527        thisDateObj->setInternalValue(result);
    15281528        return result;
     
    15451545   
    15461546    if (!fillStructuresUsingDateArgs(exec, args, numArgsToUse, &ms, &t)) {
    1547         JSValue* result = jsNaN(exec);
     1547        JSValue* result = jsNaN();
    15481548        thisDateObj->setInternalValue(result);
    15491549        return result;
    15501550    }
    15511551           
    1552     JSValue* result = jsNumber(exec, gregorianDateTimeToMS(t, ms, inputIsUTC));
     1552    JSValue* result = jsNumber(gregorianDateTimeToMS(t, ms, inputIsUTC));
    15531553    thisDateObj->setInternalValue(result);
    15541554    return result;
     
    16481648    DateInstance* thisDateObj = static_cast<DateInstance*>(thisObj);     
    16491649    if (args.isEmpty()) {
    1650         JSValue* result = jsNaN(exec);
     1650        JSValue* result = jsNaN();
    16511651        thisDateObj->setInternalValue(result);
    16521652        return result;
     
    16711671    int32_t year = args[0]->toInt32(exec, ok);
    16721672    if (!ok) {
    1673         JSValue* result = jsNaN(exec);
     1673        JSValue* result = jsNaN();
    16741674        thisDateObj->setInternalValue(result);
    16751675        return result;
     
    16771677           
    16781678    t.year = (year > 99 || year < 0) ? year - 1900 : year;
    1679     JSValue* result = jsNumber(exec, gregorianDateTimeToMS(t, ms, utc));
     1679    JSValue* result = jsNumber(gregorianDateTimeToMS(t, ms, utc));
    16801680    thisDateObj->setInternalValue(result);
    16811681    return result;
     
    16931693    double milli = v->toNumber(exec);
    16941694    if (isnan(milli))
    1695         return jsNaN(exec);
     1695        return jsNaN();
    16961696
    16971697    GregorianDateTime t;
     
    16991699
    17001700    // NOTE: IE returns the full year even in getYear.
    1701     return jsNumber(exec, t.year);
     1701    return jsNumber(t.year);
    17021702}
    17031703
Note: See TracChangeset for help on using the changeset viewer.