OLD | NEW |
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 var $createDate; | 5 var $createDate; |
6 | 6 |
7 // ------------------------------------------------------------------- | 7 // ------------------------------------------------------------------- |
8 | 8 |
9 (function(global, utils) { | 9 (function(global, utils) { |
10 | 10 |
11 "use strict"; | 11 "use strict"; |
12 | 12 |
13 %CheckIsBootstrapping(); | 13 %CheckIsBootstrapping(); |
14 | 14 |
15 // ------------------------------------------------------------------- | 15 // ------------------------------------------------------------------- |
16 // Imports | 16 // Imports |
17 | 17 |
18 var GlobalDate = global.Date; | 18 var GlobalDate = global.Date; |
19 var InternalArray = utils.InternalArray; | 19 var InternalArray = utils.InternalArray; |
20 | |
21 var IsFinite; | 20 var IsFinite; |
22 var MathAbs; | 21 var MathAbs; |
23 var MathFloor; | 22 var MathFloor; |
| 23 var ToNumber; |
| 24 var ToString; |
24 | 25 |
25 utils.Import(function(from) { | 26 utils.Import(function(from) { |
26 IsFinite = from.IsFinite; | 27 IsFinite = from.IsFinite; |
27 MathAbs = from.MathAbs; | 28 MathAbs = from.MathAbs; |
28 MathFloor = from.MathFloor; | 29 MathFloor = from.MathFloor; |
| 30 ToNumber = from.ToNumber; |
| 31 ToString = from.ToString; |
29 }); | 32 }); |
30 | 33 |
31 // ------------------------------------------------------------------- | 34 // ------------------------------------------------------------------- |
32 | 35 |
33 // This file contains date support implemented in JavaScript. | 36 // This file contains date support implemented in JavaScript. |
34 | 37 |
35 var timezone_cache_time = NAN; | 38 var timezone_cache_time = NAN; |
36 var timezone_cache_timezone; | 39 var timezone_cache_timezone; |
37 | 40 |
38 function LocalTimezone(t) { | 41 function LocalTimezone(t) { |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 | 165 |
163 } else { | 166 } else { |
164 // According to ECMA 262, no hint should be given for this | 167 // According to ECMA 262, no hint should be given for this |
165 // conversion. However, ToPrimitive defaults to STRING_HINT for | 168 // conversion. However, ToPrimitive defaults to STRING_HINT for |
166 // Date objects which will lose precision when the Date | 169 // Date objects which will lose precision when the Date |
167 // constructor is called with another Date object as its | 170 // constructor is called with another Date object as its |
168 // argument. We therefore use NUMBER_HINT for the conversion, | 171 // argument. We therefore use NUMBER_HINT for the conversion, |
169 // which is the default for everything else than Date objects. | 172 // which is the default for everything else than Date objects. |
170 // This makes us behave like KJS and SpiderMonkey. | 173 // This makes us behave like KJS and SpiderMonkey. |
171 var time = $toPrimitive(year, NUMBER_HINT); | 174 var time = $toPrimitive(year, NUMBER_HINT); |
172 value = IS_STRING(time) ? DateParse(time) : $toNumber(time); | 175 value = IS_STRING(time) ? DateParse(time) : ToNumber(time); |
173 } | 176 } |
174 SET_UTC_DATE_VALUE(this, value); | 177 SET_UTC_DATE_VALUE(this, value); |
175 } else { | 178 } else { |
176 year = $toNumber(year); | 179 year = ToNumber(year); |
177 month = $toNumber(month); | 180 month = ToNumber(month); |
178 date = argc > 2 ? $toNumber(date) : 1; | 181 date = argc > 2 ? ToNumber(date) : 1; |
179 hours = argc > 3 ? $toNumber(hours) : 0; | 182 hours = argc > 3 ? ToNumber(hours) : 0; |
180 minutes = argc > 4 ? $toNumber(minutes) : 0; | 183 minutes = argc > 4 ? ToNumber(minutes) : 0; |
181 seconds = argc > 5 ? $toNumber(seconds) : 0; | 184 seconds = argc > 5 ? ToNumber(seconds) : 0; |
182 ms = argc > 6 ? $toNumber(ms) : 0; | 185 ms = argc > 6 ? ToNumber(ms) : 0; |
183 year = (!NUMBER_IS_NAN(year) && | 186 year = (!NUMBER_IS_NAN(year) && |
184 0 <= TO_INTEGER(year) && | 187 0 <= TO_INTEGER(year) && |
185 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; | 188 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; |
186 var day = MakeDay(year, month, date); | 189 var day = MakeDay(year, month, date); |
187 var time = MakeTime(hours, minutes, seconds, ms); | 190 var time = MakeTime(hours, minutes, seconds, ms); |
188 value = MakeDate(day, time); | 191 value = MakeDate(day, time); |
189 SET_LOCAL_DATE_VALUE(this, value); | 192 SET_LOCAL_DATE_VALUE(this, value); |
190 } | 193 } |
191 } | 194 } |
192 | 195 |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 return DateString(date) + ' ' + TimeString(date); | 263 return DateString(date) + ' ' + TimeString(date); |
261 } | 264 } |
262 | 265 |
263 // ------------------------------------------------------------------- | 266 // ------------------------------------------------------------------- |
264 | 267 |
265 // Reused output buffer. Used when parsing date strings. | 268 // Reused output buffer. Used when parsing date strings. |
266 var parse_buffer = new InternalArray(8); | 269 var parse_buffer = new InternalArray(8); |
267 | 270 |
268 // ECMA 262 - 15.9.4.2 | 271 // ECMA 262 - 15.9.4.2 |
269 function DateParse(string) { | 272 function DateParse(string) { |
270 var arr = %DateParseString($toString(string), parse_buffer); | 273 var arr = %DateParseString(ToString(string), parse_buffer); |
271 if (IS_NULL(arr)) return NAN; | 274 if (IS_NULL(arr)) return NAN; |
272 | 275 |
273 var day = MakeDay(arr[0], arr[1], arr[2]); | 276 var day = MakeDay(arr[0], arr[1], arr[2]); |
274 var time = MakeTime(arr[3], arr[4], arr[5], arr[6]); | 277 var time = MakeTime(arr[3], arr[4], arr[5], arr[6]); |
275 var date = MakeDate(day, time); | 278 var date = MakeDate(day, time); |
276 | 279 |
277 if (IS_NULL(arr[7])) { | 280 if (IS_NULL(arr[7])) { |
278 return TimeClip(UTC(date)); | 281 return TimeClip(UTC(date)); |
279 } else { | 282 } else { |
280 return TimeClip(date - arr[7] * 1000); | 283 return TimeClip(date - arr[7] * 1000); |
281 } | 284 } |
282 } | 285 } |
283 | 286 |
284 | 287 |
285 // ECMA 262 - 15.9.4.3 | 288 // ECMA 262 - 15.9.4.3 |
286 function DateUTC(year, month, date, hours, minutes, seconds, ms) { | 289 function DateUTC(year, month, date, hours, minutes, seconds, ms) { |
287 year = $toNumber(year); | 290 year = ToNumber(year); |
288 month = $toNumber(month); | 291 month = ToNumber(month); |
289 var argc = %_ArgumentsLength(); | 292 var argc = %_ArgumentsLength(); |
290 date = argc > 2 ? $toNumber(date) : 1; | 293 date = argc > 2 ? ToNumber(date) : 1; |
291 hours = argc > 3 ? $toNumber(hours) : 0; | 294 hours = argc > 3 ? ToNumber(hours) : 0; |
292 minutes = argc > 4 ? $toNumber(minutes) : 0; | 295 minutes = argc > 4 ? ToNumber(minutes) : 0; |
293 seconds = argc > 5 ? $toNumber(seconds) : 0; | 296 seconds = argc > 5 ? ToNumber(seconds) : 0; |
294 ms = argc > 6 ? $toNumber(ms) : 0; | 297 ms = argc > 6 ? ToNumber(ms) : 0; |
295 year = (!NUMBER_IS_NAN(year) && | 298 year = (!NUMBER_IS_NAN(year) && |
296 0 <= TO_INTEGER(year) && | 299 0 <= TO_INTEGER(year) && |
297 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; | 300 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; |
298 var day = MakeDay(year, month, date); | 301 var day = MakeDay(year, month, date); |
299 var time = MakeTime(hours, minutes, seconds, ms); | 302 var time = MakeTime(hours, minutes, seconds, ms); |
300 return TimeClip(MakeDate(day, time)); | 303 return TimeClip(MakeDate(day, time)); |
301 } | 304 } |
302 | 305 |
303 | 306 |
304 // ECMA 262 - 15.9.4.4 | 307 // ECMA 262 - 15.9.4.4 |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
490 // ECMA 262 - 15.9.5.26 | 493 // ECMA 262 - 15.9.5.26 |
491 function DateGetTimezoneOffset() { | 494 function DateGetTimezoneOffset() { |
492 CHECK_DATE(this); | 495 CHECK_DATE(this); |
493 return TIMEZONE_OFFSET(this); | 496 return TIMEZONE_OFFSET(this); |
494 } | 497 } |
495 | 498 |
496 | 499 |
497 // ECMA 262 - 15.9.5.27 | 500 // ECMA 262 - 15.9.5.27 |
498 function DateSetTime(ms) { | 501 function DateSetTime(ms) { |
499 CHECK_DATE(this); | 502 CHECK_DATE(this); |
500 SET_UTC_DATE_VALUE(this, $toNumber(ms)); | 503 SET_UTC_DATE_VALUE(this, ToNumber(ms)); |
501 return UTC_DATE_VALUE(this); | 504 return UTC_DATE_VALUE(this); |
502 } | 505 } |
503 | 506 |
504 | 507 |
505 // ECMA 262 - 15.9.5.28 | 508 // ECMA 262 - 15.9.5.28 |
506 function DateSetMilliseconds(ms) { | 509 function DateSetMilliseconds(ms) { |
507 CHECK_DATE(this); | 510 CHECK_DATE(this); |
508 var t = LOCAL_DATE_VALUE(this); | 511 var t = LOCAL_DATE_VALUE(this); |
509 ms = $toNumber(ms); | 512 ms = ToNumber(ms); |
510 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms); | 513 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms); |
511 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 514 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
512 } | 515 } |
513 | 516 |
514 | 517 |
515 // ECMA 262 - 15.9.5.29 | 518 // ECMA 262 - 15.9.5.29 |
516 function DateSetUTCMilliseconds(ms) { | 519 function DateSetUTCMilliseconds(ms) { |
517 CHECK_DATE(this); | 520 CHECK_DATE(this); |
518 var t = UTC_DATE_VALUE(this); | 521 var t = UTC_DATE_VALUE(this); |
519 ms = $toNumber(ms); | 522 ms = ToNumber(ms); |
520 var time = MakeTime(UTC_HOUR(this), | 523 var time = MakeTime(UTC_HOUR(this), |
521 UTC_MIN(this), | 524 UTC_MIN(this), |
522 UTC_SEC(this), | 525 UTC_SEC(this), |
523 ms); | 526 ms); |
524 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 527 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
525 } | 528 } |
526 | 529 |
527 | 530 |
528 // ECMA 262 - 15.9.5.30 | 531 // ECMA 262 - 15.9.5.30 |
529 function DateSetSeconds(sec, ms) { | 532 function DateSetSeconds(sec, ms) { |
530 CHECK_DATE(this); | 533 CHECK_DATE(this); |
531 var t = LOCAL_DATE_VALUE(this); | 534 var t = LOCAL_DATE_VALUE(this); |
532 sec = $toNumber(sec); | 535 sec = ToNumber(sec); |
533 ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : $toNumber(ms); | 536 ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : ToNumber(ms); |
534 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), sec, ms); | 537 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), sec, ms); |
535 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 538 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
536 } | 539 } |
537 | 540 |
538 | 541 |
539 // ECMA 262 - 15.9.5.31 | 542 // ECMA 262 - 15.9.5.31 |
540 function DateSetUTCSeconds(sec, ms) { | 543 function DateSetUTCSeconds(sec, ms) { |
541 CHECK_DATE(this); | 544 CHECK_DATE(this); |
542 var t = UTC_DATE_VALUE(this); | 545 var t = UTC_DATE_VALUE(this); |
543 sec = $toNumber(sec); | 546 sec = ToNumber(sec); |
544 ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : $toNumber(ms); | 547 ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : ToNumber(ms); |
545 var time = MakeTime(UTC_HOUR(this), UTC_MIN(this), sec, ms); | 548 var time = MakeTime(UTC_HOUR(this), UTC_MIN(this), sec, ms); |
546 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 549 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
547 } | 550 } |
548 | 551 |
549 | 552 |
550 // ECMA 262 - 15.9.5.33 | 553 // ECMA 262 - 15.9.5.33 |
551 function DateSetMinutes(min, sec, ms) { | 554 function DateSetMinutes(min, sec, ms) { |
552 CHECK_DATE(this); | 555 CHECK_DATE(this); |
553 var t = LOCAL_DATE_VALUE(this); | 556 var t = LOCAL_DATE_VALUE(this); |
554 min = $toNumber(min); | 557 min = ToNumber(min); |
555 var argc = %_ArgumentsLength(); | 558 var argc = %_ArgumentsLength(); |
556 sec = argc < 2 ? LOCAL_SEC(this) : $toNumber(sec); | 559 sec = argc < 2 ? LOCAL_SEC(this) : ToNumber(sec); |
557 ms = argc < 3 ? LOCAL_MS(this) : $toNumber(ms); | 560 ms = argc < 3 ? LOCAL_MS(this) : ToNumber(ms); |
558 var time = MakeTime(LOCAL_HOUR(this), min, sec, ms); | 561 var time = MakeTime(LOCAL_HOUR(this), min, sec, ms); |
559 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 562 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
560 } | 563 } |
561 | 564 |
562 | 565 |
563 // ECMA 262 - 15.9.5.34 | 566 // ECMA 262 - 15.9.5.34 |
564 function DateSetUTCMinutes(min, sec, ms) { | 567 function DateSetUTCMinutes(min, sec, ms) { |
565 CHECK_DATE(this); | 568 CHECK_DATE(this); |
566 var t = UTC_DATE_VALUE(this); | 569 var t = UTC_DATE_VALUE(this); |
567 min = $toNumber(min); | 570 min = ToNumber(min); |
568 var argc = %_ArgumentsLength(); | 571 var argc = %_ArgumentsLength(); |
569 sec = argc < 2 ? UTC_SEC(this) : $toNumber(sec); | 572 sec = argc < 2 ? UTC_SEC(this) : ToNumber(sec); |
570 ms = argc < 3 ? UTC_MS(this) : $toNumber(ms); | 573 ms = argc < 3 ? UTC_MS(this) : ToNumber(ms); |
571 var time = MakeTime(UTC_HOUR(this), min, sec, ms); | 574 var time = MakeTime(UTC_HOUR(this), min, sec, ms); |
572 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 575 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
573 } | 576 } |
574 | 577 |
575 | 578 |
576 // ECMA 262 - 15.9.5.35 | 579 // ECMA 262 - 15.9.5.35 |
577 function DateSetHours(hour, min, sec, ms) { | 580 function DateSetHours(hour, min, sec, ms) { |
578 CHECK_DATE(this); | 581 CHECK_DATE(this); |
579 var t = LOCAL_DATE_VALUE(this); | 582 var t = LOCAL_DATE_VALUE(this); |
580 hour = $toNumber(hour); | 583 hour = ToNumber(hour); |
581 var argc = %_ArgumentsLength(); | 584 var argc = %_ArgumentsLength(); |
582 min = argc < 2 ? LOCAL_MIN(this) : $toNumber(min); | 585 min = argc < 2 ? LOCAL_MIN(this) : ToNumber(min); |
583 sec = argc < 3 ? LOCAL_SEC(this) : $toNumber(sec); | 586 sec = argc < 3 ? LOCAL_SEC(this) : ToNumber(sec); |
584 ms = argc < 4 ? LOCAL_MS(this) : $toNumber(ms); | 587 ms = argc < 4 ? LOCAL_MS(this) : ToNumber(ms); |
585 var time = MakeTime(hour, min, sec, ms); | 588 var time = MakeTime(hour, min, sec, ms); |
586 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 589 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
587 } | 590 } |
588 | 591 |
589 | 592 |
590 // ECMA 262 - 15.9.5.34 | 593 // ECMA 262 - 15.9.5.34 |
591 function DateSetUTCHours(hour, min, sec, ms) { | 594 function DateSetUTCHours(hour, min, sec, ms) { |
592 CHECK_DATE(this); | 595 CHECK_DATE(this); |
593 var t = UTC_DATE_VALUE(this); | 596 var t = UTC_DATE_VALUE(this); |
594 hour = $toNumber(hour); | 597 hour = ToNumber(hour); |
595 var argc = %_ArgumentsLength(); | 598 var argc = %_ArgumentsLength(); |
596 min = argc < 2 ? UTC_MIN(this) : $toNumber(min); | 599 min = argc < 2 ? UTC_MIN(this) : ToNumber(min); |
597 sec = argc < 3 ? UTC_SEC(this) : $toNumber(sec); | 600 sec = argc < 3 ? UTC_SEC(this) : ToNumber(sec); |
598 ms = argc < 4 ? UTC_MS(this) : $toNumber(ms); | 601 ms = argc < 4 ? UTC_MS(this) : ToNumber(ms); |
599 var time = MakeTime(hour, min, sec, ms); | 602 var time = MakeTime(hour, min, sec, ms); |
600 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 603 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
601 } | 604 } |
602 | 605 |
603 | 606 |
604 // ECMA 262 - 15.9.5.36 | 607 // ECMA 262 - 15.9.5.36 |
605 function DateSetDate(date) { | 608 function DateSetDate(date) { |
606 CHECK_DATE(this); | 609 CHECK_DATE(this); |
607 var t = LOCAL_DATE_VALUE(this); | 610 var t = LOCAL_DATE_VALUE(this); |
608 date = $toNumber(date); | 611 date = ToNumber(date); |
609 var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date); | 612 var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date); |
610 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); | 613 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); |
611 } | 614 } |
612 | 615 |
613 | 616 |
614 // ECMA 262 - 15.9.5.37 | 617 // ECMA 262 - 15.9.5.37 |
615 function DateSetUTCDate(date) { | 618 function DateSetUTCDate(date) { |
616 CHECK_DATE(this); | 619 CHECK_DATE(this); |
617 var t = UTC_DATE_VALUE(this); | 620 var t = UTC_DATE_VALUE(this); |
618 date = $toNumber(date); | 621 date = ToNumber(date); |
619 var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date); | 622 var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date); |
620 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); | 623 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); |
621 } | 624 } |
622 | 625 |
623 | 626 |
624 // ECMA 262 - 15.9.5.38 | 627 // ECMA 262 - 15.9.5.38 |
625 function DateSetMonth(month, date) { | 628 function DateSetMonth(month, date) { |
626 CHECK_DATE(this); | 629 CHECK_DATE(this); |
627 var t = LOCAL_DATE_VALUE(this); | 630 var t = LOCAL_DATE_VALUE(this); |
628 month = $toNumber(month); | 631 month = ToNumber(month); |
629 date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : $toNumber(date); | 632 date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : ToNumber(date); |
630 var day = MakeDay(LOCAL_YEAR(this), month, date); | 633 var day = MakeDay(LOCAL_YEAR(this), month, date); |
631 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); | 634 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); |
632 } | 635 } |
633 | 636 |
634 | 637 |
635 // ECMA 262 - 15.9.5.39 | 638 // ECMA 262 - 15.9.5.39 |
636 function DateSetUTCMonth(month, date) { | 639 function DateSetUTCMonth(month, date) { |
637 CHECK_DATE(this); | 640 CHECK_DATE(this); |
638 var t = UTC_DATE_VALUE(this); | 641 var t = UTC_DATE_VALUE(this); |
639 month = $toNumber(month); | 642 month = ToNumber(month); |
640 date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : $toNumber(date); | 643 date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : ToNumber(date); |
641 var day = MakeDay(UTC_YEAR(this), month, date); | 644 var day = MakeDay(UTC_YEAR(this), month, date); |
642 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); | 645 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); |
643 } | 646 } |
644 | 647 |
645 | 648 |
646 // ECMA 262 - 15.9.5.40 | 649 // ECMA 262 - 15.9.5.40 |
647 function DateSetFullYear(year, month, date) { | 650 function DateSetFullYear(year, month, date) { |
648 CHECK_DATE(this); | 651 CHECK_DATE(this); |
649 var t = LOCAL_DATE_VALUE(this); | 652 var t = LOCAL_DATE_VALUE(this); |
650 year = $toNumber(year); | 653 year = ToNumber(year); |
651 var argc = %_ArgumentsLength(); | 654 var argc = %_ArgumentsLength(); |
652 var time ; | 655 var time ; |
653 if (NUMBER_IS_NAN(t)) { | 656 if (NUMBER_IS_NAN(t)) { |
654 month = argc < 2 ? 0 : $toNumber(month); | 657 month = argc < 2 ? 0 : ToNumber(month); |
655 date = argc < 3 ? 1 : $toNumber(date); | 658 date = argc < 3 ? 1 : ToNumber(date); |
656 time = 0; | 659 time = 0; |
657 } else { | 660 } else { |
658 month = argc < 2 ? LOCAL_MONTH(this) : $toNumber(month); | 661 month = argc < 2 ? LOCAL_MONTH(this) : ToNumber(month); |
659 date = argc < 3 ? LOCAL_DAY(this) : $toNumber(date); | 662 date = argc < 3 ? LOCAL_DAY(this) : ToNumber(date); |
660 time = LOCAL_TIME_IN_DAY(this); | 663 time = LOCAL_TIME_IN_DAY(this); |
661 } | 664 } |
662 var day = MakeDay(year, month, date); | 665 var day = MakeDay(year, month, date); |
663 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time)); | 666 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time)); |
664 } | 667 } |
665 | 668 |
666 | 669 |
667 // ECMA 262 - 15.9.5.41 | 670 // ECMA 262 - 15.9.5.41 |
668 function DateSetUTCFullYear(year, month, date) { | 671 function DateSetUTCFullYear(year, month, date) { |
669 CHECK_DATE(this); | 672 CHECK_DATE(this); |
670 var t = UTC_DATE_VALUE(this); | 673 var t = UTC_DATE_VALUE(this); |
671 year = $toNumber(year); | 674 year = ToNumber(year); |
672 var argc = %_ArgumentsLength(); | 675 var argc = %_ArgumentsLength(); |
673 var time ; | 676 var time ; |
674 if (NUMBER_IS_NAN(t)) { | 677 if (NUMBER_IS_NAN(t)) { |
675 month = argc < 2 ? 0 : $toNumber(month); | 678 month = argc < 2 ? 0 : ToNumber(month); |
676 date = argc < 3 ? 1 : $toNumber(date); | 679 date = argc < 3 ? 1 : ToNumber(date); |
677 time = 0; | 680 time = 0; |
678 } else { | 681 } else { |
679 month = argc < 2 ? UTC_MONTH(this) : $toNumber(month); | 682 month = argc < 2 ? UTC_MONTH(this) : ToNumber(month); |
680 date = argc < 3 ? UTC_DAY(this) : $toNumber(date); | 683 date = argc < 3 ? UTC_DAY(this) : ToNumber(date); |
681 time = UTC_TIME_IN_DAY(this); | 684 time = UTC_TIME_IN_DAY(this); |
682 } | 685 } |
683 var day = MakeDay(year, month, date); | 686 var day = MakeDay(year, month, date); |
684 return SET_UTC_DATE_VALUE(this, MakeDate(day, time)); | 687 return SET_UTC_DATE_VALUE(this, MakeDate(day, time)); |
685 } | 688 } |
686 | 689 |
687 | 690 |
688 // ECMA 262 - 15.9.5.42 | 691 // ECMA 262 - 15.9.5.42 |
689 function DateToUTCString() { | 692 function DateToUTCString() { |
690 CHECK_DATE(this); | 693 CHECK_DATE(this); |
(...skipping 11 matching lines...) Expand all Loading... |
702 // ECMA 262 - B.2.4 | 705 // ECMA 262 - B.2.4 |
703 function DateGetYear() { | 706 function DateGetYear() { |
704 CHECK_DATE(this); | 707 CHECK_DATE(this); |
705 return LOCAL_YEAR(this) - 1900; | 708 return LOCAL_YEAR(this) - 1900; |
706 } | 709 } |
707 | 710 |
708 | 711 |
709 // ECMA 262 - B.2.5 | 712 // ECMA 262 - B.2.5 |
710 function DateSetYear(year) { | 713 function DateSetYear(year) { |
711 CHECK_DATE(this); | 714 CHECK_DATE(this); |
712 year = $toNumber(year); | 715 year = ToNumber(year); |
713 if (NUMBER_IS_NAN(year)) return SET_UTC_DATE_VALUE(this, NAN); | 716 if (NUMBER_IS_NAN(year)) return SET_UTC_DATE_VALUE(this, NAN); |
714 year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99) | 717 year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99) |
715 ? 1900 + TO_INTEGER(year) : year; | 718 ? 1900 + TO_INTEGER(year) : year; |
716 var t = LOCAL_DATE_VALUE(this); | 719 var t = LOCAL_DATE_VALUE(this); |
717 var month, date, time; | 720 var month, date, time; |
718 if (NUMBER_IS_NAN(t)) { | 721 if (NUMBER_IS_NAN(t)) { |
719 month = 0; | 722 month = 0; |
720 date = 1; | 723 date = 1; |
721 time = 0; | 724 time = 0; |
722 } else { | 725 } else { |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
878 "setYear", DateSetYear, | 881 "setYear", DateSetYear, |
879 "toISOString", DateToISOString, | 882 "toISOString", DateToISOString, |
880 "toJSON", DateToJSON | 883 "toJSON", DateToJSON |
881 ]); | 884 ]); |
882 | 885 |
883 utils.ExportToRuntime(function(to) { | 886 utils.ExportToRuntime(function(to) { |
884 to.CreateDate = CreateDate; | 887 to.CreateDate = CreateDate; |
885 }); | 888 }); |
886 | 889 |
887 }) | 890 }) |
OLD | NEW |