| 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 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 |