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 // This file relies on the fact that the following declarations have been made | 5 // This file relies on the fact that the following declarations have been made |
6 // in v8natives.js: | 6 // in v8natives.js: |
7 // var $isFinite = GlobalIsFinite; | 7 // var $isFinite = GlobalIsFinite; |
8 | 8 |
9 var $createDate; | 9 var $createDate; |
10 | 10 |
11 // ------------------------------------------------------------------- | 11 // ------------------------------------------------------------------- |
12 | 12 |
13 (function(global, shared, exports) { | 13 (function(global, utils) { |
14 | 14 |
15 "use strict"; | 15 "use strict"; |
16 | 16 |
17 %CheckIsBootstrapping(); | 17 %CheckIsBootstrapping(); |
18 | 18 |
19 // ------------------------------------------------------------------- | 19 // ------------------------------------------------------------------- |
20 // Imports | 20 // Imports |
21 | 21 |
22 var GlobalDate = global.Date; | 22 var GlobalDate = global.Date; |
23 var InternalArray = shared.InternalArray; | 23 var InternalArray = utils.InternalArray; |
| 24 |
| 25 var MathAbs; |
| 26 var MathFloor; |
| 27 |
| 28 utils.Import(function(from) { |
| 29 MathAbs = from.MathAbs; |
| 30 MathFloor = from.MathFloor; |
| 31 }); |
24 | 32 |
25 // ------------------------------------------------------------------- | 33 // ------------------------------------------------------------------- |
26 | 34 |
27 // This file contains date support implemented in JavaScript. | 35 // This file contains date support implemented in JavaScript. |
28 | 36 |
29 var timezone_cache_time = NAN; | 37 var timezone_cache_time = NAN; |
30 var timezone_cache_timezone; | 38 var timezone_cache_timezone; |
31 | 39 |
32 function LocalTimezone(t) { | 40 function LocalTimezone(t) { |
33 if (NUMBER_IS_NAN(t)) return ""; | 41 if (NUMBER_IS_NAN(t)) return ""; |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 | 102 |
95 | 103 |
96 // ECMA 262 - 15.9.1.13 | 104 // ECMA 262 - 15.9.1.13 |
97 function MakeDate(day, time) { | 105 function MakeDate(day, time) { |
98 var time = day * msPerDay + time; | 106 var time = day * msPerDay + time; |
99 // Some of our runtime funtions for computing UTC(time) rely on | 107 // Some of our runtime funtions for computing UTC(time) rely on |
100 // times not being significantly larger than MAX_TIME_MS. If there | 108 // times not being significantly larger than MAX_TIME_MS. If there |
101 // is no way that the time can be within range even after UTC | 109 // is no way that the time can be within range even after UTC |
102 // conversion we return NaN immediately instead of relying on | 110 // conversion we return NaN immediately instead of relying on |
103 // TimeClip to do it. | 111 // TimeClip to do it. |
104 if ($abs(time) > MAX_TIME_BEFORE_UTC) return NAN; | 112 if (MathAbs(time) > MAX_TIME_BEFORE_UTC) return NAN; |
105 return time; | 113 return time; |
106 } | 114 } |
107 | 115 |
108 | 116 |
109 // ECMA 262 - 15.9.1.14 | 117 // ECMA 262 - 15.9.1.14 |
110 function TimeClip(time) { | 118 function TimeClip(time) { |
111 if (!$isFinite(time)) return NAN; | 119 if (!$isFinite(time)) return NAN; |
112 if ($abs(time) > MAX_TIME_MS) return NAN; | 120 if (MathAbs(time) > MAX_TIME_MS) return NAN; |
113 return TO_INTEGER(time); | 121 return TO_INTEGER(time); |
114 } | 122 } |
115 | 123 |
116 | 124 |
117 // The Date cache is used to limit the cost of parsing the same Date | 125 // The Date cache is used to limit the cost of parsing the same Date |
118 // strings over and over again. | 126 // strings over and over again. |
119 var Date_cache = { | 127 var Date_cache = { |
120 // Cached time value. | 128 // Cached time value. |
121 time: 0, | 129 time: 0, |
122 // String input for which the cached time is valid. | 130 // String input for which the cached time is valid. |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 + TwoDigitString(UTC_MIN(date)) + ':' | 237 + TwoDigitString(UTC_MIN(date)) + ':' |
230 + TwoDigitString(UTC_SEC(date)); | 238 + TwoDigitString(UTC_SEC(date)); |
231 } | 239 } |
232 | 240 |
233 | 241 |
234 function LocalTimezoneString(date) { | 242 function LocalTimezoneString(date) { |
235 var timezone = LocalTimezone(UTC_DATE_VALUE(date)); | 243 var timezone = LocalTimezone(UTC_DATE_VALUE(date)); |
236 | 244 |
237 var timezoneOffset = -TIMEZONE_OFFSET(date); | 245 var timezoneOffset = -TIMEZONE_OFFSET(date); |
238 var sign = (timezoneOffset >= 0) ? 1 : -1; | 246 var sign = (timezoneOffset >= 0) ? 1 : -1; |
239 var hours = $floor((sign * timezoneOffset)/60); | 247 var hours = MathFloor((sign * timezoneOffset)/60); |
240 var min = $floor((sign * timezoneOffset)%60); | 248 var min = MathFloor((sign * timezoneOffset)%60); |
241 var gmt = ' GMT' + ((sign == 1) ? '+' : '-') + | 249 var gmt = ' GMT' + ((sign == 1) ? '+' : '-') + |
242 TwoDigitString(hours) + TwoDigitString(min); | 250 TwoDigitString(hours) + TwoDigitString(min); |
243 return gmt + ' (' + timezone + ')'; | 251 return gmt + ' (' + timezone + ')'; |
244 } | 252 } |
245 | 253 |
246 | 254 |
247 function DatePrintString(date) { | 255 function DatePrintString(date) { |
248 return DateString(date) + ' ' + TimeString(date); | 256 return DateString(date) + ' ' + TimeString(date); |
249 } | 257 } |
250 | 258 |
(...skipping 572 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
823 "getYear", DateGetYear, | 831 "getYear", DateGetYear, |
824 "setYear", DateSetYear, | 832 "setYear", DateSetYear, |
825 "toISOString", DateToISOString, | 833 "toISOString", DateToISOString, |
826 "toJSON", DateToJSON | 834 "toJSON", DateToJSON |
827 ]); | 835 ]); |
828 | 836 |
829 // Expose to the global scope. | 837 // Expose to the global scope. |
830 $createDate = CreateDate; | 838 $createDate = CreateDate; |
831 | 839 |
832 }) | 840 }) |
OLD | NEW |