| 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 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 446 year = (!NUMBER_IS_NAN(year) && 0 <= TO_INTEGER(year) && TO_INTEGER(year) <=
99) | 446 year = (!NUMBER_IS_NAN(year) && 0 <= TO_INTEGER(year) && TO_INTEGER(year) <=
99) |
| 447 ? 1900 + TO_INTEGER(year) : year; | 447 ? 1900 + TO_INTEGER(year) : year; |
| 448 var day = MakeDay(year, month, date); | 448 var day = MakeDay(year, month, date); |
| 449 var time = MakeTime(hours, minutes, seconds, ms); | 449 var time = MakeTime(hours, minutes, seconds, ms); |
| 450 value = TimeClip(UTC(MakeDate(day, time))); | 450 value = TimeClip(UTC(MakeDate(day, time))); |
| 451 } | 451 } |
| 452 %_SetValueOf(this, value); | 452 %_SetValueOf(this, value); |
| 453 }); | 453 }); |
| 454 | 454 |
| 455 | 455 |
| 456 // Helper functions. | |
| 457 function GetTimeFrom(aDate) { | |
| 458 return DATE_VALUE(aDate); | |
| 459 } | |
| 460 | |
| 461 function GetMillisecondsFrom(aDate) { | |
| 462 var t = DATE_VALUE(aDate); | |
| 463 if (NUMBER_IS_NAN(t)) return t; | |
| 464 return MS_FROM_TIME(LocalTimeNoCheck(t)); | |
| 465 } | |
| 466 | |
| 467 | |
| 468 function GetUTCMillisecondsFrom(aDate) { | |
| 469 var t = DATE_VALUE(aDate); | |
| 470 if (NUMBER_IS_NAN(t)) return t; | |
| 471 return MS_FROM_TIME(t); | |
| 472 } | |
| 473 | |
| 474 | |
| 475 function GetSecondsFrom(aDate) { | |
| 476 var t = DATE_VALUE(aDate); | |
| 477 if (NUMBER_IS_NAN(t)) return t; | |
| 478 return SEC_FROM_TIME(LocalTimeNoCheck(t)); | |
| 479 } | |
| 480 | |
| 481 | |
| 482 function GetUTCSecondsFrom(aDate) { | |
| 483 var t = DATE_VALUE(aDate); | |
| 484 if (NUMBER_IS_NAN(t)) return t; | |
| 485 return SEC_FROM_TIME(t); | |
| 486 } | |
| 487 | |
| 488 | |
| 489 function GetMinutesFrom(aDate) { | |
| 490 var t = DATE_VALUE(aDate); | |
| 491 if (NUMBER_IS_NAN(t)) return t; | |
| 492 return MIN_FROM_TIME(LocalTimeNoCheck(t)); | |
| 493 } | |
| 494 | |
| 495 | |
| 496 function GetUTCMinutesFrom(aDate) { | |
| 497 var t = DATE_VALUE(aDate); | |
| 498 if (NUMBER_IS_NAN(t)) return t; | |
| 499 return MIN_FROM_TIME(t); | |
| 500 } | |
| 501 | |
| 502 | |
| 503 function GetHoursFrom(aDate) { | |
| 504 var t = DATE_VALUE(aDate); | |
| 505 if (NUMBER_IS_NAN(t)) return t; | |
| 506 return HOUR_FROM_TIME(LocalTimeNoCheck(t)); | |
| 507 } | |
| 508 | |
| 509 | |
| 510 function GetUTCHoursFrom(aDate) { | |
| 511 var t = DATE_VALUE(aDate); | |
| 512 if (NUMBER_IS_NAN(t)) return t; | |
| 513 return HOUR_FROM_TIME(t); | |
| 514 } | |
| 515 | |
| 516 | |
| 517 function GetFullYearFrom(aDate) { | |
| 518 var t = DATE_VALUE(aDate); | |
| 519 if (NUMBER_IS_NAN(t)) return t; | |
| 520 var cache = Date_cache; | |
| 521 if (cache.time === t) return cache.year; | |
| 522 return YEAR_FROM_TIME(LocalTimeNoCheck(t)); | |
| 523 } | |
| 524 | |
| 525 | |
| 526 function GetUTCFullYearFrom(aDate) { | |
| 527 var t = DATE_VALUE(aDate); | |
| 528 if (NUMBER_IS_NAN(t)) return t; | |
| 529 return YEAR_FROM_TIME(t); | |
| 530 } | |
| 531 | |
| 532 | |
| 533 function GetMonthFrom(aDate) { | |
| 534 var t = DATE_VALUE(aDate); | |
| 535 if (NUMBER_IS_NAN(t)) return t; | |
| 536 return MONTH_FROM_TIME(LocalTimeNoCheck(t)); | |
| 537 } | |
| 538 | |
| 539 | |
| 540 function GetUTCMonthFrom(aDate) { | |
| 541 var t = DATE_VALUE(aDate); | |
| 542 if (NUMBER_IS_NAN(t)) return t; | |
| 543 return MONTH_FROM_TIME(t); | |
| 544 } | |
| 545 | |
| 546 | |
| 547 function GetDateFrom(aDate) { | |
| 548 var t = DATE_VALUE(aDate); | |
| 549 if (NUMBER_IS_NAN(t)) return t; | |
| 550 return DATE_FROM_TIME(LocalTimeNoCheck(t)); | |
| 551 } | |
| 552 | |
| 553 | |
| 554 function GetUTCDateFrom(aDate) { | |
| 555 var t = DATE_VALUE(aDate); | |
| 556 if (NUMBER_IS_NAN(t)) return t; | |
| 557 return DATE_FROM_TIME(t); | |
| 558 } | |
| 559 | |
| 560 | |
| 561 %FunctionSetPrototype($Date, new $Date($NaN)); | 456 %FunctionSetPrototype($Date, new $Date($NaN)); |
| 562 | 457 |
| 563 | 458 |
| 564 var WeekDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; | 459 var WeekDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; |
| 565 var Months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oc
t', 'Nov', 'Dec']; | 460 var Months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oc
t', 'Nov', 'Dec']; |
| 566 | 461 |
| 567 | 462 |
| 568 function TwoDigitString(value) { | 463 function TwoDigitString(value) { |
| 569 return value < 10 ? "0" + value : "" + value; | 464 return value < 10 ? "0" + value : "" + value; |
| 570 } | 465 } |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 730 | 625 |
| 731 | 626 |
| 732 // ECMA 262 - 15.9.5.9 | 627 // ECMA 262 - 15.9.5.9 |
| 733 function DateGetTime() { | 628 function DateGetTime() { |
| 734 return DATE_VALUE(this); | 629 return DATE_VALUE(this); |
| 735 } | 630 } |
| 736 | 631 |
| 737 | 632 |
| 738 // ECMA 262 - 15.9.5.10 | 633 // ECMA 262 - 15.9.5.10 |
| 739 function DateGetFullYear() { | 634 function DateGetFullYear() { |
| 740 return GetFullYearFrom(this) | 635 var t = DATE_VALUE(this); |
| 636 if (NUMBER_IS_NAN(t)) return t; |
| 637 var cache = Date_cache; |
| 638 if (cache.time === t) return cache.year; |
| 639 return YEAR_FROM_TIME(LocalTimeNoCheck(t)); |
| 741 } | 640 } |
| 742 | 641 |
| 743 | 642 |
| 744 // ECMA 262 - 15.9.5.11 | 643 // ECMA 262 - 15.9.5.11 |
| 745 function DateGetUTCFullYear() { | 644 function DateGetUTCFullYear() { |
| 746 return GetUTCFullYearFrom(this) | 645 var t = DATE_VALUE(this); |
| 646 if (NUMBER_IS_NAN(t)) return t; |
| 647 return YEAR_FROM_TIME(t); |
| 747 } | 648 } |
| 748 | 649 |
| 749 | 650 |
| 750 // ECMA 262 - 15.9.5.12 | 651 // ECMA 262 - 15.9.5.12 |
| 751 function DateGetMonth() { | 652 function DateGetMonth() { |
| 752 return GetMonthFrom(this); | 653 var t = DATE_VALUE(this); |
| 654 if (NUMBER_IS_NAN(t)) return t; |
| 655 return MONTH_FROM_TIME(LocalTimeNoCheck(t)); |
| 753 } | 656 } |
| 754 | 657 |
| 755 | 658 |
| 756 // ECMA 262 - 15.9.5.13 | 659 // ECMA 262 - 15.9.5.13 |
| 757 function DateGetUTCMonth() { | 660 function DateGetUTCMonth() { |
| 758 return GetUTCMonthFrom(this); | 661 var t = DATE_VALUE(this); |
| 662 if (NUMBER_IS_NAN(t)) return t; |
| 663 return MONTH_FROM_TIME(t); |
| 759 } | 664 } |
| 760 | 665 |
| 761 | 666 |
| 762 // ECMA 262 - 15.9.5.14 | 667 // ECMA 262 - 15.9.5.14 |
| 763 function DateGetDate() { | 668 function DateGetDate() { |
| 764 return GetDateFrom(this); | 669 var t = DATE_VALUE(this); |
| 670 if (NUMBER_IS_NAN(t)) return t; |
| 671 return DATE_FROM_TIME(LocalTimeNoCheck(t)); |
| 765 } | 672 } |
| 766 | 673 |
| 767 | 674 |
| 768 // ECMA 262 - 15.9.5.15 | 675 // ECMA 262 - 15.9.5.15 |
| 769 function DateGetUTCDate() { | 676 function DateGetUTCDate() { |
| 770 return GetUTCDateFrom(this); | 677 var t = DATE_VALUE(this); |
| 678 return NAN_OR_DATE_FROM_TIME(t); |
| 771 } | 679 } |
| 772 | 680 |
| 773 | 681 |
| 774 // ECMA 262 - 15.9.5.16 | 682 // ECMA 262 - 15.9.5.16 |
| 775 function DateGetDay() { | 683 function DateGetDay() { |
| 776 var t = %_ValueOf(this); | 684 var t = %_ValueOf(this); |
| 777 if (NUMBER_IS_NAN(t)) return t; | 685 if (NUMBER_IS_NAN(t)) return t; |
| 778 return WeekDay(LocalTimeNoCheck(t)); | 686 return WeekDay(LocalTimeNoCheck(t)); |
| 779 } | 687 } |
| 780 | 688 |
| 781 | 689 |
| 782 // ECMA 262 - 15.9.5.17 | 690 // ECMA 262 - 15.9.5.17 |
| 783 function DateGetUTCDay() { | 691 function DateGetUTCDay() { |
| 784 var t = %_ValueOf(this); | 692 var t = %_ValueOf(this); |
| 785 if (NUMBER_IS_NAN(t)) return t; | 693 if (NUMBER_IS_NAN(t)) return t; |
| 786 return WeekDay(t); | 694 return WeekDay(t); |
| 787 } | 695 } |
| 788 | 696 |
| 789 | 697 |
| 790 // ECMA 262 - 15.9.5.18 | 698 // ECMA 262 - 15.9.5.18 |
| 791 function DateGetHours() { | 699 function DateGetHours() { |
| 792 return GetHoursFrom(this); | 700 var t = DATE_VALUE(this); |
| 701 if (NUMBER_IS_NAN(t)) return t; |
| 702 return HOUR_FROM_TIME(LocalTimeNoCheck(t)); |
| 793 } | 703 } |
| 794 | 704 |
| 795 | 705 |
| 796 // ECMA 262 - 15.9.5.19 | 706 // ECMA 262 - 15.9.5.19 |
| 797 function DateGetUTCHours() { | 707 function DateGetUTCHours() { |
| 798 return GetUTCHoursFrom(this); | 708 var t = DATE_VALUE(this); |
| 709 if (NUMBER_IS_NAN(t)) return t; |
| 710 return HOUR_FROM_TIME(t); |
| 799 } | 711 } |
| 800 | 712 |
| 801 | 713 |
| 802 // ECMA 262 - 15.9.5.20 | 714 // ECMA 262 - 15.9.5.20 |
| 803 function DateGetMinutes() { | 715 function DateGetMinutes() { |
| 804 return GetMinutesFrom(this); | 716 var t = DATE_VALUE(this); |
| 717 if (NUMBER_IS_NAN(t)) return t; |
| 718 return MIN_FROM_TIME(LocalTimeNoCheck(t)); |
| 805 } | 719 } |
| 806 | 720 |
| 807 | 721 |
| 808 // ECMA 262 - 15.9.5.21 | 722 // ECMA 262 - 15.9.5.21 |
| 809 function DateGetUTCMinutes() { | 723 function DateGetUTCMinutes() { |
| 810 return GetUTCMinutesFrom(this); | 724 var t = DATE_VALUE(this); |
| 725 return NAN_OR_MIN_FROM_TIME(t); |
| 811 } | 726 } |
| 812 | 727 |
| 813 | 728 |
| 814 // ECMA 262 - 15.9.5.22 | 729 // ECMA 262 - 15.9.5.22 |
| 815 function DateGetSeconds() { | 730 function DateGetSeconds() { |
| 816 return GetSecondsFrom(this); | 731 var t = DATE_VALUE(this); |
| 732 if (NUMBER_IS_NAN(t)) return t; |
| 733 return SEC_FROM_TIME(LocalTimeNoCheck(t)); |
| 817 } | 734 } |
| 818 | 735 |
| 819 | 736 |
| 820 // ECMA 262 - 15.9.5.23 | 737 // ECMA 262 - 15.9.5.23 |
| 821 function DateGetUTCSeconds() { | 738 function DateGetUTCSeconds() { |
| 822 return GetUTCSecondsFrom(this); | 739 var t = DATE_VALUE(this); |
| 740 return NAN_OR_SEC_FROM_TIME(t); |
| 823 } | 741 } |
| 824 | 742 |
| 825 | 743 |
| 826 // ECMA 262 - 15.9.5.24 | 744 // ECMA 262 - 15.9.5.24 |
| 827 function DateGetMilliseconds() { | 745 function DateGetMilliseconds() { |
| 828 return GetMillisecondsFrom(this); | 746 var t = DATE_VALUE(this); |
| 747 if (NUMBER_IS_NAN(t)) return t; |
| 748 return MS_FROM_TIME(LocalTimeNoCheck(t)); |
| 829 } | 749 } |
| 830 | 750 |
| 831 | 751 |
| 832 // ECMA 262 - 15.9.5.25 | 752 // ECMA 262 - 15.9.5.25 |
| 833 function DateGetUTCMilliseconds() { | 753 function DateGetUTCMilliseconds() { |
| 834 return GetUTCMillisecondsFrom(this); | 754 var t = DATE_VALUE(this); |
| 755 return NAN_OR_MS_FROM_TIME(t); |
| 835 } | 756 } |
| 836 | 757 |
| 837 | 758 |
| 838 // ECMA 262 - 15.9.5.26 | 759 // ECMA 262 - 15.9.5.26 |
| 839 function DateGetTimezoneOffset() { | 760 function DateGetTimezoneOffset() { |
| 840 var t = DATE_VALUE(this); | 761 var t = DATE_VALUE(this); |
| 841 if (NUMBER_IS_NAN(t)) return t; | 762 if (NUMBER_IS_NAN(t)) return t; |
| 842 return (t - LocalTimeNoCheck(t)) / msPerMinute; | 763 return (t - LocalTimeNoCheck(t)) / msPerMinute; |
| 843 } | 764 } |
| 844 | 765 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 865 ms = ToNumber(ms); | 786 ms = ToNumber(ms); |
| 866 var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), SEC_FROM_TIME(t), ms)
; | 787 var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), SEC_FROM_TIME(t), ms)
; |
| 867 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); | 788 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); |
| 868 } | 789 } |
| 869 | 790 |
| 870 | 791 |
| 871 // ECMA 262 - 15.9.5.30 | 792 // ECMA 262 - 15.9.5.30 |
| 872 function DateSetSeconds(sec, ms) { | 793 function DateSetSeconds(sec, ms) { |
| 873 var t = LocalTime(DATE_VALUE(this)); | 794 var t = LocalTime(DATE_VALUE(this)); |
| 874 sec = ToNumber(sec); | 795 sec = ToNumber(sec); |
| 875 ms = %_ArgumentsLength() < 2 ? GetMillisecondsFrom(this) : ToNumber(ms); | 796 ms = %_ArgumentsLength() < 2 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); |
| 876 var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), sec, ms); | 797 var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), sec, ms); |
| 877 return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time)))); | 798 return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time)))); |
| 878 } | 799 } |
| 879 | 800 |
| 880 | 801 |
| 881 // ECMA 262 - 15.9.5.31 | 802 // ECMA 262 - 15.9.5.31 |
| 882 function DateSetUTCSeconds(sec, ms) { | 803 function DateSetUTCSeconds(sec, ms) { |
| 883 var t = DATE_VALUE(this); | 804 var t = DATE_VALUE(this); |
| 884 sec = ToNumber(sec); | 805 sec = ToNumber(sec); |
| 885 ms = %_ArgumentsLength() < 2 ? GetUTCMillisecondsFrom(this) : ToNumber(ms); | 806 ms = %_ArgumentsLength() < 2 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); |
| 886 var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), sec, ms); | 807 var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), sec, ms); |
| 887 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); | 808 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); |
| 888 } | 809 } |
| 889 | 810 |
| 890 | 811 |
| 891 // ECMA 262 - 15.9.5.33 | 812 // ECMA 262 - 15.9.5.33 |
| 892 function DateSetMinutes(min, sec, ms) { | 813 function DateSetMinutes(min, sec, ms) { |
| 893 var t = LocalTime(DATE_VALUE(this)); | 814 var t = LocalTime(DATE_VALUE(this)); |
| 894 min = ToNumber(min); | 815 min = ToNumber(min); |
| 895 var argc = %_ArgumentsLength(); | 816 var argc = %_ArgumentsLength(); |
| 896 sec = argc < 2 ? GetSecondsFrom(this) : ToNumber(sec); | 817 sec = argc < 2 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec); |
| 897 ms = argc < 3 ? GetMillisecondsFrom(this) : ToNumber(ms); | 818 ms = argc < 3 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); |
| 898 var time = MakeTime(HOUR_FROM_TIME(t), min, sec, ms); | 819 var time = MakeTime(HOUR_FROM_TIME(t), min, sec, ms); |
| 899 return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time)))); | 820 return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time)))); |
| 900 } | 821 } |
| 901 | 822 |
| 902 | 823 |
| 903 // ECMA 262 - 15.9.5.34 | 824 // ECMA 262 - 15.9.5.34 |
| 904 function DateSetUTCMinutes(min, sec, ms) { | 825 function DateSetUTCMinutes(min, sec, ms) { |
| 905 var t = DATE_VALUE(this); | 826 var t = DATE_VALUE(this); |
| 906 min = ToNumber(min); | 827 min = ToNumber(min); |
| 907 var argc = %_ArgumentsLength(); | 828 var argc = %_ArgumentsLength(); |
| 908 sec = argc < 2 ? GetUTCSecondsFrom(this) : ToNumber(sec); | 829 sec = argc < 2 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec); |
| 909 ms = argc < 3 ? GetUTCMillisecondsFrom(this) : ToNumber(ms); | 830 ms = argc < 3 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); |
| 910 var time = MakeTime(HOUR_FROM_TIME(t), min, sec, ms); | 831 var time = MakeTime(HOUR_FROM_TIME(t), min, sec, ms); |
| 911 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); | 832 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); |
| 912 } | 833 } |
| 913 | 834 |
| 914 | 835 |
| 915 // ECMA 262 - 15.9.5.35 | 836 // ECMA 262 - 15.9.5.35 |
| 916 function DateSetHours(hour, min, sec, ms) { | 837 function DateSetHours(hour, min, sec, ms) { |
| 917 var t = LocalTime(DATE_VALUE(this)); | 838 var t = LocalTime(DATE_VALUE(this)); |
| 918 hour = ToNumber(hour); | 839 hour = ToNumber(hour); |
| 919 var argc = %_ArgumentsLength(); | 840 var argc = %_ArgumentsLength(); |
| 920 min = argc < 2 ? GetMinutesFrom(this) : ToNumber(min); | 841 min = argc < 2 ? NAN_OR_MIN_FROM_TIME(t) : ToNumber(min); |
| 921 sec = argc < 3 ? GetSecondsFrom(this) : ToNumber(sec); | 842 sec = argc < 3 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec); |
| 922 ms = argc < 4 ? GetMillisecondsFrom(this) : ToNumber(ms); | 843 ms = argc < 4 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); |
| 923 var time = MakeTime(hour, min, sec, ms); | 844 var time = MakeTime(hour, min, sec, ms); |
| 924 return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time)))); | 845 return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time)))); |
| 925 } | 846 } |
| 926 | 847 |
| 927 | 848 |
| 928 // ECMA 262 - 15.9.5.34 | 849 // ECMA 262 - 15.9.5.34 |
| 929 function DateSetUTCHours(hour, min, sec, ms) { | 850 function DateSetUTCHours(hour, min, sec, ms) { |
| 930 var t = DATE_VALUE(this); | 851 var t = DATE_VALUE(this); |
| 931 hour = ToNumber(hour); | 852 hour = ToNumber(hour); |
| 932 var argc = %_ArgumentsLength(); | 853 var argc = %_ArgumentsLength(); |
| 933 min = argc < 2 ? GetUTCMinutesFrom(this) : ToNumber(min); | 854 min = argc < 2 ? NAN_OR_MIN_FROM_TIME(t) : ToNumber(min); |
| 934 sec = argc < 3 ? GetUTCSecondsFrom(this) : ToNumber(sec); | 855 sec = argc < 3 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec); |
| 935 ms = argc < 4 ? GetUTCMillisecondsFrom(this) : ToNumber(ms); | 856 ms = argc < 4 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); |
| 936 var time = MakeTime(hour, min, sec, ms); | 857 var time = MakeTime(hour, min, sec, ms); |
| 937 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); | 858 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); |
| 938 } | 859 } |
| 939 | 860 |
| 940 | 861 |
| 941 // ECMA 262 - 15.9.5.36 | 862 // ECMA 262 - 15.9.5.36 |
| 942 function DateSetDate(date) { | 863 function DateSetDate(date) { |
| 943 var t = LocalTime(DATE_VALUE(this)); | 864 var t = LocalTime(DATE_VALUE(this)); |
| 944 date = ToNumber(date); | 865 date = ToNumber(date); |
| 945 var day = MakeDay(YEAR_FROM_TIME(t), MONTH_FROM_TIME(t), date); | 866 var day = MakeDay(YEAR_FROM_TIME(t), MONTH_FROM_TIME(t), date); |
| 946 return %_SetValueOf(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t))))); | 867 return %_SetValueOf(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t))))); |
| 947 } | 868 } |
| 948 | 869 |
| 949 | 870 |
| 950 // ECMA 262 - 15.9.5.37 | 871 // ECMA 262 - 15.9.5.37 |
| 951 function DateSetUTCDate(date) { | 872 function DateSetUTCDate(date) { |
| 952 var t = DATE_VALUE(this); | 873 var t = DATE_VALUE(this); |
| 953 date = ToNumber(date); | 874 date = ToNumber(date); |
| 954 var day = MakeDay(YEAR_FROM_TIME(t), MONTH_FROM_TIME(t), date); | 875 var day = MakeDay(YEAR_FROM_TIME(t), MONTH_FROM_TIME(t), date); |
| 955 return %_SetValueOf(this, TimeClip(MakeDate(day, TimeWithinDay(t)))); | 876 return %_SetValueOf(this, TimeClip(MakeDate(day, TimeWithinDay(t)))); |
| 956 } | 877 } |
| 957 | 878 |
| 958 | 879 |
| 959 // ECMA 262 - 15.9.5.38 | 880 // ECMA 262 - 15.9.5.38 |
| 960 function DateSetMonth(month, date) { | 881 function DateSetMonth(month, date) { |
| 961 var t = LocalTime(DATE_VALUE(this)); | 882 var t = LocalTime(DATE_VALUE(this)); |
| 962 month = ToNumber(month); | 883 month = ToNumber(month); |
| 963 date = %_ArgumentsLength() < 2 ? GetDateFrom(this) : ToNumber(date); | 884 date = %_ArgumentsLength() < 2 ? NAN_OR_DATE_FROM_TIME(t) : ToNumber(date); |
| 964 var day = MakeDay(YEAR_FROM_TIME(t), month, date); | 885 var day = MakeDay(YEAR_FROM_TIME(t), month, date); |
| 965 return %_SetValueOf(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t))))); | 886 return %_SetValueOf(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t))))); |
| 966 } | 887 } |
| 967 | 888 |
| 968 | 889 |
| 969 // ECMA 262 - 15.9.5.39 | 890 // ECMA 262 - 15.9.5.39 |
| 970 function DateSetUTCMonth(month, date) { | 891 function DateSetUTCMonth(month, date) { |
| 971 var t = DATE_VALUE(this); | 892 var t = DATE_VALUE(this); |
| 972 month = ToNumber(month); | 893 month = ToNumber(month); |
| 973 date = %_ArgumentsLength() < 2 ? GetUTCDateFrom(this) : ToNumber(date); | 894 date = %_ArgumentsLength() < 2 ? NAN_OR_DATE_FROM_TIME(t) : ToNumber(date); |
| 974 var day = MakeDay(YEAR_FROM_TIME(t), month, date); | 895 var day = MakeDay(YEAR_FROM_TIME(t), month, date); |
| 975 return %_SetValueOf(this, TimeClip(MakeDate(day, TimeWithinDay(t)))); | 896 return %_SetValueOf(this, TimeClip(MakeDate(day, TimeWithinDay(t)))); |
| 976 } | 897 } |
| 977 | 898 |
| 978 | 899 |
| 979 // ECMA 262 - 15.9.5.40 | 900 // ECMA 262 - 15.9.5.40 |
| 980 function DateSetFullYear(year, month, date) { | 901 function DateSetFullYear(year, month, date) { |
| 981 var t = DATE_VALUE(this); | 902 var t = DATE_VALUE(this); |
| 982 t = NUMBER_IS_NAN(t) ? 0 : LocalTimeNoCheck(t); | 903 t = NUMBER_IS_NAN(t) ? 0 : LocalTimeNoCheck(t); |
| 983 year = ToNumber(year); | 904 year = ToNumber(year); |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1129 "toGMTString", DateToGMTString, | 1050 "toGMTString", DateToGMTString, |
| 1130 "toUTCString", DateToUTCString, | 1051 "toUTCString", DateToUTCString, |
| 1131 "getYear", DateGetYear, | 1052 "getYear", DateGetYear, |
| 1132 "setYear", DateSetYear, | 1053 "setYear", DateSetYear, |
| 1133 "toISOString", DateToISOString, | 1054 "toISOString", DateToISOString, |
| 1134 "toJSON", DateToJSON | 1055 "toJSON", DateToJSON |
| 1135 )); | 1056 )); |
| 1136 } | 1057 } |
| 1137 | 1058 |
| 1138 SetupDate(); | 1059 SetupDate(); |
| OLD | NEW |