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

Side by Side Diff: src/date.js

Issue 10915062: Add checks to runtime functions. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 3 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 | « src/arm/lithium-codegen-arm.cc ('k') | src/ia32/full-codegen-ia32.cc » ('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 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 311
312 // Mozilla-specific extension. Returns the number of milliseconds 312 // Mozilla-specific extension. Returns the number of milliseconds
313 // elapsed since 1 January 1970 00:00:00 UTC. 313 // elapsed since 1 January 1970 00:00:00 UTC.
314 function DateNow() { 314 function DateNow() {
315 return %DateCurrentTime(); 315 return %DateCurrentTime();
316 } 316 }
317 317
318 318
319 // ECMA 262 - 15.9.5.2 319 // ECMA 262 - 15.9.5.2
320 function DateToString() { 320 function DateToString() {
321 CHECK_DATE(this);
322 var t = UTC_DATE_VALUE(this) 321 var t = UTC_DATE_VALUE(this)
323 if (NUMBER_IS_NAN(t)) return kInvalidDate; 322 if (NUMBER_IS_NAN(t)) return kInvalidDate;
324 var time_zone_string = LocalTimezoneString(this) 323 var time_zone_string = LocalTimezoneString(this)
325 return DatePrintString(this) + time_zone_string; 324 return DatePrintString(this) + time_zone_string;
326 } 325 }
327 326
328 327
329 // ECMA 262 - 15.9.5.3 328 // ECMA 262 - 15.9.5.3
330 function DateToDateString() { 329 function DateToDateString() {
331 CHECK_DATE(this);
332 var t = UTC_DATE_VALUE(this); 330 var t = UTC_DATE_VALUE(this);
333 if (NUMBER_IS_NAN(t)) return kInvalidDate; 331 if (NUMBER_IS_NAN(t)) return kInvalidDate;
334 return DateString(this); 332 return DateString(this);
335 } 333 }
336 334
337 335
338 // ECMA 262 - 15.9.5.4 336 // ECMA 262 - 15.9.5.4
339 function DateToTimeString() { 337 function DateToTimeString() {
340 CHECK_DATE(this);
341 var t = UTC_DATE_VALUE(this); 338 var t = UTC_DATE_VALUE(this);
342 if (NUMBER_IS_NAN(t)) return kInvalidDate; 339 if (NUMBER_IS_NAN(t)) return kInvalidDate;
343 var time_zone_string = LocalTimezoneString(this); 340 var time_zone_string = LocalTimezoneString(this);
344 return TimeString(this) + time_zone_string; 341 return TimeString(this) + time_zone_string;
345 } 342 }
346 343
347 344
348 // ECMA 262 - 15.9.5.5 345 // ECMA 262 - 15.9.5.5
349 function DateToLocaleString() { 346 function DateToLocaleString() {
350 return %_CallFunction(this, DateToString); 347 return %_CallFunction(this, DateToString);
351 } 348 }
352 349
353 350
354 // ECMA 262 - 15.9.5.6 351 // ECMA 262 - 15.9.5.6
355 function DateToLocaleDateString() { 352 function DateToLocaleDateString() {
356 CHECK_DATE(this);
357 var t = UTC_DATE_VALUE(this); 353 var t = UTC_DATE_VALUE(this);
358 if (NUMBER_IS_NAN(t)) return kInvalidDate; 354 if (NUMBER_IS_NAN(t)) return kInvalidDate;
359 return LongDateString(this); 355 return LongDateString(this);
360 } 356 }
361 357
362 358
363 // ECMA 262 - 15.9.5.7 359 // ECMA 262 - 15.9.5.7
364 function DateToLocaleTimeString() { 360 function DateToLocaleTimeString() {
365 CHECK_DATE(this);
366 var t = UTC_DATE_VALUE(this); 361 var t = UTC_DATE_VALUE(this);
367 if (NUMBER_IS_NAN(t)) return kInvalidDate; 362 if (NUMBER_IS_NAN(t)) return kInvalidDate;
368 return TimeString(this); 363 return TimeString(this);
369 } 364 }
370 365
371 366
372 // ECMA 262 - 15.9.5.8 367 // ECMA 262 - 15.9.5.8
373 function DateValueOf() { 368 function DateValueOf() {
374 CHECK_DATE(this);
375 return UTC_DATE_VALUE(this); 369 return UTC_DATE_VALUE(this);
376 } 370 }
377 371
378 372
379 // ECMA 262 - 15.9.5.9 373 // ECMA 262 - 15.9.5.9
380 function DateGetTime() { 374 function DateGetTime() {
381 CHECK_DATE(this);
382 return UTC_DATE_VALUE(this); 375 return UTC_DATE_VALUE(this);
383 } 376 }
384 377
385 378
386 // ECMA 262 - 15.9.5.10 379 // ECMA 262 - 15.9.5.10
387 function DateGetFullYear() { 380 function DateGetFullYear() {
388 CHECK_DATE(this);
389 return LOCAL_YEAR(this); 381 return LOCAL_YEAR(this);
390 } 382 }
391 383
392 384
393 // ECMA 262 - 15.9.5.11 385 // ECMA 262 - 15.9.5.11
394 function DateGetUTCFullYear() { 386 function DateGetUTCFullYear() {
395 CHECK_DATE(this);
396 return UTC_YEAR(this); 387 return UTC_YEAR(this);
397 } 388 }
398 389
399 390
400 // ECMA 262 - 15.9.5.12 391 // ECMA 262 - 15.9.5.12
401 function DateGetMonth() { 392 function DateGetMonth() {
402 CHECK_DATE(this);
403 return LOCAL_MONTH(this); 393 return LOCAL_MONTH(this);
404 } 394 }
405 395
406 396
407 // ECMA 262 - 15.9.5.13 397 // ECMA 262 - 15.9.5.13
408 function DateGetUTCMonth() { 398 function DateGetUTCMonth() {
409 CHECK_DATE(this);
410 return UTC_MONTH(this); 399 return UTC_MONTH(this);
411 } 400 }
412 401
413 402
414 // ECMA 262 - 15.9.5.14 403 // ECMA 262 - 15.9.5.14
415 function DateGetDate() { 404 function DateGetDate() {
416 CHECK_DATE(this);
417 return LOCAL_DAY(this); 405 return LOCAL_DAY(this);
418 } 406 }
419 407
420 408
421 // ECMA 262 - 15.9.5.15 409 // ECMA 262 - 15.9.5.15
422 function DateGetUTCDate() { 410 function DateGetUTCDate() {
423 CHECK_DATE(this);
424 return UTC_DAY(this); 411 return UTC_DAY(this);
425 } 412 }
426 413
427 414
428 // ECMA 262 - 15.9.5.16 415 // ECMA 262 - 15.9.5.16
429 function DateGetDay() { 416 function DateGetDay() {
430 CHECK_DATE(this);
431 return LOCAL_WEEKDAY(this); 417 return LOCAL_WEEKDAY(this);
432 } 418 }
433 419
434 420
435 // ECMA 262 - 15.9.5.17 421 // ECMA 262 - 15.9.5.17
436 function DateGetUTCDay() { 422 function DateGetUTCDay() {
437 CHECK_DATE(this);
438 return UTC_WEEKDAY(this); 423 return UTC_WEEKDAY(this);
439 } 424 }
440 425
441 426
442 // ECMA 262 - 15.9.5.18 427 // ECMA 262 - 15.9.5.18
443 function DateGetHours() { 428 function DateGetHours() {
444 CHECK_DATE(this);
445 return LOCAL_HOUR(this); 429 return LOCAL_HOUR(this);
446 } 430 }
447 431
448 432
449 // ECMA 262 - 15.9.5.19 433 // ECMA 262 - 15.9.5.19
450 function DateGetUTCHours() { 434 function DateGetUTCHours() {
451 CHECK_DATE(this);
452 return UTC_HOUR(this); 435 return UTC_HOUR(this);
453 } 436 }
454 437
455 438
456 // ECMA 262 - 15.9.5.20 439 // ECMA 262 - 15.9.5.20
457 function DateGetMinutes() { 440 function DateGetMinutes() {
458 CHECK_DATE(this);
459 return LOCAL_MIN(this); 441 return LOCAL_MIN(this);
460 } 442 }
461 443
462 444
463 // ECMA 262 - 15.9.5.21 445 // ECMA 262 - 15.9.5.21
464 function DateGetUTCMinutes() { 446 function DateGetUTCMinutes() {
465 CHECK_DATE(this);
466 return UTC_MIN(this); 447 return UTC_MIN(this);
467 } 448 }
468 449
469 450
470 // ECMA 262 - 15.9.5.22 451 // ECMA 262 - 15.9.5.22
471 function DateGetSeconds() { 452 function DateGetSeconds() {
472 CHECK_DATE(this);
473 return LOCAL_SEC(this); 453 return LOCAL_SEC(this);
474 } 454 }
475 455
476 456
477 // ECMA 262 - 15.9.5.23 457 // ECMA 262 - 15.9.5.23
478 function DateGetUTCSeconds() { 458 function DateGetUTCSeconds() {
479 CHECK_DATE(this);
480 return UTC_SEC(this) 459 return UTC_SEC(this)
481 } 460 }
482 461
483 462
484 // ECMA 262 - 15.9.5.24 463 // ECMA 262 - 15.9.5.24
485 function DateGetMilliseconds() { 464 function DateGetMilliseconds() {
486 CHECK_DATE(this);
487 return LOCAL_MS(this); 465 return LOCAL_MS(this);
488 } 466 }
489 467
490 468
491 // ECMA 262 - 15.9.5.25 469 // ECMA 262 - 15.9.5.25
492 function DateGetUTCMilliseconds() { 470 function DateGetUTCMilliseconds() {
493 CHECK_DATE(this);
494 return UTC_MS(this); 471 return UTC_MS(this);
495 } 472 }
496 473
497 474
498 // ECMA 262 - 15.9.5.26 475 // ECMA 262 - 15.9.5.26
499 function DateGetTimezoneOffset() { 476 function DateGetTimezoneOffset() {
500 CHECK_DATE(this);
501 return TIMEZONE_OFFSET(this); 477 return TIMEZONE_OFFSET(this);
502 } 478 }
503 479
504 480
505 // ECMA 262 - 15.9.5.27 481 // ECMA 262 - 15.9.5.27
506 function DateSetTime(ms) { 482 function DateSetTime(ms) {
507 CHECK_DATE(this); 483 CHECK_DATE(this);
508 SET_UTC_DATE_VALUE(this, ToNumber(ms)); 484 SET_UTC_DATE_VALUE(this, ToNumber(ms));
509 return UTC_DATE_VALUE(this); 485 return UTC_DATE_VALUE(this);
510 } 486 }
511 487
512 488
513 // ECMA 262 - 15.9.5.28 489 // ECMA 262 - 15.9.5.28
514 function DateSetMilliseconds(ms) { 490 function DateSetMilliseconds(ms) {
515 CHECK_DATE(this);
516 var t = LOCAL_DATE_VALUE(this); 491 var t = LOCAL_DATE_VALUE(this);
517 ms = ToNumber(ms); 492 ms = ToNumber(ms);
518 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms); 493 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms);
519 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); 494 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time));
520 } 495 }
521 496
522 497
523 // ECMA 262 - 15.9.5.29 498 // ECMA 262 - 15.9.5.29
524 function DateSetUTCMilliseconds(ms) { 499 function DateSetUTCMilliseconds(ms) {
525 CHECK_DATE(this);
526 var t = UTC_DATE_VALUE(this); 500 var t = UTC_DATE_VALUE(this);
527 ms = ToNumber(ms); 501 ms = ToNumber(ms);
528 var time = MakeTime(UTC_HOUR(this), 502 var time = MakeTime(UTC_HOUR(this),
529 UTC_MIN(this), 503 UTC_MIN(this),
530 UTC_SEC(this), 504 UTC_SEC(this),
531 ms); 505 ms);
532 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); 506 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time));
533 } 507 }
534 508
535 509
536 // ECMA 262 - 15.9.5.30 510 // ECMA 262 - 15.9.5.30
537 function DateSetSeconds(sec, ms) { 511 function DateSetSeconds(sec, ms) {
538 CHECK_DATE(this);
539 var t = LOCAL_DATE_VALUE(this); 512 var t = LOCAL_DATE_VALUE(this);
540 sec = ToNumber(sec); 513 sec = ToNumber(sec);
541 ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : ToNumber(ms); 514 ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : ToNumber(ms);
542 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), sec, ms); 515 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), sec, ms);
543 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); 516 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time));
544 } 517 }
545 518
546 519
547 // ECMA 262 - 15.9.5.31 520 // ECMA 262 - 15.9.5.31
548 function DateSetUTCSeconds(sec, ms) { 521 function DateSetUTCSeconds(sec, ms) {
549 CHECK_DATE(this);
550 var t = UTC_DATE_VALUE(this); 522 var t = UTC_DATE_VALUE(this);
551 sec = ToNumber(sec); 523 sec = ToNumber(sec);
552 ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : ToNumber(ms); 524 ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : ToNumber(ms);
553 var time = MakeTime(UTC_HOUR(this), UTC_MIN(this), sec, ms); 525 var time = MakeTime(UTC_HOUR(this), UTC_MIN(this), sec, ms);
554 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); 526 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time));
555 } 527 }
556 528
557 529
558 // ECMA 262 - 15.9.5.33 530 // ECMA 262 - 15.9.5.33
559 function DateSetMinutes(min, sec, ms) { 531 function DateSetMinutes(min, sec, ms) {
560 CHECK_DATE(this);
561 var t = LOCAL_DATE_VALUE(this); 532 var t = LOCAL_DATE_VALUE(this);
562 min = ToNumber(min); 533 min = ToNumber(min);
563 var argc = %_ArgumentsLength(); 534 var argc = %_ArgumentsLength();
564 sec = argc < 2 ? LOCAL_SEC(this) : ToNumber(sec); 535 sec = argc < 2 ? LOCAL_SEC(this) : ToNumber(sec);
565 ms = argc < 3 ? LOCAL_MS(this) : ToNumber(ms); 536 ms = argc < 3 ? LOCAL_MS(this) : ToNumber(ms);
566 var time = MakeTime(LOCAL_HOUR(this), min, sec, ms); 537 var time = MakeTime(LOCAL_HOUR(this), min, sec, ms);
567 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); 538 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time));
568 } 539 }
569 540
570 541
571 // ECMA 262 - 15.9.5.34 542 // ECMA 262 - 15.9.5.34
572 function DateSetUTCMinutes(min, sec, ms) { 543 function DateSetUTCMinutes(min, sec, ms) {
573 CHECK_DATE(this);
574 var t = UTC_DATE_VALUE(this); 544 var t = UTC_DATE_VALUE(this);
575 min = ToNumber(min); 545 min = ToNumber(min);
576 var argc = %_ArgumentsLength(); 546 var argc = %_ArgumentsLength();
577 sec = argc < 2 ? UTC_SEC(this) : ToNumber(sec); 547 sec = argc < 2 ? UTC_SEC(this) : ToNumber(sec);
578 ms = argc < 3 ? UTC_MS(this) : ToNumber(ms); 548 ms = argc < 3 ? UTC_MS(this) : ToNumber(ms);
579 var time = MakeTime(UTC_HOUR(this), min, sec, ms); 549 var time = MakeTime(UTC_HOUR(this), min, sec, ms);
580 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); 550 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time));
581 } 551 }
582 552
583 553
584 // ECMA 262 - 15.9.5.35 554 // ECMA 262 - 15.9.5.35
585 function DateSetHours(hour, min, sec, ms) { 555 function DateSetHours(hour, min, sec, ms) {
586 CHECK_DATE(this);
587 var t = LOCAL_DATE_VALUE(this); 556 var t = LOCAL_DATE_VALUE(this);
588 hour = ToNumber(hour); 557 hour = ToNumber(hour);
589 var argc = %_ArgumentsLength(); 558 var argc = %_ArgumentsLength();
590 min = argc < 2 ? LOCAL_MIN(this) : ToNumber(min); 559 min = argc < 2 ? LOCAL_MIN(this) : ToNumber(min);
591 sec = argc < 3 ? LOCAL_SEC(this) : ToNumber(sec); 560 sec = argc < 3 ? LOCAL_SEC(this) : ToNumber(sec);
592 ms = argc < 4 ? LOCAL_MS(this) : ToNumber(ms); 561 ms = argc < 4 ? LOCAL_MS(this) : ToNumber(ms);
593 var time = MakeTime(hour, min, sec, ms); 562 var time = MakeTime(hour, min, sec, ms);
594 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); 563 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time));
595 } 564 }
596 565
597 566
598 // ECMA 262 - 15.9.5.34 567 // ECMA 262 - 15.9.5.34
599 function DateSetUTCHours(hour, min, sec, ms) { 568 function DateSetUTCHours(hour, min, sec, ms) {
600 CHECK_DATE(this);
601 var t = UTC_DATE_VALUE(this); 569 var t = UTC_DATE_VALUE(this);
602 hour = ToNumber(hour); 570 hour = ToNumber(hour);
603 var argc = %_ArgumentsLength(); 571 var argc = %_ArgumentsLength();
604 min = argc < 2 ? UTC_MIN(this) : ToNumber(min); 572 min = argc < 2 ? UTC_MIN(this) : ToNumber(min);
605 sec = argc < 3 ? UTC_SEC(this) : ToNumber(sec); 573 sec = argc < 3 ? UTC_SEC(this) : ToNumber(sec);
606 ms = argc < 4 ? UTC_MS(this) : ToNumber(ms); 574 ms = argc < 4 ? UTC_MS(this) : ToNumber(ms);
607 var time = MakeTime(hour, min, sec, ms); 575 var time = MakeTime(hour, min, sec, ms);
608 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); 576 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time));
609 } 577 }
610 578
611 579
612 // ECMA 262 - 15.9.5.36 580 // ECMA 262 - 15.9.5.36
613 function DateSetDate(date) { 581 function DateSetDate(date) {
614 CHECK_DATE(this);
615 var t = LOCAL_DATE_VALUE(this); 582 var t = LOCAL_DATE_VALUE(this);
616 date = ToNumber(date); 583 date = ToNumber(date);
617 var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date); 584 var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date);
618 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); 585 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this)));
619 } 586 }
620 587
621 588
622 // ECMA 262 - 15.9.5.37 589 // ECMA 262 - 15.9.5.37
623 function DateSetUTCDate(date) { 590 function DateSetUTCDate(date) {
624 CHECK_DATE(this);
625 var t = UTC_DATE_VALUE(this); 591 var t = UTC_DATE_VALUE(this);
626 date = ToNumber(date); 592 date = ToNumber(date);
627 var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date); 593 var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date);
628 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); 594 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this)));
629 } 595 }
630 596
631 597
632 // ECMA 262 - 15.9.5.38 598 // ECMA 262 - 15.9.5.38
633 function DateSetMonth(month, date) { 599 function DateSetMonth(month, date) {
634 CHECK_DATE(this);
635 var t = LOCAL_DATE_VALUE(this); 600 var t = LOCAL_DATE_VALUE(this);
636 month = ToNumber(month); 601 month = ToNumber(month);
637 date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : ToNumber(date); 602 date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : ToNumber(date);
638 var day = MakeDay(LOCAL_YEAR(this), month, date); 603 var day = MakeDay(LOCAL_YEAR(this), month, date);
639 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); 604 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this)));
640 } 605 }
641 606
642 607
643 // ECMA 262 - 15.9.5.39 608 // ECMA 262 - 15.9.5.39
644 function DateSetUTCMonth(month, date) { 609 function DateSetUTCMonth(month, date) {
645 CHECK_DATE(this);
646 var t = UTC_DATE_VALUE(this); 610 var t = UTC_DATE_VALUE(this);
647 month = ToNumber(month); 611 month = ToNumber(month);
648 date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : ToNumber(date); 612 date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : ToNumber(date);
649 var day = MakeDay(UTC_YEAR(this), month, date); 613 var day = MakeDay(UTC_YEAR(this), month, date);
650 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); 614 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this)));
651 } 615 }
652 616
653 617
654 // ECMA 262 - 15.9.5.40 618 // ECMA 262 - 15.9.5.40
655 function DateSetFullYear(year, month, date) { 619 function DateSetFullYear(year, month, date) {
656 CHECK_DATE(this);
657 var t = LOCAL_DATE_VALUE(this); 620 var t = LOCAL_DATE_VALUE(this);
658 year = ToNumber(year); 621 year = ToNumber(year);
659 var argc = %_ArgumentsLength(); 622 var argc = %_ArgumentsLength();
660 var time ; 623 var time ;
661 if (NUMBER_IS_NAN(t)) { 624 if (NUMBER_IS_NAN(t)) {
662 month = argc < 2 ? 0 : ToNumber(month); 625 month = argc < 2 ? 0 : ToNumber(month);
663 date = argc < 3 ? 1 : ToNumber(date); 626 date = argc < 3 ? 1 : ToNumber(date);
664 time = 0; 627 time = 0;
665 } else { 628 } else {
666 month = argc < 2 ? LOCAL_MONTH(this) : ToNumber(month); 629 month = argc < 2 ? LOCAL_MONTH(this) : ToNumber(month);
667 date = argc < 3 ? LOCAL_DAY(this) : ToNumber(date); 630 date = argc < 3 ? LOCAL_DAY(this) : ToNumber(date);
668 time = LOCAL_TIME_IN_DAY(this); 631 time = LOCAL_TIME_IN_DAY(this);
669 } 632 }
670 var day = MakeDay(year, month, date); 633 var day = MakeDay(year, month, date);
671 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time)); 634 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time));
672 } 635 }
673 636
674 637
675 // ECMA 262 - 15.9.5.41 638 // ECMA 262 - 15.9.5.41
676 function DateSetUTCFullYear(year, month, date) { 639 function DateSetUTCFullYear(year, month, date) {
677 CHECK_DATE(this);
678 var t = UTC_DATE_VALUE(this); 640 var t = UTC_DATE_VALUE(this);
679 year = ToNumber(year); 641 year = ToNumber(year);
680 var argc = %_ArgumentsLength(); 642 var argc = %_ArgumentsLength();
681 var time ; 643 var time ;
682 if (NUMBER_IS_NAN(t)) { 644 if (NUMBER_IS_NAN(t)) {
683 month = argc < 2 ? 0 : ToNumber(month); 645 month = argc < 2 ? 0 : ToNumber(month);
684 date = argc < 3 ? 1 : ToNumber(date); 646 date = argc < 3 ? 1 : ToNumber(date);
685 time = 0; 647 time = 0;
686 } else { 648 } else {
687 month = argc < 2 ? UTC_MONTH(this) : ToNumber(month); 649 month = argc < 2 ? UTC_MONTH(this) : ToNumber(month);
688 date = argc < 3 ? UTC_DAY(this) : ToNumber(date); 650 date = argc < 3 ? UTC_DAY(this) : ToNumber(date);
689 time = UTC_TIME_IN_DAY(this); 651 time = UTC_TIME_IN_DAY(this);
690 } 652 }
691 var day = MakeDay(year, month, date); 653 var day = MakeDay(year, month, date);
692 return SET_UTC_DATE_VALUE(this, MakeDate(day, time)); 654 return SET_UTC_DATE_VALUE(this, MakeDate(day, time));
693 } 655 }
694 656
695 657
696 // ECMA 262 - 15.9.5.42 658 // ECMA 262 - 15.9.5.42
697 function DateToUTCString() { 659 function DateToUTCString() {
698 CHECK_DATE(this);
699 var t = UTC_DATE_VALUE(this); 660 var t = UTC_DATE_VALUE(this);
700 if (NUMBER_IS_NAN(t)) return kInvalidDate; 661 if (NUMBER_IS_NAN(t)) return kInvalidDate;
701 // Return UTC string of the form: Sat, 31 Jan 1970 23:00:00 GMT 662 // Return UTC string of the form: Sat, 31 Jan 1970 23:00:00 GMT
702 return WeekDays[UTC_WEEKDAY(this)] + ', ' 663 return WeekDays[UTC_WEEKDAY(this)] + ', '
703 + TwoDigitString(UTC_DAY(this)) + ' ' 664 + TwoDigitString(UTC_DAY(this)) + ' '
704 + Months[UTC_MONTH(this)] + ' ' 665 + Months[UTC_MONTH(this)] + ' '
705 + UTC_YEAR(this) + ' ' 666 + UTC_YEAR(this) + ' '
706 + TimeStringUTC(this) + ' GMT'; 667 + TimeStringUTC(this) + ' GMT';
707 } 668 }
708 669
709 670
710 // ECMA 262 - B.2.4 671 // ECMA 262 - B.2.4
711 function DateGetYear() { 672 function DateGetYear() {
712 CHECK_DATE(this);
713 return LOCAL_YEAR(this) - 1900; 673 return LOCAL_YEAR(this) - 1900;
714 } 674 }
715 675
716 676
717 // ECMA 262 - B.2.5 677 // ECMA 262 - B.2.5
718 function DateSetYear(year) { 678 function DateSetYear(year) {
719 CHECK_DATE(this); 679 CHECK_DATE(this);
720 year = ToNumber(year); 680 year = ToNumber(year);
721 if (NUMBER_IS_NAN(year)) return SET_UTC_DATE_VALUE(this, $NaN); 681 if (NUMBER_IS_NAN(year)) return SET_UTC_DATE_VALUE(this, $NaN);
722 year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99) 682 year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99)
(...skipping 27 matching lines...) Expand all
750 710
751 711
752 function PadInt(n, digits) { 712 function PadInt(n, digits) {
753 if (digits == 1) return n; 713 if (digits == 1) return n;
754 return n < MathPow(10, digits - 1) ? '0' + PadInt(n, digits - 1) : n; 714 return n < MathPow(10, digits - 1) ? '0' + PadInt(n, digits - 1) : n;
755 } 715 }
756 716
757 717
758 // ECMA 262 - 15.9.5.43 718 // ECMA 262 - 15.9.5.43
759 function DateToISOString() { 719 function DateToISOString() {
760 CHECK_DATE(this);
761 var t = UTC_DATE_VALUE(this); 720 var t = UTC_DATE_VALUE(this);
762 if (NUMBER_IS_NAN(t)) throw MakeRangeError("invalid_time_value", []); 721 if (NUMBER_IS_NAN(t)) throw MakeRangeError("invalid_time_value", []);
763 var year = this.getUTCFullYear(); 722 var year = this.getUTCFullYear();
764 var year_string; 723 var year_string;
765 if (year >= 0 && year <= 9999) { 724 if (year >= 0 && year <= 9999) {
766 year_string = PadInt(year, 4); 725 year_string = PadInt(year, 4);
767 } else { 726 } else {
768 if (year < 0) { 727 if (year < 0) {
769 year_string = "-" + PadInt(-year, 6); 728 year_string = "-" + PadInt(-year, 6);
770 } else { 729 } else {
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
864 "toGMTString", DateToGMTString, 823 "toGMTString", DateToGMTString,
865 "toUTCString", DateToUTCString, 824 "toUTCString", DateToUTCString,
866 "getYear", DateGetYear, 825 "getYear", DateGetYear,
867 "setYear", DateSetYear, 826 "setYear", DateSetYear,
868 "toISOString", DateToISOString, 827 "toISOString", DateToISOString,
869 "toJSON", DateToJSON 828 "toJSON", DateToJSON
870 )); 829 ));
871 } 830 }
872 831
873 SetUpDate(); 832 SetUpDate();
OLDNEW
« no previous file with comments | « src/arm/lithium-codegen-arm.cc ('k') | src/ia32/full-codegen-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698