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 434 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
445 minutes = argc > 4 ? ToNumber(minutes) : 0; | 445 minutes = argc > 4 ? ToNumber(minutes) : 0; |
446 seconds = argc > 5 ? ToNumber(seconds) : 0; | 446 seconds = argc > 5 ? ToNumber(seconds) : 0; |
447 ms = argc > 6 ? ToNumber(ms) : 0; | 447 ms = argc > 6 ? ToNumber(ms) : 0; |
448 year = (!NUMBER_IS_NAN(year) && | 448 year = (!NUMBER_IS_NAN(year) && |
449 0 <= TO_INTEGER(year) && | 449 0 <= TO_INTEGER(year) && |
450 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; | 450 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; |
451 var day = MakeDay(year, month, date); | 451 var day = MakeDay(year, month, date); |
452 var time = MakeTime(hours, minutes, seconds, ms); | 452 var time = MakeTime(hours, minutes, seconds, ms); |
453 value = TimeClip(UTC(MakeDate(day, time))); | 453 value = TimeClip(UTC(MakeDate(day, time))); |
454 } | 454 } |
455 %_SetValueOf(this, value); | 455 SET_DATE_VALUE(this, value); |
456 }); | 456 }); |
457 | 457 |
458 | 458 |
459 %FunctionSetPrototype($Date, new $Date($NaN)); | 459 %FunctionSetPrototype($Date, new $Date($NaN)); |
460 | 460 |
461 | 461 |
462 var WeekDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; | 462 var WeekDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; |
463 var Months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', | 463 var Months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', |
464 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; | 464 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; |
465 | 465 |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
558 date = argc > 2 ? ToNumber(date) : 1; | 558 date = argc > 2 ? ToNumber(date) : 1; |
559 hours = argc > 3 ? ToNumber(hours) : 0; | 559 hours = argc > 3 ? ToNumber(hours) : 0; |
560 minutes = argc > 4 ? ToNumber(minutes) : 0; | 560 minutes = argc > 4 ? ToNumber(minutes) : 0; |
561 seconds = argc > 5 ? ToNumber(seconds) : 0; | 561 seconds = argc > 5 ? ToNumber(seconds) : 0; |
562 ms = argc > 6 ? ToNumber(ms) : 0; | 562 ms = argc > 6 ? ToNumber(ms) : 0; |
563 year = (!NUMBER_IS_NAN(year) && | 563 year = (!NUMBER_IS_NAN(year) && |
564 0 <= TO_INTEGER(year) && | 564 0 <= TO_INTEGER(year) && |
565 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; | 565 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; |
566 var day = MakeDay(year, month, date); | 566 var day = MakeDay(year, month, date); |
567 var time = MakeTime(hours, minutes, seconds, ms); | 567 var time = MakeTime(hours, minutes, seconds, ms); |
568 return %_SetValueOf(this, TimeClip(MakeDate(day, time))); | 568 return SET_DATE_VALUE(this, TimeClip(MakeDate(day, time))); |
569 } | 569 } |
570 | 570 |
571 | 571 |
572 // Mozilla-specific extension. Returns the number of milliseconds | 572 // Mozilla-specific extension. Returns the number of milliseconds |
573 // elapsed since 1 January 1970 00:00:00 UTC. | 573 // elapsed since 1 January 1970 00:00:00 UTC. |
574 function DateNow() { | 574 function DateNow() { |
575 return %DateCurrentTime(); | 575 return %DateCurrentTime(); |
576 } | 576 } |
577 | 577 |
578 | 578 |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
767 function DateGetTimezoneOffset() { | 767 function DateGetTimezoneOffset() { |
768 var t = DATE_VALUE(this); | 768 var t = DATE_VALUE(this); |
769 if (NUMBER_IS_NAN(t)) return t; | 769 if (NUMBER_IS_NAN(t)) return t; |
770 return (t - LocalTimeNoCheck(t)) / msPerMinute; | 770 return (t - LocalTimeNoCheck(t)) / msPerMinute; |
771 } | 771 } |
772 | 772 |
773 | 773 |
774 // ECMA 262 - 15.9.5.27 | 774 // ECMA 262 - 15.9.5.27 |
775 function DateSetTime(ms) { | 775 function DateSetTime(ms) { |
776 if (!IS_DATE(this)) ThrowDateTypeError(); | 776 if (!IS_DATE(this)) ThrowDateTypeError(); |
777 return %_SetValueOf(this, TimeClip(ToNumber(ms))); | 777 return SET_DATE_VALUE(this, TimeClip(ToNumber(ms))); |
778 } | 778 } |
779 | 779 |
780 | 780 |
781 // ECMA 262 - 15.9.5.28 | 781 // ECMA 262 - 15.9.5.28 |
782 function DateSetMilliseconds(ms) { | 782 function DateSetMilliseconds(ms) { |
783 var t = LocalTime(DATE_VALUE(this)); | 783 var t = LocalTime(DATE_VALUE(this)); |
784 ms = ToNumber(ms); | 784 ms = ToNumber(ms); |
785 var time = MakeTime(HOUR_FROM_TIME(t), | 785 var time = MakeTime(HOUR_FROM_TIME(t), |
786 MIN_FROM_TIME(t), | 786 MIN_FROM_TIME(t), |
787 SEC_FROM_TIME(t), | 787 SEC_FROM_TIME(t), |
788 ms); | 788 ms); |
789 return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time)))); | 789 return SET_DATE_VALUE(this, TimeClip(UTC(MakeDate(DAY(t), time)))); |
790 } | 790 } |
791 | 791 |
792 | 792 |
793 // ECMA 262 - 15.9.5.29 | 793 // ECMA 262 - 15.9.5.29 |
794 function DateSetUTCMilliseconds(ms) { | 794 function DateSetUTCMilliseconds(ms) { |
795 var t = DATE_VALUE(this); | 795 var t = DATE_VALUE(this); |
796 ms = ToNumber(ms); | 796 ms = ToNumber(ms); |
797 var time = MakeTime(HOUR_FROM_TIME(t), | 797 var time = MakeTime(HOUR_FROM_TIME(t), |
798 MIN_FROM_TIME(t), | 798 MIN_FROM_TIME(t), |
799 SEC_FROM_TIME(t), | 799 SEC_FROM_TIME(t), |
800 ms); | 800 ms); |
801 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); | 801 return SET_DATE_VALUE(this, TimeClip(MakeDate(DAY(t), time))); |
802 } | 802 } |
803 | 803 |
804 | 804 |
805 // ECMA 262 - 15.9.5.30 | 805 // ECMA 262 - 15.9.5.30 |
806 function DateSetSeconds(sec, ms) { | 806 function DateSetSeconds(sec, ms) { |
807 var t = LocalTime(DATE_VALUE(this)); | 807 var t = LocalTime(DATE_VALUE(this)); |
808 sec = ToNumber(sec); | 808 sec = ToNumber(sec); |
809 ms = %_ArgumentsLength() < 2 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); | 809 ms = %_ArgumentsLength() < 2 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); |
810 var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), sec, ms); | 810 var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), sec, ms); |
811 return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time)))); | 811 return SET_DATE_VALUE(this, TimeClip(UTC(MakeDate(DAY(t), time)))); |
812 } | 812 } |
813 | 813 |
814 | 814 |
815 // ECMA 262 - 15.9.5.31 | 815 // ECMA 262 - 15.9.5.31 |
816 function DateSetUTCSeconds(sec, ms) { | 816 function DateSetUTCSeconds(sec, ms) { |
817 var t = DATE_VALUE(this); | 817 var t = DATE_VALUE(this); |
818 sec = ToNumber(sec); | 818 sec = ToNumber(sec); |
819 ms = %_ArgumentsLength() < 2 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); | 819 ms = %_ArgumentsLength() < 2 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); |
820 var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), sec, ms); | 820 var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), sec, ms); |
821 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); | 821 return SET_DATE_VALUE(this, TimeClip(MakeDate(DAY(t), time))); |
822 } | 822 } |
823 | 823 |
824 | 824 |
825 // ECMA 262 - 15.9.5.33 | 825 // ECMA 262 - 15.9.5.33 |
826 function DateSetMinutes(min, sec, ms) { | 826 function DateSetMinutes(min, sec, ms) { |
827 var t = LocalTime(DATE_VALUE(this)); | 827 var t = LocalTime(DATE_VALUE(this)); |
828 min = ToNumber(min); | 828 min = ToNumber(min); |
829 var argc = %_ArgumentsLength(); | 829 var argc = %_ArgumentsLength(); |
830 sec = argc < 2 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec); | 830 sec = argc < 2 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec); |
831 ms = argc < 3 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); | 831 ms = argc < 3 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); |
832 var time = MakeTime(HOUR_FROM_TIME(t), min, sec, ms); | 832 var time = MakeTime(HOUR_FROM_TIME(t), min, sec, ms); |
833 return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time)))); | 833 return SET_DATE_VALUE(this, TimeClip(UTC(MakeDate(DAY(t), time)))); |
834 } | 834 } |
835 | 835 |
836 | 836 |
837 // ECMA 262 - 15.9.5.34 | 837 // ECMA 262 - 15.9.5.34 |
838 function DateSetUTCMinutes(min, sec, ms) { | 838 function DateSetUTCMinutes(min, sec, ms) { |
839 var t = DATE_VALUE(this); | 839 var t = DATE_VALUE(this); |
840 min = ToNumber(min); | 840 min = ToNumber(min); |
841 var argc = %_ArgumentsLength(); | 841 var argc = %_ArgumentsLength(); |
842 sec = argc < 2 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec); | 842 sec = argc < 2 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec); |
843 ms = argc < 3 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); | 843 ms = argc < 3 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); |
844 var time = MakeTime(HOUR_FROM_TIME(t), min, sec, ms); | 844 var time = MakeTime(HOUR_FROM_TIME(t), min, sec, ms); |
845 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); | 845 return SET_DATE_VALUE(this, TimeClip(MakeDate(DAY(t), time))); |
846 } | 846 } |
847 | 847 |
848 | 848 |
849 // ECMA 262 - 15.9.5.35 | 849 // ECMA 262 - 15.9.5.35 |
850 function DateSetHours(hour, min, sec, ms) { | 850 function DateSetHours(hour, min, sec, ms) { |
851 var t = LocalTime(DATE_VALUE(this)); | 851 var t = LocalTime(DATE_VALUE(this)); |
852 hour = ToNumber(hour); | 852 hour = ToNumber(hour); |
853 var argc = %_ArgumentsLength(); | 853 var argc = %_ArgumentsLength(); |
854 min = argc < 2 ? NAN_OR_MIN_FROM_TIME(t) : ToNumber(min); | 854 min = argc < 2 ? NAN_OR_MIN_FROM_TIME(t) : ToNumber(min); |
855 sec = argc < 3 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec); | 855 sec = argc < 3 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec); |
856 ms = argc < 4 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); | 856 ms = argc < 4 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); |
857 var time = MakeTime(hour, min, sec, ms); | 857 var time = MakeTime(hour, min, sec, ms); |
858 return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time)))); | 858 return SET_DATE_VALUE(this, TimeClip(UTC(MakeDate(DAY(t), time)))); |
859 } | 859 } |
860 | 860 |
861 | 861 |
862 // ECMA 262 - 15.9.5.34 | 862 // ECMA 262 - 15.9.5.34 |
863 function DateSetUTCHours(hour, min, sec, ms) { | 863 function DateSetUTCHours(hour, min, sec, ms) { |
864 var t = DATE_VALUE(this); | 864 var t = DATE_VALUE(this); |
865 hour = ToNumber(hour); | 865 hour = ToNumber(hour); |
866 var argc = %_ArgumentsLength(); | 866 var argc = %_ArgumentsLength(); |
867 min = argc < 2 ? NAN_OR_MIN_FROM_TIME(t) : ToNumber(min); | 867 min = argc < 2 ? NAN_OR_MIN_FROM_TIME(t) : ToNumber(min); |
868 sec = argc < 3 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec); | 868 sec = argc < 3 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec); |
869 ms = argc < 4 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); | 869 ms = argc < 4 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms); |
870 var time = MakeTime(hour, min, sec, ms); | 870 var time = MakeTime(hour, min, sec, ms); |
871 return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time))); | 871 return SET_DATE_VALUE(this, TimeClip(MakeDate(DAY(t), time))); |
872 } | 872 } |
873 | 873 |
874 | 874 |
875 // ECMA 262 - 15.9.5.36 | 875 // ECMA 262 - 15.9.5.36 |
876 function DateSetDate(date) { | 876 function DateSetDate(date) { |
877 var t = LocalTime(DATE_VALUE(this)); | 877 var t = LocalTime(DATE_VALUE(this)); |
878 date = ToNumber(date); | 878 date = ToNumber(date); |
879 var day = MakeDay(YearFromTime(t), MonthFromTime(t), date); | 879 var day = MakeDay(YearFromTime(t), MonthFromTime(t), date); |
880 return %_SetValueOf(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t))))); | 880 return SET_DATE_VALUE(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t))))); |
881 } | 881 } |
882 | 882 |
883 | 883 |
884 // ECMA 262 - 15.9.5.37 | 884 // ECMA 262 - 15.9.5.37 |
885 function DateSetUTCDate(date) { | 885 function DateSetUTCDate(date) { |
886 var t = DATE_VALUE(this); | 886 var t = DATE_VALUE(this); |
887 date = ToNumber(date); | 887 date = ToNumber(date); |
888 var day = MakeDay(YearFromTime(t), MonthFromTime(t), date); | 888 var day = MakeDay(YearFromTime(t), MonthFromTime(t), date); |
889 return %_SetValueOf(this, TimeClip(MakeDate(day, TimeWithinDay(t)))); | 889 return SET_DATE_VALUE(this, TimeClip(MakeDate(day, TimeWithinDay(t)))); |
890 } | 890 } |
891 | 891 |
892 | 892 |
893 // ECMA 262 - 15.9.5.38 | 893 // ECMA 262 - 15.9.5.38 |
894 function DateSetMonth(month, date) { | 894 function DateSetMonth(month, date) { |
895 var t = LocalTime(DATE_VALUE(this)); | 895 var t = LocalTime(DATE_VALUE(this)); |
896 month = ToNumber(month); | 896 month = ToNumber(month); |
897 date = %_ArgumentsLength() < 2 ? NAN_OR_DATE_FROM_TIME(t) : ToNumber(date); | 897 date = %_ArgumentsLength() < 2 ? NAN_OR_DATE_FROM_TIME(t) : ToNumber(date); |
898 var day = MakeDay(YearFromTime(t), month, date); | 898 var day = MakeDay(YearFromTime(t), month, date); |
899 return %_SetValueOf(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t))))); | 899 return SET_DATE_VALUE(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t))))); |
900 } | 900 } |
901 | 901 |
902 | 902 |
903 // ECMA 262 - 15.9.5.39 | 903 // ECMA 262 - 15.9.5.39 |
904 function DateSetUTCMonth(month, date) { | 904 function DateSetUTCMonth(month, date) { |
905 var t = DATE_VALUE(this); | 905 var t = DATE_VALUE(this); |
906 month = ToNumber(month); | 906 month = ToNumber(month); |
907 date = %_ArgumentsLength() < 2 ? NAN_OR_DATE_FROM_TIME(t) : ToNumber(date); | 907 date = %_ArgumentsLength() < 2 ? NAN_OR_DATE_FROM_TIME(t) : ToNumber(date); |
908 var day = MakeDay(YearFromTime(t), month, date); | 908 var day = MakeDay(YearFromTime(t), month, date); |
909 return %_SetValueOf(this, TimeClip(MakeDate(day, TimeWithinDay(t)))); | 909 return SET_DATE_VALUE(this, TimeClip(MakeDate(day, TimeWithinDay(t)))); |
910 } | 910 } |
911 | 911 |
912 | 912 |
913 // ECMA 262 - 15.9.5.40 | 913 // ECMA 262 - 15.9.5.40 |
914 function DateSetFullYear(year, month, date) { | 914 function DateSetFullYear(year, month, date) { |
915 var t = DATE_VALUE(this); | 915 var t = DATE_VALUE(this); |
916 t = NUMBER_IS_NAN(t) ? 0 : LocalTimeNoCheck(t); | 916 t = NUMBER_IS_NAN(t) ? 0 : LocalTimeNoCheck(t); |
917 year = ToNumber(year); | 917 year = ToNumber(year); |
918 var argc = %_ArgumentsLength(); | 918 var argc = %_ArgumentsLength(); |
919 month = argc < 2 ? MonthFromTime(t) : ToNumber(month); | 919 month = argc < 2 ? MonthFromTime(t) : ToNumber(month); |
920 date = argc < 3 ? DateFromTime(t) : ToNumber(date); | 920 date = argc < 3 ? DateFromTime(t) : ToNumber(date); |
921 var day = MakeDay(year, month, date); | 921 var day = MakeDay(year, month, date); |
922 return %_SetValueOf(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t))))); | 922 return SET_DATE_VALUE(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t))))); |
923 } | 923 } |
924 | 924 |
925 | 925 |
926 // ECMA 262 - 15.9.5.41 | 926 // ECMA 262 - 15.9.5.41 |
927 function DateSetUTCFullYear(year, month, date) { | 927 function DateSetUTCFullYear(year, month, date) { |
928 var t = DATE_VALUE(this); | 928 var t = DATE_VALUE(this); |
929 if (NUMBER_IS_NAN(t)) t = 0; | 929 if (NUMBER_IS_NAN(t)) t = 0; |
930 var argc = %_ArgumentsLength(); | 930 var argc = %_ArgumentsLength(); |
931 year = ToNumber(year); | 931 year = ToNumber(year); |
932 month = argc < 2 ? MonthFromTime(t) : ToNumber(month); | 932 month = argc < 2 ? MonthFromTime(t) : ToNumber(month); |
933 date = argc < 3 ? DateFromTime(t) : ToNumber(date); | 933 date = argc < 3 ? DateFromTime(t) : ToNumber(date); |
934 var day = MakeDay(year, month, date); | 934 var day = MakeDay(year, month, date); |
935 return %_SetValueOf(this, TimeClip(MakeDate(day, TimeWithinDay(t)))); | 935 return SET_DATE_VALUE(this, TimeClip(MakeDate(day, TimeWithinDay(t)))); |
936 } | 936 } |
937 | 937 |
938 | 938 |
939 // ECMA 262 - 15.9.5.42 | 939 // ECMA 262 - 15.9.5.42 |
940 function DateToUTCString() { | 940 function DateToUTCString() { |
941 var t = DATE_VALUE(this); | 941 var t = DATE_VALUE(this); |
942 if (NUMBER_IS_NAN(t)) return kInvalidDate; | 942 if (NUMBER_IS_NAN(t)) return kInvalidDate; |
943 // Return UTC string of the form: Sat, 31 Jan 1970 23:00:00 GMT | 943 // Return UTC string of the form: Sat, 31 Jan 1970 23:00:00 GMT |
944 return WeekDays[WeekDay(t)] + ', ' | 944 return WeekDays[WeekDay(t)] + ', ' |
945 + TwoDigitString(DateFromTime(t)) + ' ' | 945 + TwoDigitString(DateFromTime(t)) + ' ' |
946 + Months[MonthFromTime(t)] + ' ' | 946 + Months[MonthFromTime(t)] + ' ' |
947 + YearFromTime(t) + ' ' | 947 + YearFromTime(t) + ' ' |
948 + TimeString(t) + ' GMT'; | 948 + TimeString(t) + ' GMT'; |
949 } | 949 } |
950 | 950 |
951 | 951 |
952 // ECMA 262 - B.2.4 | 952 // ECMA 262 - B.2.4 |
953 function DateGetYear() { | 953 function DateGetYear() { |
954 var t = DATE_VALUE(this); | 954 var t = DATE_VALUE(this); |
955 if (NUMBER_IS_NAN(t)) return $NaN; | 955 if (NUMBER_IS_NAN(t)) return $NaN; |
956 return YearFromTime(LocalTimeNoCheck(t)) - 1900; | 956 return YearFromTime(LocalTimeNoCheck(t)) - 1900; |
957 } | 957 } |
958 | 958 |
959 | 959 |
960 // ECMA 262 - B.2.5 | 960 // ECMA 262 - B.2.5 |
961 function DateSetYear(year) { | 961 function DateSetYear(year) { |
962 var t = LocalTime(DATE_VALUE(this)); | 962 var t = LocalTime(DATE_VALUE(this)); |
963 if (NUMBER_IS_NAN(t)) t = 0; | 963 if (NUMBER_IS_NAN(t)) t = 0; |
964 year = ToNumber(year); | 964 year = ToNumber(year); |
965 if (NUMBER_IS_NAN(year)) return %_SetValueOf(this, $NaN); | 965 if (NUMBER_IS_NAN(year)) return SET_DATE_VALUE(this, $NaN); |
966 year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99) | 966 year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99) |
967 ? 1900 + TO_INTEGER(year) : year; | 967 ? 1900 + TO_INTEGER(year) : year; |
968 var day = MakeDay(year, MonthFromTime(t), DateFromTime(t)); | 968 var day = MakeDay(year, MonthFromTime(t), DateFromTime(t)); |
969 return %_SetValueOf(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t))))); | 969 return SET_DATE_VALUE(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t))))); |
970 } | 970 } |
971 | 971 |
972 | 972 |
973 // ECMA 262 - B.2.6 | 973 // ECMA 262 - B.2.6 |
974 // | 974 // |
975 // Notice that this does not follow ECMA 262 completely. ECMA 262 | 975 // Notice that this does not follow ECMA 262 completely. ECMA 262 |
976 // says that toGMTString should be the same Function object as | 976 // says that toGMTString should be the same Function object as |
977 // toUTCString. JSC does not do this, so for compatibility we do not | 977 // toUTCString. JSC does not do this, so for compatibility we do not |
978 // do that either. Instead, we create a new function whose name | 978 // do that either. Instead, we create a new function whose name |
979 // property will return toGMTString. | 979 // property will return toGMTString. |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1117 "toGMTString", DateToGMTString, | 1117 "toGMTString", DateToGMTString, |
1118 "toUTCString", DateToUTCString, | 1118 "toUTCString", DateToUTCString, |
1119 "getYear", DateGetYear, | 1119 "getYear", DateGetYear, |
1120 "setYear", DateSetYear, | 1120 "setYear", DateSetYear, |
1121 "toISOString", DateToISOString, | 1121 "toISOString", DateToISOString, |
1122 "toJSON", DateToJSON | 1122 "toJSON", DateToJSON |
1123 )); | 1123 )); |
1124 } | 1124 } |
1125 | 1125 |
1126 SetUpDate(); | 1126 SetUpDate(); |
OLD | NEW |