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

Side by Side Diff: src/date.js

Issue 1384443002: [es6] Fix missing bits for full @@toPrimitive support. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Remove useless cctest. Created 5 years, 2 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
OLDNEW
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 var $createDate; 5 var $createDate;
6 6
7 // ------------------------------------------------------------------- 7 // -------------------------------------------------------------------
8 8
9 (function(global, utils) { 9 (function(global, utils) {
10 10
11 "use strict"; 11 "use strict";
12 12
13 %CheckIsBootstrapping(); 13 %CheckIsBootstrapping();
14 14
15 // ------------------------------------------------------------------- 15 // -------------------------------------------------------------------
16 // Imports 16 // Imports
17 17
18 var GlobalDate = global.Date; 18 var GlobalDate = global.Date;
19 var GlobalObject = global.Object; 19 var GlobalObject = global.Object;
20 var InternalArray = utils.InternalArray; 20 var InternalArray = utils.InternalArray;
21 var IsFinite; 21 var IsFinite;
22 var MathAbs; 22 var MathAbs;
23 var MathFloor; 23 var MathFloor;
24 var ToNumber;
25 24
26 utils.Import(function(from) { 25 utils.Import(function(from) {
27 IsFinite = from.IsFinite; 26 IsFinite = from.IsFinite;
28 MathAbs = from.MathAbs; 27 MathAbs = from.MathAbs;
29 MathFloor = from.MathFloor; 28 MathFloor = from.MathFloor;
30 ToNumber = from.ToNumber;
31 }); 29 });
32 30
33 // ------------------------------------------------------------------- 31 // -------------------------------------------------------------------
34 32
35 // This file contains date support implemented in JavaScript. 33 // This file contains date support implemented in JavaScript.
36 34
37 var timezone_cache_time = NAN; 35 var timezone_cache_time = NAN;
38 var timezone_cache_timezone; 36 var timezone_cache_timezone;
39 37
40 function LocalTimezone(t) { 38 function LocalTimezone(t) {
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 cache.time = value; 159 cache.time = value;
162 cache.string = year; 160 cache.string = year;
163 } 161 }
164 } 162 }
165 163
166 } else if (IS_DATE(year)) { 164 } else if (IS_DATE(year)) {
167 value = UTC_DATE_VALUE(year); 165 value = UTC_DATE_VALUE(year);
168 166
169 } else { 167 } else {
170 var time = TO_PRIMITIVE(year); 168 var time = TO_PRIMITIVE(year);
171 value = IS_STRING(time) ? DateParse(time) : ToNumber(time); 169 value = IS_STRING(time) ? DateParse(time) : TO_NUMBER(time);
172 } 170 }
173 SET_UTC_DATE_VALUE(this, value); 171 SET_UTC_DATE_VALUE(this, value);
174 } else { 172 } else {
175 year = ToNumber(year); 173 year = TO_NUMBER(year);
176 month = ToNumber(month); 174 month = TO_NUMBER(month);
177 date = argc > 2 ? ToNumber(date) : 1; 175 date = argc > 2 ? TO_NUMBER(date) : 1;
178 hours = argc > 3 ? ToNumber(hours) : 0; 176 hours = argc > 3 ? TO_NUMBER(hours) : 0;
179 minutes = argc > 4 ? ToNumber(minutes) : 0; 177 minutes = argc > 4 ? TO_NUMBER(minutes) : 0;
180 seconds = argc > 5 ? ToNumber(seconds) : 0; 178 seconds = argc > 5 ? TO_NUMBER(seconds) : 0;
181 ms = argc > 6 ? ToNumber(ms) : 0; 179 ms = argc > 6 ? TO_NUMBER(ms) : 0;
182 year = (!NUMBER_IS_NAN(year) && 180 year = (!NUMBER_IS_NAN(year) &&
183 0 <= TO_INTEGER(year) && 181 0 <= TO_INTEGER(year) &&
184 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; 182 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year;
185 var day = MakeDay(year, month, date); 183 var day = MakeDay(year, month, date);
186 var time = MakeTime(hours, minutes, seconds, ms); 184 var time = MakeTime(hours, minutes, seconds, ms);
187 value = MakeDate(day, time); 185 value = MakeDate(day, time);
188 SET_LOCAL_DATE_VALUE(this, value); 186 SET_LOCAL_DATE_VALUE(this, value);
189 } 187 }
190 } 188 }
191 189
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 if (IS_NULL(arr[7])) { 274 if (IS_NULL(arr[7])) {
277 return TimeClip(UTC(date)); 275 return TimeClip(UTC(date));
278 } else { 276 } else {
279 return TimeClip(date - arr[7] * 1000); 277 return TimeClip(date - arr[7] * 1000);
280 } 278 }
281 } 279 }
282 280
283 281
284 // ECMA 262 - 15.9.4.3 282 // ECMA 262 - 15.9.4.3
285 function DateUTC(year, month, date, hours, minutes, seconds, ms) { 283 function DateUTC(year, month, date, hours, minutes, seconds, ms) {
286 year = ToNumber(year); 284 year = TO_NUMBER(year);
287 month = ToNumber(month); 285 month = TO_NUMBER(month);
288 var argc = %_ArgumentsLength(); 286 var argc = %_ArgumentsLength();
289 date = argc > 2 ? ToNumber(date) : 1; 287 date = argc > 2 ? TO_NUMBER(date) : 1;
290 hours = argc > 3 ? ToNumber(hours) : 0; 288 hours = argc > 3 ? TO_NUMBER(hours) : 0;
291 minutes = argc > 4 ? ToNumber(minutes) : 0; 289 minutes = argc > 4 ? TO_NUMBER(minutes) : 0;
292 seconds = argc > 5 ? ToNumber(seconds) : 0; 290 seconds = argc > 5 ? TO_NUMBER(seconds) : 0;
293 ms = argc > 6 ? ToNumber(ms) : 0; 291 ms = argc > 6 ? TO_NUMBER(ms) : 0;
294 year = (!NUMBER_IS_NAN(year) && 292 year = (!NUMBER_IS_NAN(year) &&
295 0 <= TO_INTEGER(year) && 293 0 <= TO_INTEGER(year) &&
296 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; 294 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year;
297 var day = MakeDay(year, month, date); 295 var day = MakeDay(year, month, date);
298 var time = MakeTime(hours, minutes, seconds, ms); 296 var time = MakeTime(hours, minutes, seconds, ms);
299 return TimeClip(MakeDate(day, time)); 297 return TimeClip(MakeDate(day, time));
300 } 298 }
301 299
302 300
303 // ECMA 262 - 15.9.4.4 301 // ECMA 262 - 15.9.4.4
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
489 // ECMA 262 - 15.9.5.26 487 // ECMA 262 - 15.9.5.26
490 function DateGetTimezoneOffset() { 488 function DateGetTimezoneOffset() {
491 CHECK_DATE(this); 489 CHECK_DATE(this);
492 return TIMEZONE_OFFSET(this); 490 return TIMEZONE_OFFSET(this);
493 } 491 }
494 492
495 493
496 // ECMA 262 - 15.9.5.27 494 // ECMA 262 - 15.9.5.27
497 function DateSetTime(ms) { 495 function DateSetTime(ms) {
498 CHECK_DATE(this); 496 CHECK_DATE(this);
499 SET_UTC_DATE_VALUE(this, ToNumber(ms)); 497 SET_UTC_DATE_VALUE(this, TO_NUMBER(ms));
500 return UTC_DATE_VALUE(this); 498 return UTC_DATE_VALUE(this);
501 } 499 }
502 500
503 501
504 // ECMA 262 - 15.9.5.28 502 // ECMA 262 - 15.9.5.28
505 function DateSetMilliseconds(ms) { 503 function DateSetMilliseconds(ms) {
506 CHECK_DATE(this); 504 CHECK_DATE(this);
507 var t = LOCAL_DATE_VALUE(this); 505 var t = LOCAL_DATE_VALUE(this);
508 ms = ToNumber(ms); 506 ms = TO_NUMBER(ms);
509 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms); 507 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms);
510 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); 508 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time));
511 } 509 }
512 510
513 511
514 // ECMA 262 - 15.9.5.29 512 // ECMA 262 - 15.9.5.29
515 function DateSetUTCMilliseconds(ms) { 513 function DateSetUTCMilliseconds(ms) {
516 CHECK_DATE(this); 514 CHECK_DATE(this);
517 var t = UTC_DATE_VALUE(this); 515 var t = UTC_DATE_VALUE(this);
518 ms = ToNumber(ms); 516 ms = TO_NUMBER(ms);
519 var time = MakeTime(UTC_HOUR(this), 517 var time = MakeTime(UTC_HOUR(this),
520 UTC_MIN(this), 518 UTC_MIN(this),
521 UTC_SEC(this), 519 UTC_SEC(this),
522 ms); 520 ms);
523 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); 521 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time));
524 } 522 }
525 523
526 524
527 // ECMA 262 - 15.9.5.30 525 // ECMA 262 - 15.9.5.30
528 function DateSetSeconds(sec, ms) { 526 function DateSetSeconds(sec, ms) {
529 CHECK_DATE(this); 527 CHECK_DATE(this);
530 var t = LOCAL_DATE_VALUE(this); 528 var t = LOCAL_DATE_VALUE(this);
531 sec = ToNumber(sec); 529 sec = TO_NUMBER(sec);
532 ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : ToNumber(ms); 530 ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : TO_NUMBER(ms);
533 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), sec, ms); 531 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), sec, ms);
534 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); 532 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time));
535 } 533 }
536 534
537 535
538 // ECMA 262 - 15.9.5.31 536 // ECMA 262 - 15.9.5.31
539 function DateSetUTCSeconds(sec, ms) { 537 function DateSetUTCSeconds(sec, ms) {
540 CHECK_DATE(this); 538 CHECK_DATE(this);
541 var t = UTC_DATE_VALUE(this); 539 var t = UTC_DATE_VALUE(this);
542 sec = ToNumber(sec); 540 sec = TO_NUMBER(sec);
543 ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : ToNumber(ms); 541 ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : TO_NUMBER(ms);
544 var time = MakeTime(UTC_HOUR(this), UTC_MIN(this), sec, ms); 542 var time = MakeTime(UTC_HOUR(this), UTC_MIN(this), sec, ms);
545 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); 543 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time));
546 } 544 }
547 545
548 546
549 // ECMA 262 - 15.9.5.33 547 // ECMA 262 - 15.9.5.33
550 function DateSetMinutes(min, sec, ms) { 548 function DateSetMinutes(min, sec, ms) {
551 CHECK_DATE(this); 549 CHECK_DATE(this);
552 var t = LOCAL_DATE_VALUE(this); 550 var t = LOCAL_DATE_VALUE(this);
553 min = ToNumber(min); 551 min = TO_NUMBER(min);
554 var argc = %_ArgumentsLength(); 552 var argc = %_ArgumentsLength();
555 sec = argc < 2 ? LOCAL_SEC(this) : ToNumber(sec); 553 sec = argc < 2 ? LOCAL_SEC(this) : TO_NUMBER(sec);
556 ms = argc < 3 ? LOCAL_MS(this) : ToNumber(ms); 554 ms = argc < 3 ? LOCAL_MS(this) : TO_NUMBER(ms);
557 var time = MakeTime(LOCAL_HOUR(this), min, sec, ms); 555 var time = MakeTime(LOCAL_HOUR(this), min, sec, ms);
558 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); 556 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time));
559 } 557 }
560 558
561 559
562 // ECMA 262 - 15.9.5.34 560 // ECMA 262 - 15.9.5.34
563 function DateSetUTCMinutes(min, sec, ms) { 561 function DateSetUTCMinutes(min, sec, ms) {
564 CHECK_DATE(this); 562 CHECK_DATE(this);
565 var t = UTC_DATE_VALUE(this); 563 var t = UTC_DATE_VALUE(this);
566 min = ToNumber(min); 564 min = TO_NUMBER(min);
567 var argc = %_ArgumentsLength(); 565 var argc = %_ArgumentsLength();
568 sec = argc < 2 ? UTC_SEC(this) : ToNumber(sec); 566 sec = argc < 2 ? UTC_SEC(this) : TO_NUMBER(sec);
569 ms = argc < 3 ? UTC_MS(this) : ToNumber(ms); 567 ms = argc < 3 ? UTC_MS(this) : TO_NUMBER(ms);
570 var time = MakeTime(UTC_HOUR(this), min, sec, ms); 568 var time = MakeTime(UTC_HOUR(this), min, sec, ms);
571 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); 569 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time));
572 } 570 }
573 571
574 572
575 // ECMA 262 - 15.9.5.35 573 // ECMA 262 - 15.9.5.35
576 function DateSetHours(hour, min, sec, ms) { 574 function DateSetHours(hour, min, sec, ms) {
577 CHECK_DATE(this); 575 CHECK_DATE(this);
578 var t = LOCAL_DATE_VALUE(this); 576 var t = LOCAL_DATE_VALUE(this);
579 hour = ToNumber(hour); 577 hour = TO_NUMBER(hour);
580 var argc = %_ArgumentsLength(); 578 var argc = %_ArgumentsLength();
581 min = argc < 2 ? LOCAL_MIN(this) : ToNumber(min); 579 min = argc < 2 ? LOCAL_MIN(this) : TO_NUMBER(min);
582 sec = argc < 3 ? LOCAL_SEC(this) : ToNumber(sec); 580 sec = argc < 3 ? LOCAL_SEC(this) : TO_NUMBER(sec);
583 ms = argc < 4 ? LOCAL_MS(this) : ToNumber(ms); 581 ms = argc < 4 ? LOCAL_MS(this) : TO_NUMBER(ms);
584 var time = MakeTime(hour, min, sec, ms); 582 var time = MakeTime(hour, min, sec, ms);
585 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); 583 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time));
586 } 584 }
587 585
588 586
589 // ECMA 262 - 15.9.5.34 587 // ECMA 262 - 15.9.5.34
590 function DateSetUTCHours(hour, min, sec, ms) { 588 function DateSetUTCHours(hour, min, sec, ms) {
591 CHECK_DATE(this); 589 CHECK_DATE(this);
592 var t = UTC_DATE_VALUE(this); 590 var t = UTC_DATE_VALUE(this);
593 hour = ToNumber(hour); 591 hour = TO_NUMBER(hour);
594 var argc = %_ArgumentsLength(); 592 var argc = %_ArgumentsLength();
595 min = argc < 2 ? UTC_MIN(this) : ToNumber(min); 593 min = argc < 2 ? UTC_MIN(this) : TO_NUMBER(min);
596 sec = argc < 3 ? UTC_SEC(this) : ToNumber(sec); 594 sec = argc < 3 ? UTC_SEC(this) : TO_NUMBER(sec);
597 ms = argc < 4 ? UTC_MS(this) : ToNumber(ms); 595 ms = argc < 4 ? UTC_MS(this) : TO_NUMBER(ms);
598 var time = MakeTime(hour, min, sec, ms); 596 var time = MakeTime(hour, min, sec, ms);
599 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); 597 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time));
600 } 598 }
601 599
602 600
603 // ECMA 262 - 15.9.5.36 601 // ECMA 262 - 15.9.5.36
604 function DateSetDate(date) { 602 function DateSetDate(date) {
605 CHECK_DATE(this); 603 CHECK_DATE(this);
606 var t = LOCAL_DATE_VALUE(this); 604 var t = LOCAL_DATE_VALUE(this);
607 date = ToNumber(date); 605 date = TO_NUMBER(date);
608 var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date); 606 var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date);
609 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); 607 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this)));
610 } 608 }
611 609
612 610
613 // ECMA 262 - 15.9.5.37 611 // ECMA 262 - 15.9.5.37
614 function DateSetUTCDate(date) { 612 function DateSetUTCDate(date) {
615 CHECK_DATE(this); 613 CHECK_DATE(this);
616 var t = UTC_DATE_VALUE(this); 614 var t = UTC_DATE_VALUE(this);
617 date = ToNumber(date); 615 date = TO_NUMBER(date);
618 var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date); 616 var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date);
619 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); 617 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this)));
620 } 618 }
621 619
622 620
623 // ECMA 262 - 15.9.5.38 621 // ECMA 262 - 15.9.5.38
624 function DateSetMonth(month, date) { 622 function DateSetMonth(month, date) {
625 CHECK_DATE(this); 623 CHECK_DATE(this);
626 var t = LOCAL_DATE_VALUE(this); 624 var t = LOCAL_DATE_VALUE(this);
627 month = ToNumber(month); 625 month = TO_NUMBER(month);
628 date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : ToNumber(date); 626 date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : TO_NUMBER(date);
629 var day = MakeDay(LOCAL_YEAR(this), month, date); 627 var day = MakeDay(LOCAL_YEAR(this), month, date);
630 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); 628 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this)));
631 } 629 }
632 630
633 631
634 // ECMA 262 - 15.9.5.39 632 // ECMA 262 - 15.9.5.39
635 function DateSetUTCMonth(month, date) { 633 function DateSetUTCMonth(month, date) {
636 CHECK_DATE(this); 634 CHECK_DATE(this);
637 var t = UTC_DATE_VALUE(this); 635 var t = UTC_DATE_VALUE(this);
638 month = ToNumber(month); 636 month = TO_NUMBER(month);
639 date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : ToNumber(date); 637 date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : TO_NUMBER(date);
640 var day = MakeDay(UTC_YEAR(this), month, date); 638 var day = MakeDay(UTC_YEAR(this), month, date);
641 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); 639 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this)));
642 } 640 }
643 641
644 642
645 // ECMA 262 - 15.9.5.40 643 // ECMA 262 - 15.9.5.40
646 function DateSetFullYear(year, month, date) { 644 function DateSetFullYear(year, month, date) {
647 CHECK_DATE(this); 645 CHECK_DATE(this);
648 var t = LOCAL_DATE_VALUE(this); 646 var t = LOCAL_DATE_VALUE(this);
649 year = ToNumber(year); 647 year = TO_NUMBER(year);
650 var argc = %_ArgumentsLength(); 648 var argc = %_ArgumentsLength();
651 var time ; 649 var time ;
652 if (NUMBER_IS_NAN(t)) { 650 if (NUMBER_IS_NAN(t)) {
653 month = argc < 2 ? 0 : ToNumber(month); 651 month = argc < 2 ? 0 : TO_NUMBER(month);
654 date = argc < 3 ? 1 : ToNumber(date); 652 date = argc < 3 ? 1 : TO_NUMBER(date);
655 time = 0; 653 time = 0;
656 } else { 654 } else {
657 month = argc < 2 ? LOCAL_MONTH(this) : ToNumber(month); 655 month = argc < 2 ? LOCAL_MONTH(this) : TO_NUMBER(month);
658 date = argc < 3 ? LOCAL_DAY(this) : ToNumber(date); 656 date = argc < 3 ? LOCAL_DAY(this) : TO_NUMBER(date);
659 time = LOCAL_TIME_IN_DAY(this); 657 time = LOCAL_TIME_IN_DAY(this);
660 } 658 }
661 var day = MakeDay(year, month, date); 659 var day = MakeDay(year, month, date);
662 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time)); 660 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time));
663 } 661 }
664 662
665 663
666 // ECMA 262 - 15.9.5.41 664 // ECMA 262 - 15.9.5.41
667 function DateSetUTCFullYear(year, month, date) { 665 function DateSetUTCFullYear(year, month, date) {
668 CHECK_DATE(this); 666 CHECK_DATE(this);
669 var t = UTC_DATE_VALUE(this); 667 var t = UTC_DATE_VALUE(this);
670 year = ToNumber(year); 668 year = TO_NUMBER(year);
671 var argc = %_ArgumentsLength(); 669 var argc = %_ArgumentsLength();
672 var time ; 670 var time ;
673 if (NUMBER_IS_NAN(t)) { 671 if (NUMBER_IS_NAN(t)) {
674 month = argc < 2 ? 0 : ToNumber(month); 672 month = argc < 2 ? 0 : TO_NUMBER(month);
675 date = argc < 3 ? 1 : ToNumber(date); 673 date = argc < 3 ? 1 : TO_NUMBER(date);
676 time = 0; 674 time = 0;
677 } else { 675 } else {
678 month = argc < 2 ? UTC_MONTH(this) : ToNumber(month); 676 month = argc < 2 ? UTC_MONTH(this) : TO_NUMBER(month);
679 date = argc < 3 ? UTC_DAY(this) : ToNumber(date); 677 date = argc < 3 ? UTC_DAY(this) : TO_NUMBER(date);
680 time = UTC_TIME_IN_DAY(this); 678 time = UTC_TIME_IN_DAY(this);
681 } 679 }
682 var day = MakeDay(year, month, date); 680 var day = MakeDay(year, month, date);
683 return SET_UTC_DATE_VALUE(this, MakeDate(day, time)); 681 return SET_UTC_DATE_VALUE(this, MakeDate(day, time));
684 } 682 }
685 683
686 684
687 // ECMA 262 - 15.9.5.42 685 // ECMA 262 - 15.9.5.42
688 function DateToUTCString() { 686 function DateToUTCString() {
689 CHECK_DATE(this); 687 CHECK_DATE(this);
(...skipping 11 matching lines...) Expand all
701 // ECMA 262 - B.2.4 699 // ECMA 262 - B.2.4
702 function DateGetYear() { 700 function DateGetYear() {
703 CHECK_DATE(this); 701 CHECK_DATE(this);
704 return LOCAL_YEAR(this) - 1900; 702 return LOCAL_YEAR(this) - 1900;
705 } 703 }
706 704
707 705
708 // ECMA 262 - B.2.5 706 // ECMA 262 - B.2.5
709 function DateSetYear(year) { 707 function DateSetYear(year) {
710 CHECK_DATE(this); 708 CHECK_DATE(this);
711 year = ToNumber(year); 709 year = TO_NUMBER(year);
712 if (NUMBER_IS_NAN(year)) return SET_UTC_DATE_VALUE(this, NAN); 710 if (NUMBER_IS_NAN(year)) return SET_UTC_DATE_VALUE(this, NAN);
713 year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99) 711 year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99)
714 ? 1900 + TO_INTEGER(year) : year; 712 ? 1900 + TO_INTEGER(year) : year;
715 var t = LOCAL_DATE_VALUE(this); 713 var t = LOCAL_DATE_VALUE(this);
716 var month, date, time; 714 var month, date, time;
717 if (NUMBER_IS_NAN(t)) { 715 if (NUMBER_IS_NAN(t)) {
718 month = 0; 716 month = 0;
719 date = 1; 717 date = 1;
720 time = 0; 718 time = 0;
721 } else { 719 } else {
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
876 "toUTCString", DateToUTCString, 874 "toUTCString", DateToUTCString,
877 "getYear", DateGetYear, 875 "getYear", DateGetYear,
878 "setYear", DateSetYear, 876 "setYear", DateSetYear,
879 "toISOString", DateToISOString, 877 "toISOString", DateToISOString,
880 "toJSON", DateToJSON 878 "toJSON", DateToJSON
881 ]); 879 ]);
882 880
883 %InstallToContext(["create_date_fun", CreateDate]); 881 %InstallToContext(["create_date_fun", CreateDate]);
884 882
885 }) 883 })
OLDNEW
« no previous file with comments | « src/contexts.h ('k') | src/debug/debug.js » ('j') | test/cctest/compiler/test-run-jscalls.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698