Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: src/date.js

Issue 1075016: Fix bug http://code.google.com/p/v8/issues/detail?id=659. Move the limits che... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | src/macros.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 } 216 }
217 217
218 var local_time_offset = %DateLocalTimeOffset(); 218 var local_time_offset = %DateLocalTimeOffset();
219 219
220 function LocalTime(time) { 220 function LocalTime(time) {
221 if (NUMBER_IS_NAN(time)) return time; 221 if (NUMBER_IS_NAN(time)) return time;
222 return time + local_time_offset + DaylightSavingsOffset(time); 222 return time + local_time_offset + DaylightSavingsOffset(time);
223 } 223 }
224 224
225 function LocalTimeNoCheck(time) { 225 function LocalTimeNoCheck(time) {
226 if (time < -MAX_TIME_MS || time > MAX_TIME_MS) {
227 return $NaN;
228 }
229
226 // Inline the DST offset cache checks for speed. 230 // Inline the DST offset cache checks for speed.
227 var cache = DST_offset_cache; 231 var cache = DST_offset_cache;
228 if (cache.start <= time && time <= cache.end) { 232 if (cache.start <= time && time <= cache.end) {
229 var dst_offset = cache.offset; 233 var dst_offset = cache.offset;
230 } else { 234 } else {
231 var dst_offset = DaylightSavingsOffset(time); 235 var dst_offset = DaylightSavingsOffset(time);
232 } 236 }
233 return time + local_time_offset + dst_offset; 237 return time + local_time_offset + dst_offset;
234 } 238 }
235 239
(...skipping 22 matching lines...) Expand all
258 function TimeInYear(year) { 262 function TimeInYear(year) {
259 return DaysInYear(year) * msPerDay; 263 return DaysInYear(year) * msPerDay;
260 } 264 }
261 265
262 266
263 var ymd_from_time_cache = [$NaN, $NaN, $NaN]; 267 var ymd_from_time_cache = [$NaN, $NaN, $NaN];
264 var ymd_from_time_cached_time = $NaN; 268 var ymd_from_time_cached_time = $NaN;
265 269
266 function YearFromTime(t) { 270 function YearFromTime(t) {
267 if (t !== ymd_from_time_cached_time) { 271 if (t !== ymd_from_time_cached_time) {
268 // Limits according to ECMA 262 15.9.1.1 272 if (!$isFinite(t)) {
269 if (!$isFinite(t) || t < -8640000000000000 || t > 8640000000000000) {
270 return $NaN; 273 return $NaN;
271 } 274 }
272 275
273 %DateYMDFromTime(t, ymd_from_time_cache); 276 %DateYMDFromTime(t, ymd_from_time_cache);
274 ymd_from_time_cached_time = t 277 ymd_from_time_cached_time = t
275 } 278 }
276 279
277 return ymd_from_time_cache[0]; 280 return ymd_from_time_cache[0];
278 } 281 }
279 282
280 function MonthFromTime(t) { 283 function MonthFromTime(t) {
281 if (t !== ymd_from_time_cached_time) { 284 if (t !== ymd_from_time_cached_time) {
282 // Limits according to ECMA 262 15.9.1.1 285 if (!$isFinite(t)) {
283 if (!$isFinite(t) || t < -8640000000000000 || t > 8640000000000000) {
284 return $NaN; 286 return $NaN;
285 } 287 }
286 %DateYMDFromTime(t, ymd_from_time_cache); 288 %DateYMDFromTime(t, ymd_from_time_cache);
287 ymd_from_time_cached_time = t 289 ymd_from_time_cached_time = t
288 } 290 }
289 291
290 return ymd_from_time_cache[1]; 292 return ymd_from_time_cache[1];
291 } 293 }
292 294
293 function DateFromTime(t) { 295 function DateFromTime(t) {
294 if (t !== ymd_from_time_cached_time) { 296 if (t !== ymd_from_time_cached_time) {
295 // Limits according to ECMA 262 15.9.1.1 297 if (!$isFinite(t)) {
296 if (!$isFinite(t) || t < -8640000000000000 || t > 8640000000000000) {
297 return $NaN; 298 return $NaN;
298 } 299 }
299 300
300 %DateYMDFromTime(t, ymd_from_time_cache); 301 %DateYMDFromTime(t, ymd_from_time_cache);
301 ymd_from_time_cached_time = t 302 ymd_from_time_cached_time = t
302 } 303 }
303 304
304 return ymd_from_time_cache[2]; 305 return ymd_from_time_cache[2];
305 } 306 }
306 307
(...skipping 773 matching lines...) Expand 10 before | Expand all | Expand 10 after
1080 "toGMTString", DateToGMTString, 1081 "toGMTString", DateToGMTString,
1081 "toUTCString", DateToUTCString, 1082 "toUTCString", DateToUTCString,
1082 "getYear", DateGetYear, 1083 "getYear", DateGetYear,
1083 "setYear", DateSetYear, 1084 "setYear", DateSetYear,
1084 "toISOString", DateToISOString, 1085 "toISOString", DateToISOString,
1085 "toJSON", DateToJSON 1086 "toJSON", DateToJSON
1086 )); 1087 ));
1087 } 1088 }
1088 1089
1089 SetupDate(); 1090 SetupDate();
OLDNEW
« no previous file with comments | « no previous file | src/macros.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698