Changeset 31937 in webkit for trunk/JavaScriptCore/kjs/date_object.cpp
- Timestamp:
- Apr 16, 2008, 2:41:23 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/date_object.cpp
r31208 r31937 328 328 DateInstance::DateInstance(JSObject *proto) 329 329 : JSWrapperObject(proto) 330 { 330 , m_cache(0) 331 { 332 } 333 334 DateInstance::~DateInstance() 335 { 336 delete m_cache; 337 } 338 339 void DateInstance::msToGregorianDateTime(double milli, bool outputIsUTC, GregorianDateTime& t) const 340 { 341 if (!m_cache) { 342 m_cache = new Cache; 343 m_cache->m_gregorianDateTimeCachedForMS = NaN; 344 m_cache->m_gregorianDateTimeUTCCachedForMS = NaN; 345 } 346 347 if (outputIsUTC) { 348 if (m_cache->m_gregorianDateTimeUTCCachedForMS != milli) { 349 ::msToGregorianDateTime(milli, true, m_cache->m_cachedGregorianDateTimeUTC); 350 m_cache->m_gregorianDateTimeUTCCachedForMS = milli; 351 } 352 t.copyFrom(m_cache->m_cachedGregorianDateTimeUTC); 353 } else { 354 if (m_cache->m_gregorianDateTimeCachedForMS != milli) { 355 ::msToGregorianDateTime(milli, false, m_cache->m_cachedGregorianDateTime); 356 m_cache->m_gregorianDateTimeCachedForMS = milli; 357 } 358 t.copyFrom(m_cache->m_cachedGregorianDateTime); 359 } 331 360 } 332 361 … … 955 984 956 985 GregorianDateTime t; 957 msToGregorianDateTime(milli, utc, t);986 thisDateObj->msToGregorianDateTime(milli, utc, t); 958 987 return jsString(formatDate(t) + " " + formatTime(t, utc)); 959 988 } … … 973 1002 974 1003 GregorianDateTime t; 975 msToGregorianDateTime(milli, utc, t);1004 thisDateObj->msToGregorianDateTime(milli, utc, t); 976 1005 return jsString(formatDateUTCVariant(t) + " " + formatTime(t, utc)); 977 1006 } … … 991 1020 992 1021 GregorianDateTime t; 993 msToGregorianDateTime(milli, utc, t);1022 thisDateObj->msToGregorianDateTime(milli, utc, t); 994 1023 return jsString(formatDate(t)); 995 1024 } … … 1009 1038 1010 1039 GregorianDateTime t; 1011 msToGregorianDateTime(milli, utc, t);1040 thisDateObj->msToGregorianDateTime(milli, utc, t); 1012 1041 return jsString(formatTime(t, utc)); 1013 1042 } … … 1033 1062 1034 1063 GregorianDateTime t; 1035 msToGregorianDateTime(milli, utc, t);1064 thisDateObj->msToGregorianDateTime(milli, utc, t); 1036 1065 return formatLocaleDate(t, LocaleDateAndTime); 1037 1066 #endif … … 1058 1087 1059 1088 GregorianDateTime t; 1060 msToGregorianDateTime(milli, utc, t);1089 thisDateObj->msToGregorianDateTime(milli, utc, t); 1061 1090 return formatLocaleDate(t, LocaleDate); 1062 1091 #endif … … 1083 1112 1084 1113 GregorianDateTime t; 1085 msToGregorianDateTime(milli, utc, t);1114 thisDateObj->msToGregorianDateTime(milli, utc, t); 1086 1115 return formatLocaleDate(t, LocaleTime); 1087 1116 #endif … … 1130 1159 1131 1160 GregorianDateTime t; 1132 msToGregorianDateTime(milli, utc, t);1161 thisDateObj->msToGregorianDateTime(milli, utc, t); 1133 1162 return jsNumber(1900 + t.year); 1134 1163 } … … 1148 1177 1149 1178 GregorianDateTime t; 1150 msToGregorianDateTime(milli, utc, t);1179 thisDateObj->msToGregorianDateTime(milli, utc, t); 1151 1180 return jsNumber(1900 + t.year); 1152 1181 } … … 1166 1195 1167 1196 GregorianDateTime t; 1168 msToGregorianDateTime(milli, utc, t);1197 thisDateObj->msToGregorianDateTime(milli, utc, t); 1169 1198 return jsString(formatDateUTCVariant(t) + " " + formatTime(t, utc)); 1170 1199 } … … 1184 1213 1185 1214 GregorianDateTime t; 1186 msToGregorianDateTime(milli, utc, t);1215 thisDateObj->msToGregorianDateTime(milli, utc, t); 1187 1216 return jsNumber(t.month); 1188 1217 } … … 1202 1231 1203 1232 GregorianDateTime t; 1204 msToGregorianDateTime(milli, utc, t);1233 thisDateObj->msToGregorianDateTime(milli, utc, t); 1205 1234 return jsNumber(t.month); 1206 1235 } … … 1220 1249 1221 1250 GregorianDateTime t; 1222 msToGregorianDateTime(milli, utc, t);1251 thisDateObj->msToGregorianDateTime(milli, utc, t); 1223 1252 return jsNumber(t.monthDay); 1224 1253 } … … 1238 1267 1239 1268 GregorianDateTime t; 1240 msToGregorianDateTime(milli, utc, t);1269 thisDateObj->msToGregorianDateTime(milli, utc, t); 1241 1270 return jsNumber(t.monthDay); 1242 1271 } … … 1256 1285 1257 1286 GregorianDateTime t; 1258 msToGregorianDateTime(milli, utc, t);1287 thisDateObj->msToGregorianDateTime(milli, utc, t); 1259 1288 return jsNumber(t.weekDay); 1260 1289 } … … 1274 1303 1275 1304 GregorianDateTime t; 1276 msToGregorianDateTime(milli, utc, t);1305 thisDateObj->msToGregorianDateTime(milli, utc, t); 1277 1306 return jsNumber(t.weekDay); 1278 1307 } … … 1292 1321 1293 1322 GregorianDateTime t; 1294 msToGregorianDateTime(milli, utc, t);1323 thisDateObj->msToGregorianDateTime(milli, utc, t); 1295 1324 return jsNumber(t.hour); 1296 1325 } … … 1310 1339 1311 1340 GregorianDateTime t; 1312 msToGregorianDateTime(milli, utc, t);1341 thisDateObj->msToGregorianDateTime(milli, utc, t); 1313 1342 return jsNumber(t.hour); 1314 1343 } … … 1328 1357 1329 1358 GregorianDateTime t; 1330 msToGregorianDateTime(milli, utc, t);1359 thisDateObj->msToGregorianDateTime(milli, utc, t); 1331 1360 return jsNumber(t.minute); 1332 1361 } … … 1346 1375 1347 1376 GregorianDateTime t; 1348 msToGregorianDateTime(milli, utc, t);1377 thisDateObj->msToGregorianDateTime(milli, utc, t); 1349 1378 return jsNumber(t.minute); 1350 1379 } … … 1364 1393 1365 1394 GregorianDateTime t; 1366 msToGregorianDateTime(milli, utc, t);1395 thisDateObj->msToGregorianDateTime(milli, utc, t); 1367 1396 return jsNumber(t.second); 1368 1397 } … … 1382 1411 1383 1412 GregorianDateTime t; 1384 msToGregorianDateTime(milli, utc, t);1413 thisDateObj->msToGregorianDateTime(milli, utc, t); 1385 1414 return jsNumber(t.second); 1386 1415 } … … 1432 1461 1433 1462 GregorianDateTime t; 1434 msToGregorianDateTime(milli, utc, t);1463 thisDateObj->msToGregorianDateTime(milli, utc, t); 1435 1464 return jsNumber(-gmtoffset(t) / minutesPerHour); 1436 1465 } … … 1468 1497 1469 1498 GregorianDateTime t; 1470 msToGregorianDateTime(milli, inputIsUTC, t);1499 thisDateObj->msToGregorianDateTime(milli, inputIsUTC, t); 1471 1500 1472 1501 if (!fillStructuresUsingTimeArgs(exec, args, numArgsToUse, &ms, &t)) { … … 1501 1530 // Based on ECMA 262 15.9.5.40 - .41 (set[UTC]FullYear) 1502 1531 // the time must be reset to +0 if it is NaN. 1503 msToGregorianDateTime(0, true, t);1532 thisDateObj->msToGregorianDateTime(0, true, t); 1504 1533 else { 1505 1534 double secs = floor(milli / msPerSecond); 1506 1535 ms = milli - secs * msPerSecond; 1507 msToGregorianDateTime(milli, inputIsUTC, t);1536 thisDateObj->msToGregorianDateTime(milli, inputIsUTC, t); 1508 1537 } 1509 1538 … … 1625 1654 // Based on ECMA 262 B.2.5 (setYear) 1626 1655 // the time must be reset to +0 if it is NaN. 1627 msToGregorianDateTime(0, true, t);1656 thisDateObj->msToGregorianDateTime(0, true, t); 1628 1657 else { 1629 1658 double secs = floor(milli / msPerSecond); 1630 1659 ms = milli - secs * msPerSecond; 1631 msToGregorianDateTime(milli, utc, t);1660 thisDateObj->msToGregorianDateTime(milli, utc, t); 1632 1661 } 1633 1662 … … 1660 1689 1661 1690 GregorianDateTime t; 1662 msToGregorianDateTime(milli, utc, t);1691 thisDateObj->msToGregorianDateTime(milli, utc, t); 1663 1692 1664 1693 // NOTE: IE returns the full year even in getYear.
Note:
See TracChangeset
for help on using the changeset viewer.