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 GlobalObject = global.Object; | 19 var GlobalObject = global.Object; |
20 var InternalArray = utils.InternalArray; | 20 var InternalArray = utils.InternalArray; |
21 var IsFinite; | 21 var IsFinite; |
22 var MathAbs; | 22 var MathAbs; |
23 var MathFloor; | 23 var MathFloor; |
24 var ToNumber; | |
25 | 24 |
26 utils.Import(function(from) { | 25 utils.Import(function(from) { |
27 IsFinite = from.IsFinite; | 26 IsFinite = from.IsFinite; |
28 MathAbs = from.MathAbs; | 27 MathAbs = from.MathAbs; |
29 MathFloor = from.MathFloor; | 28 MathFloor = from.MathFloor; |
30 ToNumber = from.ToNumber; | |
31 }); | 29 }); |
32 | 30 |
33 // ------------------------------------------------------------------- | 31 // ------------------------------------------------------------------- |
34 | 32 |
35 // This file contains date support implemented in JavaScript. | 33 // This file contains date support implemented in JavaScript. |
36 | 34 |
37 var timezone_cache_time = NAN; | 35 var timezone_cache_time = NAN; |
38 var timezone_cache_timezone; | 36 var timezone_cache_timezone; |
39 | 37 |
40 function LocalTimezone(t) { | 38 function LocalTimezone(t) { |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 cache.time = value; | 159 cache.time = value; |
162 cache.string = year; | 160 cache.string = year; |
163 } | 161 } |
164 } | 162 } |
165 | 163 |
166 } else if (IS_DATE(year)) { | 164 } else if (IS_DATE(year)) { |
167 value = UTC_DATE_VALUE(year); | 165 value = UTC_DATE_VALUE(year); |
168 | 166 |
169 } else { | 167 } else { |
170 var time = TO_PRIMITIVE(year); | 168 var time = TO_PRIMITIVE(year); |
171 value = IS_STRING(time) ? DateParse(time) : ToNumber(time); | 169 value = IS_STRING(time) ? DateParse(time) : TO_NUMBER(time); |
172 } | 170 } |
173 SET_UTC_DATE_VALUE(this, value); | 171 SET_UTC_DATE_VALUE(this, value); |
174 } else { | 172 } else { |
175 year = ToNumber(year); | 173 year = TO_NUMBER(year); |
176 month = ToNumber(month); | 174 month = TO_NUMBER(month); |
177 date = argc > 2 ? ToNumber(date) : 1; | 175 date = argc > 2 ? TO_NUMBER(date) : 1; |
178 hours = argc > 3 ? ToNumber(hours) : 0; | 176 hours = argc > 3 ? TO_NUMBER(hours) : 0; |
179 minutes = argc > 4 ? ToNumber(minutes) : 0; | 177 minutes = argc > 4 ? TO_NUMBER(minutes) : 0; |
180 seconds = argc > 5 ? ToNumber(seconds) : 0; | 178 seconds = argc > 5 ? TO_NUMBER(seconds) : 0; |
181 ms = argc > 6 ? ToNumber(ms) : 0; | 179 ms = argc > 6 ? TO_NUMBER(ms) : 0; |
182 year = (!NUMBER_IS_NAN(year) && | 180 year = (!NUMBER_IS_NAN(year) && |
183 0 <= TO_INTEGER(year) && | 181 0 <= TO_INTEGER(year) && |
184 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; | 182 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; |
185 var day = MakeDay(year, month, date); | 183 var day = MakeDay(year, month, date); |
186 var time = MakeTime(hours, minutes, seconds, ms); | 184 var time = MakeTime(hours, minutes, seconds, ms); |
187 value = MakeDate(day, time); | 185 value = MakeDate(day, time); |
188 SET_LOCAL_DATE_VALUE(this, value); | 186 SET_LOCAL_DATE_VALUE(this, value); |
189 } | 187 } |
190 } | 188 } |
191 | 189 |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 if (IS_NULL(arr[7])) { | 274 if (IS_NULL(arr[7])) { |
277 return TimeClip(UTC(date)); | 275 return TimeClip(UTC(date)); |
278 } else { | 276 } else { |
279 return TimeClip(date - arr[7] * 1000); | 277 return TimeClip(date - arr[7] * 1000); |
280 } | 278 } |
281 } | 279 } |
282 | 280 |
283 | 281 |
284 // ECMA 262 - 15.9.4.3 | 282 // ECMA 262 - 15.9.4.3 |
285 function DateUTC(year, month, date, hours, minutes, seconds, ms) { | 283 function DateUTC(year, month, date, hours, minutes, seconds, ms) { |
286 year = ToNumber(year); | 284 year = TO_NUMBER(year); |
287 month = ToNumber(month); | 285 month = TO_NUMBER(month); |
288 var argc = %_ArgumentsLength(); | 286 var argc = %_ArgumentsLength(); |
289 date = argc > 2 ? ToNumber(date) : 1; | 287 date = argc > 2 ? TO_NUMBER(date) : 1; |
290 hours = argc > 3 ? ToNumber(hours) : 0; | 288 hours = argc > 3 ? TO_NUMBER(hours) : 0; |
291 minutes = argc > 4 ? ToNumber(minutes) : 0; | 289 minutes = argc > 4 ? TO_NUMBER(minutes) : 0; |
292 seconds = argc > 5 ? ToNumber(seconds) : 0; | 290 seconds = argc > 5 ? TO_NUMBER(seconds) : 0; |
293 ms = argc > 6 ? ToNumber(ms) : 0; | 291 ms = argc > 6 ? TO_NUMBER(ms) : 0; |
294 year = (!NUMBER_IS_NAN(year) && | 292 year = (!NUMBER_IS_NAN(year) && |
295 0 <= TO_INTEGER(year) && | 293 0 <= TO_INTEGER(year) && |
296 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; | 294 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; |
297 var day = MakeDay(year, month, date); | 295 var day = MakeDay(year, month, date); |
298 var time = MakeTime(hours, minutes, seconds, ms); | 296 var time = MakeTime(hours, minutes, seconds, ms); |
299 return TimeClip(MakeDate(day, time)); | 297 return TimeClip(MakeDate(day, time)); |
300 } | 298 } |
301 | 299 |
302 | 300 |
303 // ECMA 262 - 15.9.4.4 | 301 // ECMA 262 - 15.9.4.4 |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
489 // ECMA 262 - 15.9.5.26 | 487 // ECMA 262 - 15.9.5.26 |
490 function DateGetTimezoneOffset() { | 488 function DateGetTimezoneOffset() { |
491 CHECK_DATE(this); | 489 CHECK_DATE(this); |
492 return TIMEZONE_OFFSET(this); | 490 return TIMEZONE_OFFSET(this); |
493 } | 491 } |
494 | 492 |
495 | 493 |
496 // ECMA 262 - 15.9.5.27 | 494 // ECMA 262 - 15.9.5.27 |
497 function DateSetTime(ms) { | 495 function DateSetTime(ms) { |
498 CHECK_DATE(this); | 496 CHECK_DATE(this); |
499 SET_UTC_DATE_VALUE(this, ToNumber(ms)); | 497 SET_UTC_DATE_VALUE(this, TO_NUMBER(ms)); |
500 return UTC_DATE_VALUE(this); | 498 return UTC_DATE_VALUE(this); |
501 } | 499 } |
502 | 500 |
503 | 501 |
504 // ECMA 262 - 15.9.5.28 | 502 // ECMA 262 - 15.9.5.28 |
505 function DateSetMilliseconds(ms) { | 503 function DateSetMilliseconds(ms) { |
506 CHECK_DATE(this); | 504 CHECK_DATE(this); |
507 var t = LOCAL_DATE_VALUE(this); | 505 var t = LOCAL_DATE_VALUE(this); |
508 ms = ToNumber(ms); | 506 ms = TO_NUMBER(ms); |
509 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms); | 507 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms); |
510 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 508 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
511 } | 509 } |
512 | 510 |
513 | 511 |
514 // ECMA 262 - 15.9.5.29 | 512 // ECMA 262 - 15.9.5.29 |
515 function DateSetUTCMilliseconds(ms) { | 513 function DateSetUTCMilliseconds(ms) { |
516 CHECK_DATE(this); | 514 CHECK_DATE(this); |
517 var t = UTC_DATE_VALUE(this); | 515 var t = UTC_DATE_VALUE(this); |
518 ms = ToNumber(ms); | 516 ms = TO_NUMBER(ms); |
519 var time = MakeTime(UTC_HOUR(this), | 517 var time = MakeTime(UTC_HOUR(this), |
520 UTC_MIN(this), | 518 UTC_MIN(this), |
521 UTC_SEC(this), | 519 UTC_SEC(this), |
522 ms); | 520 ms); |
523 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 521 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
524 } | 522 } |
525 | 523 |
526 | 524 |
527 // ECMA 262 - 15.9.5.30 | 525 // ECMA 262 - 15.9.5.30 |
528 function DateSetSeconds(sec, ms) { | 526 function DateSetSeconds(sec, ms) { |
529 CHECK_DATE(this); | 527 CHECK_DATE(this); |
530 var t = LOCAL_DATE_VALUE(this); | 528 var t = LOCAL_DATE_VALUE(this); |
531 sec = ToNumber(sec); | 529 sec = TO_NUMBER(sec); |
532 ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : ToNumber(ms); | 530 ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : TO_NUMBER(ms); |
533 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), sec, ms); | 531 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), sec, ms); |
534 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 532 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
535 } | 533 } |
536 | 534 |
537 | 535 |
538 // ECMA 262 - 15.9.5.31 | 536 // ECMA 262 - 15.9.5.31 |
539 function DateSetUTCSeconds(sec, ms) { | 537 function DateSetUTCSeconds(sec, ms) { |
540 CHECK_DATE(this); | 538 CHECK_DATE(this); |
541 var t = UTC_DATE_VALUE(this); | 539 var t = UTC_DATE_VALUE(this); |
542 sec = ToNumber(sec); | 540 sec = TO_NUMBER(sec); |
543 ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : ToNumber(ms); | 541 ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : TO_NUMBER(ms); |
544 var time = MakeTime(UTC_HOUR(this), UTC_MIN(this), sec, ms); | 542 var time = MakeTime(UTC_HOUR(this), UTC_MIN(this), sec, ms); |
545 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 543 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
546 } | 544 } |
547 | 545 |
548 | 546 |
549 // ECMA 262 - 15.9.5.33 | 547 // ECMA 262 - 15.9.5.33 |
550 function DateSetMinutes(min, sec, ms) { | 548 function DateSetMinutes(min, sec, ms) { |
551 CHECK_DATE(this); | 549 CHECK_DATE(this); |
552 var t = LOCAL_DATE_VALUE(this); | 550 var t = LOCAL_DATE_VALUE(this); |
553 min = ToNumber(min); | 551 min = TO_NUMBER(min); |
554 var argc = %_ArgumentsLength(); | 552 var argc = %_ArgumentsLength(); |
555 sec = argc < 2 ? LOCAL_SEC(this) : ToNumber(sec); | 553 sec = argc < 2 ? LOCAL_SEC(this) : TO_NUMBER(sec); |
556 ms = argc < 3 ? LOCAL_MS(this) : ToNumber(ms); | 554 ms = argc < 3 ? LOCAL_MS(this) : TO_NUMBER(ms); |
557 var time = MakeTime(LOCAL_HOUR(this), min, sec, ms); | 555 var time = MakeTime(LOCAL_HOUR(this), min, sec, ms); |
558 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 556 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
559 } | 557 } |
560 | 558 |
561 | 559 |
562 // ECMA 262 - 15.9.5.34 | 560 // ECMA 262 - 15.9.5.34 |
563 function DateSetUTCMinutes(min, sec, ms) { | 561 function DateSetUTCMinutes(min, sec, ms) { |
564 CHECK_DATE(this); | 562 CHECK_DATE(this); |
565 var t = UTC_DATE_VALUE(this); | 563 var t = UTC_DATE_VALUE(this); |
566 min = ToNumber(min); | 564 min = TO_NUMBER(min); |
567 var argc = %_ArgumentsLength(); | 565 var argc = %_ArgumentsLength(); |
568 sec = argc < 2 ? UTC_SEC(this) : ToNumber(sec); | 566 sec = argc < 2 ? UTC_SEC(this) : TO_NUMBER(sec); |
569 ms = argc < 3 ? UTC_MS(this) : ToNumber(ms); | 567 ms = argc < 3 ? UTC_MS(this) : TO_NUMBER(ms); |
570 var time = MakeTime(UTC_HOUR(this), min, sec, ms); | 568 var time = MakeTime(UTC_HOUR(this), min, sec, ms); |
571 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 569 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
572 } | 570 } |
573 | 571 |
574 | 572 |
575 // ECMA 262 - 15.9.5.35 | 573 // ECMA 262 - 15.9.5.35 |
576 function DateSetHours(hour, min, sec, ms) { | 574 function DateSetHours(hour, min, sec, ms) { |
577 CHECK_DATE(this); | 575 CHECK_DATE(this); |
578 var t = LOCAL_DATE_VALUE(this); | 576 var t = LOCAL_DATE_VALUE(this); |
579 hour = ToNumber(hour); | 577 hour = TO_NUMBER(hour); |
580 var argc = %_ArgumentsLength(); | 578 var argc = %_ArgumentsLength(); |
581 min = argc < 2 ? LOCAL_MIN(this) : ToNumber(min); | 579 min = argc < 2 ? LOCAL_MIN(this) : TO_NUMBER(min); |
582 sec = argc < 3 ? LOCAL_SEC(this) : ToNumber(sec); | 580 sec = argc < 3 ? LOCAL_SEC(this) : TO_NUMBER(sec); |
583 ms = argc < 4 ? LOCAL_MS(this) : ToNumber(ms); | 581 ms = argc < 4 ? LOCAL_MS(this) : TO_NUMBER(ms); |
584 var time = MakeTime(hour, min, sec, ms); | 582 var time = MakeTime(hour, min, sec, ms); |
585 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 583 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
586 } | 584 } |
587 | 585 |
588 | 586 |
589 // ECMA 262 - 15.9.5.34 | 587 // ECMA 262 - 15.9.5.34 |
590 function DateSetUTCHours(hour, min, sec, ms) { | 588 function DateSetUTCHours(hour, min, sec, ms) { |
591 CHECK_DATE(this); | 589 CHECK_DATE(this); |
592 var t = UTC_DATE_VALUE(this); | 590 var t = UTC_DATE_VALUE(this); |
593 hour = ToNumber(hour); | 591 hour = TO_NUMBER(hour); |
594 var argc = %_ArgumentsLength(); | 592 var argc = %_ArgumentsLength(); |
595 min = argc < 2 ? UTC_MIN(this) : ToNumber(min); | 593 min = argc < 2 ? UTC_MIN(this) : TO_NUMBER(min); |
596 sec = argc < 3 ? UTC_SEC(this) : ToNumber(sec); | 594 sec = argc < 3 ? UTC_SEC(this) : TO_NUMBER(sec); |
597 ms = argc < 4 ? UTC_MS(this) : ToNumber(ms); | 595 ms = argc < 4 ? UTC_MS(this) : TO_NUMBER(ms); |
598 var time = MakeTime(hour, min, sec, ms); | 596 var time = MakeTime(hour, min, sec, ms); |
599 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 597 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
600 } | 598 } |
601 | 599 |
602 | 600 |
603 // ECMA 262 - 15.9.5.36 | 601 // ECMA 262 - 15.9.5.36 |
604 function DateSetDate(date) { | 602 function DateSetDate(date) { |
605 CHECK_DATE(this); | 603 CHECK_DATE(this); |
606 var t = LOCAL_DATE_VALUE(this); | 604 var t = LOCAL_DATE_VALUE(this); |
607 date = ToNumber(date); | 605 date = TO_NUMBER(date); |
608 var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date); | 606 var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date); |
609 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); | 607 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); |
610 } | 608 } |
611 | 609 |
612 | 610 |
613 // ECMA 262 - 15.9.5.37 | 611 // ECMA 262 - 15.9.5.37 |
614 function DateSetUTCDate(date) { | 612 function DateSetUTCDate(date) { |
615 CHECK_DATE(this); | 613 CHECK_DATE(this); |
616 var t = UTC_DATE_VALUE(this); | 614 var t = UTC_DATE_VALUE(this); |
617 date = ToNumber(date); | 615 date = TO_NUMBER(date); |
618 var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date); | 616 var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date); |
619 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); | 617 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); |
620 } | 618 } |
621 | 619 |
622 | 620 |
623 // ECMA 262 - 15.9.5.38 | 621 // ECMA 262 - 15.9.5.38 |
624 function DateSetMonth(month, date) { | 622 function DateSetMonth(month, date) { |
625 CHECK_DATE(this); | 623 CHECK_DATE(this); |
626 var t = LOCAL_DATE_VALUE(this); | 624 var t = LOCAL_DATE_VALUE(this); |
627 month = ToNumber(month); | 625 month = TO_NUMBER(month); |
628 date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : ToNumber(date); | 626 date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : TO_NUMBER(date); |
629 var day = MakeDay(LOCAL_YEAR(this), month, date); | 627 var day = MakeDay(LOCAL_YEAR(this), month, date); |
630 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); | 628 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); |
631 } | 629 } |
632 | 630 |
633 | 631 |
634 // ECMA 262 - 15.9.5.39 | 632 // ECMA 262 - 15.9.5.39 |
635 function DateSetUTCMonth(month, date) { | 633 function DateSetUTCMonth(month, date) { |
636 CHECK_DATE(this); | 634 CHECK_DATE(this); |
637 var t = UTC_DATE_VALUE(this); | 635 var t = UTC_DATE_VALUE(this); |
638 month = ToNumber(month); | 636 month = TO_NUMBER(month); |
639 date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : ToNumber(date); | 637 date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : TO_NUMBER(date); |
640 var day = MakeDay(UTC_YEAR(this), month, date); | 638 var day = MakeDay(UTC_YEAR(this), month, date); |
641 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); | 639 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); |
642 } | 640 } |
643 | 641 |
644 | 642 |
645 // ECMA 262 - 15.9.5.40 | 643 // ECMA 262 - 15.9.5.40 |
646 function DateSetFullYear(year, month, date) { | 644 function DateSetFullYear(year, month, date) { |
647 CHECK_DATE(this); | 645 CHECK_DATE(this); |
648 var t = LOCAL_DATE_VALUE(this); | 646 var t = LOCAL_DATE_VALUE(this); |
649 year = ToNumber(year); | 647 year = TO_NUMBER(year); |
650 var argc = %_ArgumentsLength(); | 648 var argc = %_ArgumentsLength(); |
651 var time ; | 649 var time ; |
652 if (NUMBER_IS_NAN(t)) { | 650 if (NUMBER_IS_NAN(t)) { |
653 month = argc < 2 ? 0 : ToNumber(month); | 651 month = argc < 2 ? 0 : TO_NUMBER(month); |
654 date = argc < 3 ? 1 : ToNumber(date); | 652 date = argc < 3 ? 1 : TO_NUMBER(date); |
655 time = 0; | 653 time = 0; |
656 } else { | 654 } else { |
657 month = argc < 2 ? LOCAL_MONTH(this) : ToNumber(month); | 655 month = argc < 2 ? LOCAL_MONTH(this) : TO_NUMBER(month); |
658 date = argc < 3 ? LOCAL_DAY(this) : ToNumber(date); | 656 date = argc < 3 ? LOCAL_DAY(this) : TO_NUMBER(date); |
659 time = LOCAL_TIME_IN_DAY(this); | 657 time = LOCAL_TIME_IN_DAY(this); |
660 } | 658 } |
661 var day = MakeDay(year, month, date); | 659 var day = MakeDay(year, month, date); |
662 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time)); | 660 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time)); |
663 } | 661 } |
664 | 662 |
665 | 663 |
666 // ECMA 262 - 15.9.5.41 | 664 // ECMA 262 - 15.9.5.41 |
667 function DateSetUTCFullYear(year, month, date) { | 665 function DateSetUTCFullYear(year, month, date) { |
668 CHECK_DATE(this); | 666 CHECK_DATE(this); |
669 var t = UTC_DATE_VALUE(this); | 667 var t = UTC_DATE_VALUE(this); |
670 year = ToNumber(year); | 668 year = TO_NUMBER(year); |
671 var argc = %_ArgumentsLength(); | 669 var argc = %_ArgumentsLength(); |
672 var time ; | 670 var time ; |
673 if (NUMBER_IS_NAN(t)) { | 671 if (NUMBER_IS_NAN(t)) { |
674 month = argc < 2 ? 0 : ToNumber(month); | 672 month = argc < 2 ? 0 : TO_NUMBER(month); |
675 date = argc < 3 ? 1 : ToNumber(date); | 673 date = argc < 3 ? 1 : TO_NUMBER(date); |
676 time = 0; | 674 time = 0; |
677 } else { | 675 } else { |
678 month = argc < 2 ? UTC_MONTH(this) : ToNumber(month); | 676 month = argc < 2 ? UTC_MONTH(this) : TO_NUMBER(month); |
679 date = argc < 3 ? UTC_DAY(this) : ToNumber(date); | 677 date = argc < 3 ? UTC_DAY(this) : TO_NUMBER(date); |
680 time = UTC_TIME_IN_DAY(this); | 678 time = UTC_TIME_IN_DAY(this); |
681 } | 679 } |
682 var day = MakeDay(year, month, date); | 680 var day = MakeDay(year, month, date); |
683 return SET_UTC_DATE_VALUE(this, MakeDate(day, time)); | 681 return SET_UTC_DATE_VALUE(this, MakeDate(day, time)); |
684 } | 682 } |
685 | 683 |
686 | 684 |
687 // ECMA 262 - 15.9.5.42 | 685 // ECMA 262 - 15.9.5.42 |
688 function DateToUTCString() { | 686 function DateToUTCString() { |
689 CHECK_DATE(this); | 687 CHECK_DATE(this); |
(...skipping 11 matching lines...) Expand all Loading... |
701 // ECMA 262 - B.2.4 | 699 // ECMA 262 - B.2.4 |
702 function DateGetYear() { | 700 function DateGetYear() { |
703 CHECK_DATE(this); | 701 CHECK_DATE(this); |
704 return LOCAL_YEAR(this) - 1900; | 702 return LOCAL_YEAR(this) - 1900; |
705 } | 703 } |
706 | 704 |
707 | 705 |
708 // ECMA 262 - B.2.5 | 706 // ECMA 262 - B.2.5 |
709 function DateSetYear(year) { | 707 function DateSetYear(year) { |
710 CHECK_DATE(this); | 708 CHECK_DATE(this); |
711 year = ToNumber(year); | 709 year = TO_NUMBER(year); |
712 if (NUMBER_IS_NAN(year)) return SET_UTC_DATE_VALUE(this, NAN); | 710 if (NUMBER_IS_NAN(year)) return SET_UTC_DATE_VALUE(this, NAN); |
713 year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99) | 711 year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99) |
714 ? 1900 + TO_INTEGER(year) : year; | 712 ? 1900 + TO_INTEGER(year) : year; |
715 var t = LOCAL_DATE_VALUE(this); | 713 var t = LOCAL_DATE_VALUE(this); |
716 var month, date, time; | 714 var month, date, time; |
717 if (NUMBER_IS_NAN(t)) { | 715 if (NUMBER_IS_NAN(t)) { |
718 month = 0; | 716 month = 0; |
719 date = 1; | 717 date = 1; |
720 time = 0; | 718 time = 0; |
721 } else { | 719 } else { |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
876 "toUTCString", DateToUTCString, | 874 "toUTCString", DateToUTCString, |
877 "getYear", DateGetYear, | 875 "getYear", DateGetYear, |
878 "setYear", DateSetYear, | 876 "setYear", DateSetYear, |
879 "toISOString", DateToISOString, | 877 "toISOString", DateToISOString, |
880 "toJSON", DateToJSON | 878 "toJSON", DateToJSON |
881 ]); | 879 ]); |
882 | 880 |
883 %InstallToContext(["create_date_fun", CreateDate]); | 881 %InstallToContext(["create_date_fun", CreateDate]); |
884 | 882 |
885 }) | 883 }) |
OLD | NEW |