~ubuntu-branches/ubuntu/precise/nodejs/precise

« back to all changes in this revision

Viewing changes to deps/v8/src/date.js

  • Committer: Bazaar Package Importer
  • Author(s): Jérémy Lal
  • Date: 2010-08-20 11:49:04 UTC
  • mfrom: (7.1.6 sid)
  • Revision ID: james.westby@ubuntu.com-20100820114904-lz22w6fkth7yh179
Tags: 0.2.0-1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
347
347
function MakeDay(year, month, date) {
348
348
  if (!$isFinite(year) || !$isFinite(month) || !$isFinite(date)) return $NaN;
349
349
 
350
 
  year = TO_INTEGER(year);
351
 
  month = TO_INTEGER(month);
352
 
  date = TO_INTEGER(date);
 
350
  // Convert to integer and map -0 to 0.
 
351
  year = TO_INTEGER_MAP_MINUS_ZERO(year);
 
352
  month = TO_INTEGER_MAP_MINUS_ZERO(month);
 
353
  date = TO_INTEGER_MAP_MINUS_ZERO(date);
353
354
 
354
355
  if (year < kMinYear || year > kMaxYear ||
355
356
      month < kMinMonth || month > kMaxMonth ||
452
453
});
453
454
 
454
455
 
455
 
// Helper functions.
456
 
function GetTimeFrom(aDate) {
457
 
  return DATE_VALUE(aDate);
458
 
}
459
 
 
460
 
function GetMillisecondsFrom(aDate) {
461
 
  var t = DATE_VALUE(aDate);
462
 
  if (NUMBER_IS_NAN(t)) return t;
463
 
  return MS_FROM_TIME(LocalTimeNoCheck(t));
464
 
}
465
 
 
466
 
 
467
 
function GetUTCMillisecondsFrom(aDate) {
468
 
  var t = DATE_VALUE(aDate);
469
 
  if (NUMBER_IS_NAN(t)) return t;
470
 
  return MS_FROM_TIME(t);
471
 
}
472
 
 
473
 
 
474
 
function GetSecondsFrom(aDate) {
475
 
  var t = DATE_VALUE(aDate);
476
 
  if (NUMBER_IS_NAN(t)) return t;
477
 
  return SEC_FROM_TIME(LocalTimeNoCheck(t));
478
 
}
479
 
 
480
 
 
481
 
function GetUTCSecondsFrom(aDate) {
482
 
  var t = DATE_VALUE(aDate);
483
 
  if (NUMBER_IS_NAN(t)) return t;
484
 
  return SEC_FROM_TIME(t);
485
 
}
486
 
 
487
 
 
488
 
function GetMinutesFrom(aDate) {
489
 
  var t = DATE_VALUE(aDate);
490
 
  if (NUMBER_IS_NAN(t)) return t;
491
 
  return MIN_FROM_TIME(LocalTimeNoCheck(t));
492
 
}
493
 
 
494
 
 
495
 
function GetUTCMinutesFrom(aDate) {
496
 
  var t = DATE_VALUE(aDate);
497
 
  if (NUMBER_IS_NAN(t)) return t;
498
 
  return MIN_FROM_TIME(t);
499
 
}
500
 
 
501
 
 
502
 
function GetHoursFrom(aDate) {
503
 
  var t = DATE_VALUE(aDate);
504
 
  if (NUMBER_IS_NAN(t)) return t;
505
 
  return HOUR_FROM_TIME(LocalTimeNoCheck(t));
506
 
}
507
 
 
508
 
 
509
 
function GetUTCHoursFrom(aDate) {
510
 
  var t = DATE_VALUE(aDate);
511
 
  if (NUMBER_IS_NAN(t)) return t;
512
 
  return HOUR_FROM_TIME(t);
513
 
}
514
 
 
515
 
 
516
 
function GetFullYearFrom(aDate) {
517
 
  var t = DATE_VALUE(aDate);
518
 
  if (NUMBER_IS_NAN(t)) return t;
519
 
  var cache = Date_cache;
520
 
  if (cache.time === t) return cache.year;
521
 
  return YEAR_FROM_TIME(LocalTimeNoCheck(t));
522
 
}
523
 
 
524
 
 
525
 
function GetUTCFullYearFrom(aDate) {
526
 
  var t = DATE_VALUE(aDate);
527
 
  if (NUMBER_IS_NAN(t)) return t;
528
 
  return YEAR_FROM_TIME(t);
529
 
}
530
 
 
531
 
 
532
 
function GetMonthFrom(aDate) {
533
 
  var t = DATE_VALUE(aDate);
534
 
  if (NUMBER_IS_NAN(t)) return t;
535
 
  return MONTH_FROM_TIME(LocalTimeNoCheck(t));
536
 
}
537
 
 
538
 
 
539
 
function GetUTCMonthFrom(aDate) {
540
 
  var t = DATE_VALUE(aDate);
541
 
  if (NUMBER_IS_NAN(t)) return t;
542
 
  return MONTH_FROM_TIME(t);
543
 
}
544
 
 
545
 
 
546
 
function GetDateFrom(aDate) {
547
 
  var t = DATE_VALUE(aDate);
548
 
  if (NUMBER_IS_NAN(t)) return t;
549
 
  return DATE_FROM_TIME(LocalTimeNoCheck(t));
550
 
}
551
 
 
552
 
 
553
 
function GetUTCDateFrom(aDate) {
554
 
  var t = DATE_VALUE(aDate);
555
 
  if (NUMBER_IS_NAN(t)) return t;
556
 
  return DATE_FROM_TIME(t);
557
 
}
558
 
 
559
 
 
560
456
%FunctionSetPrototype($Date, new $Date($NaN));
561
457
 
562
458
 
736
632
 
737
633
// ECMA 262 - 15.9.5.10
738
634
function DateGetFullYear() {
739
 
  return GetFullYearFrom(this)
 
635
  var t = DATE_VALUE(this);
 
636
  if (NUMBER_IS_NAN(t)) return t;
 
637
  var cache = Date_cache;
 
638
  if (cache.time === t) return cache.year;
 
639
  return YEAR_FROM_TIME(LocalTimeNoCheck(t));
740
640
}
741
641
 
742
642
 
743
643
// ECMA 262 - 15.9.5.11
744
644
function DateGetUTCFullYear() {
745
 
  return GetUTCFullYearFrom(this)
 
645
  var t = DATE_VALUE(this);
 
646
  if (NUMBER_IS_NAN(t)) return t;
 
647
  return YEAR_FROM_TIME(t);
746
648
}
747
649
 
748
650
 
749
651
// ECMA 262 - 15.9.5.12
750
652
function DateGetMonth() {
751
 
  return GetMonthFrom(this);
 
653
  var t = DATE_VALUE(this);
 
654
  if (NUMBER_IS_NAN(t)) return t;
 
655
  return MONTH_FROM_TIME(LocalTimeNoCheck(t));
752
656
}
753
657
 
754
658
 
755
659
// ECMA 262 - 15.9.5.13
756
660
function DateGetUTCMonth() {
757
 
  return GetUTCMonthFrom(this);
 
661
  var t = DATE_VALUE(this);
 
662
  if (NUMBER_IS_NAN(t)) return t;
 
663
  return MONTH_FROM_TIME(t);
758
664
}
759
665
 
760
666
 
761
667
// ECMA 262 - 15.9.5.14
762
668
function DateGetDate() {
763
 
  return GetDateFrom(this);
 
669
  var t = DATE_VALUE(this);
 
670
  if (NUMBER_IS_NAN(t)) return t;
 
671
  return DATE_FROM_TIME(LocalTimeNoCheck(t));
764
672
}
765
673
 
766
674
 
767
675
// ECMA 262 - 15.9.5.15
768
676
function DateGetUTCDate() {
769
 
  return GetUTCDateFrom(this);
 
677
  var t = DATE_VALUE(this);
 
678
  return NAN_OR_DATE_FROM_TIME(t);
770
679
}
771
680
 
772
681
 
788
697
 
789
698
// ECMA 262 - 15.9.5.18
790
699
function DateGetHours() {
791
 
  return GetHoursFrom(this);
 
700
  var t = DATE_VALUE(this);
 
701
  if (NUMBER_IS_NAN(t)) return t;
 
702
  return HOUR_FROM_TIME(LocalTimeNoCheck(t));
792
703
}
793
704
 
794
705
 
795
706
// ECMA 262 - 15.9.5.19
796
707
function DateGetUTCHours() {
797
 
  return GetUTCHoursFrom(this);
 
708
  var t = DATE_VALUE(this);
 
709
  if (NUMBER_IS_NAN(t)) return t;
 
710
  return HOUR_FROM_TIME(t);
798
711
}
799
712
 
800
713
 
801
714
// ECMA 262 - 15.9.5.20
802
715
function DateGetMinutes() {
803
 
  return GetMinutesFrom(this);
 
716
  var t = DATE_VALUE(this);
 
717
  if (NUMBER_IS_NAN(t)) return t;
 
718
  return MIN_FROM_TIME(LocalTimeNoCheck(t));
804
719
}
805
720
 
806
721
 
807
722
// ECMA 262 - 15.9.5.21
808
723
function DateGetUTCMinutes() {
809
 
  return GetUTCMinutesFrom(this);
 
724
  var t = DATE_VALUE(this);
 
725
  return NAN_OR_MIN_FROM_TIME(t);
810
726
}
811
727
 
812
728
 
813
729
// ECMA 262 - 15.9.5.22
814
730
function DateGetSeconds() {
815
 
  return GetSecondsFrom(this);
 
731
  var t = DATE_VALUE(this);
 
732
  if (NUMBER_IS_NAN(t)) return t;
 
733
  return SEC_FROM_TIME(LocalTimeNoCheck(t));
816
734
}
817
735
 
818
736
 
819
737
// ECMA 262 - 15.9.5.23
820
738
function DateGetUTCSeconds() {
821
 
  return GetUTCSecondsFrom(this);
 
739
  var t = DATE_VALUE(this);
 
740
  return NAN_OR_SEC_FROM_TIME(t);
822
741
}
823
742
 
824
743
 
825
744
// ECMA 262 - 15.9.5.24
826
745
function DateGetMilliseconds() {
827
 
  return GetMillisecondsFrom(this);
 
746
  var t = DATE_VALUE(this);
 
747
  if (NUMBER_IS_NAN(t)) return t;
 
748
  return MS_FROM_TIME(LocalTimeNoCheck(t));
828
749
}
829
750
 
830
751
 
831
752
// ECMA 262 - 15.9.5.25
832
753
function DateGetUTCMilliseconds() {
833
 
  return GetUTCMillisecondsFrom(this);
 
754
  var t = DATE_VALUE(this);
 
755
  return NAN_OR_MS_FROM_TIME(t);
834
756
}
835
757
 
836
758
 
871
793
function DateSetSeconds(sec, ms) {
872
794
  var t = LocalTime(DATE_VALUE(this));
873
795
  sec = ToNumber(sec);
874
 
  ms = %_ArgumentsLength() < 2 ? GetMillisecondsFrom(this) : ToNumber(ms);
 
796
  ms = %_ArgumentsLength() < 2 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms);
875
797
  var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), sec, ms);
876
798
  return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time))));
877
799
}
881
803
function DateSetUTCSeconds(sec, ms) {
882
804
  var t = DATE_VALUE(this);
883
805
  sec = ToNumber(sec);
884
 
  ms = %_ArgumentsLength() < 2 ? GetUTCMillisecondsFrom(this) : ToNumber(ms);
 
806
  ms = %_ArgumentsLength() < 2 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms);
885
807
  var time = MakeTime(HOUR_FROM_TIME(t), MIN_FROM_TIME(t), sec, ms);
886
808
  return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time)));
887
809
}
892
814
  var t = LocalTime(DATE_VALUE(this));
893
815
  min = ToNumber(min);
894
816
  var argc = %_ArgumentsLength();
895
 
  sec = argc < 2 ? GetSecondsFrom(this) : ToNumber(sec);
896
 
  ms = argc < 3 ? GetMillisecondsFrom(this) : ToNumber(ms);
 
817
  sec = argc < 2 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec);
 
818
  ms = argc < 3 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms);
897
819
  var time = MakeTime(HOUR_FROM_TIME(t), min, sec, ms);
898
820
  return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time))));
899
821
}
904
826
  var t = DATE_VALUE(this);
905
827
  min = ToNumber(min);
906
828
  var argc = %_ArgumentsLength();
907
 
  sec = argc < 2 ? GetUTCSecondsFrom(this) : ToNumber(sec);
908
 
  ms = argc < 3 ? GetUTCMillisecondsFrom(this) : ToNumber(ms);
 
829
  sec = argc < 2 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec);
 
830
  ms = argc < 3 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms);
909
831
  var time = MakeTime(HOUR_FROM_TIME(t), min, sec, ms);
910
832
  return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time)));
911
833
}
916
838
  var t = LocalTime(DATE_VALUE(this));
917
839
  hour = ToNumber(hour);
918
840
  var argc = %_ArgumentsLength();
919
 
  min = argc < 2 ? GetMinutesFrom(this) : ToNumber(min);
920
 
  sec = argc < 3 ? GetSecondsFrom(this) : ToNumber(sec);
921
 
  ms = argc < 4 ? GetMillisecondsFrom(this) : ToNumber(ms);
 
841
  min = argc < 2 ? NAN_OR_MIN_FROM_TIME(t) : ToNumber(min);
 
842
  sec = argc < 3 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec);
 
843
  ms = argc < 4 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms);
922
844
  var time = MakeTime(hour, min, sec, ms);
923
845
  return %_SetValueOf(this, TimeClip(UTC(MakeDate(DAY(t), time))));
924
846
}
929
851
  var t = DATE_VALUE(this);
930
852
  hour = ToNumber(hour);
931
853
  var argc = %_ArgumentsLength();
932
 
  min = argc < 2 ? GetUTCMinutesFrom(this) : ToNumber(min);
933
 
  sec = argc < 3 ? GetUTCSecondsFrom(this) : ToNumber(sec);
934
 
  ms = argc < 4 ? GetUTCMillisecondsFrom(this) : ToNumber(ms);
 
854
  min = argc < 2 ? NAN_OR_MIN_FROM_TIME(t) : ToNumber(min);
 
855
  sec = argc < 3 ? NAN_OR_SEC_FROM_TIME(t) : ToNumber(sec);
 
856
  ms = argc < 4 ? NAN_OR_MS_FROM_TIME(t) : ToNumber(ms);
935
857
  var time = MakeTime(hour, min, sec, ms);
936
858
  return %_SetValueOf(this, TimeClip(MakeDate(DAY(t), time)));
937
859
}
959
881
function DateSetMonth(month, date) {
960
882
  var t = LocalTime(DATE_VALUE(this));
961
883
  month = ToNumber(month);
962
 
  date = %_ArgumentsLength() < 2 ? GetDateFrom(this) : ToNumber(date);
 
884
  date = %_ArgumentsLength() < 2 ? NAN_OR_DATE_FROM_TIME(t) : ToNumber(date);
963
885
  var day = MakeDay(YEAR_FROM_TIME(t), month, date);
964
886
  return %_SetValueOf(this, TimeClip(UTC(MakeDate(day, TimeWithinDay(t)))));
965
887
}
969
891
function DateSetUTCMonth(month, date) {
970
892
  var t = DATE_VALUE(this);
971
893
  month = ToNumber(month);
972
 
  date = %_ArgumentsLength() < 2 ? GetUTCDateFrom(this) : ToNumber(date);
 
894
  date = %_ArgumentsLength() < 2 ? NAN_OR_DATE_FROM_TIME(t) : ToNumber(date);
973
895
  var day = MakeDay(YEAR_FROM_TIME(t), month, date);
974
896
  return %_SetValueOf(this, TimeClip(MakeDate(day, TimeWithinDay(t))));
975
897
}