| 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 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 InternalArray = utils.InternalArray; | 19 var InternalArray = utils.InternalArray; |
| 20 | |
| 21 var IsFinite; | 20 var IsFinite; |
| 22 var MathAbs; | 21 var MathAbs; |
| 23 var MathFloor; | 22 var MathFloor; |
| 23 var ToNumber; |
| 24 var ToString; |
| 24 | 25 |
| 25 utils.Import(function(from) { | 26 utils.Import(function(from) { |
| 26 IsFinite = from.IsFinite; | 27 IsFinite = from.IsFinite; |
| 27 MathAbs = from.MathAbs; | 28 MathAbs = from.MathAbs; |
| 28 MathFloor = from.MathFloor; | 29 MathFloor = from.MathFloor; |
| 30 ToNumber = from.ToNumber; |
| 31 ToString = from.ToString; |
| 29 }); | 32 }); |
| 30 | 33 |
| 31 // ------------------------------------------------------------------- | 34 // ------------------------------------------------------------------- |
| 32 | 35 |
| 33 // This file contains date support implemented in JavaScript. | 36 // This file contains date support implemented in JavaScript. |
| 34 | 37 |
| 35 var timezone_cache_time = NAN; | 38 var timezone_cache_time = NAN; |
| 36 var timezone_cache_timezone; | 39 var timezone_cache_timezone; |
| 37 | 40 |
| 38 function LocalTimezone(t) { | 41 function LocalTimezone(t) { |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 162 | 165 |
| 163 } else { | 166 } else { |
| 164 // According to ECMA 262, no hint should be given for this | 167 // According to ECMA 262, no hint should be given for this |
| 165 // conversion. However, ToPrimitive defaults to STRING_HINT for | 168 // conversion. However, ToPrimitive defaults to STRING_HINT for |
| 166 // Date objects which will lose precision when the Date | 169 // Date objects which will lose precision when the Date |
| 167 // constructor is called with another Date object as its | 170 // constructor is called with another Date object as its |
| 168 // argument. We therefore use NUMBER_HINT for the conversion, | 171 // argument. We therefore use NUMBER_HINT for the conversion, |
| 169 // which is the default for everything else than Date objects. | 172 // which is the default for everything else than Date objects. |
| 170 // This makes us behave like KJS and SpiderMonkey. | 173 // This makes us behave like KJS and SpiderMonkey. |
| 171 var time = $toPrimitive(year, NUMBER_HINT); | 174 var time = $toPrimitive(year, NUMBER_HINT); |
| 172 value = IS_STRING(time) ? DateParse(time) : $toNumber(time); | 175 value = IS_STRING(time) ? DateParse(time) : ToNumber(time); |
| 173 } | 176 } |
| 174 SET_UTC_DATE_VALUE(this, value); | 177 SET_UTC_DATE_VALUE(this, value); |
| 175 } else { | 178 } else { |
| 176 year = $toNumber(year); | 179 year = ToNumber(year); |
| 177 month = $toNumber(month); | 180 month = ToNumber(month); |
| 178 date = argc > 2 ? $toNumber(date) : 1; | 181 date = argc > 2 ? ToNumber(date) : 1; |
| 179 hours = argc > 3 ? $toNumber(hours) : 0; | 182 hours = argc > 3 ? ToNumber(hours) : 0; |
| 180 minutes = argc > 4 ? $toNumber(minutes) : 0; | 183 minutes = argc > 4 ? ToNumber(minutes) : 0; |
| 181 seconds = argc > 5 ? $toNumber(seconds) : 0; | 184 seconds = argc > 5 ? ToNumber(seconds) : 0; |
| 182 ms = argc > 6 ? $toNumber(ms) : 0; | 185 ms = argc > 6 ? ToNumber(ms) : 0; |
| 183 year = (!NUMBER_IS_NAN(year) && | 186 year = (!NUMBER_IS_NAN(year) && |
| 184 0 <= TO_INTEGER(year) && | 187 0 <= TO_INTEGER(year) && |
| 185 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; | 188 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; |
| 186 var day = MakeDay(year, month, date); | 189 var day = MakeDay(year, month, date); |
| 187 var time = MakeTime(hours, minutes, seconds, ms); | 190 var time = MakeTime(hours, minutes, seconds, ms); |
| 188 value = MakeDate(day, time); | 191 value = MakeDate(day, time); |
| 189 SET_LOCAL_DATE_VALUE(this, value); | 192 SET_LOCAL_DATE_VALUE(this, value); |
| 190 } | 193 } |
| 191 } | 194 } |
| 192 | 195 |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 260 return DateString(date) + ' ' + TimeString(date); | 263 return DateString(date) + ' ' + TimeString(date); |
| 261 } | 264 } |
| 262 | 265 |
| 263 // ------------------------------------------------------------------- | 266 // ------------------------------------------------------------------- |
| 264 | 267 |
| 265 // Reused output buffer. Used when parsing date strings. | 268 // Reused output buffer. Used when parsing date strings. |
| 266 var parse_buffer = new InternalArray(8); | 269 var parse_buffer = new InternalArray(8); |
| 267 | 270 |
| 268 // ECMA 262 - 15.9.4.2 | 271 // ECMA 262 - 15.9.4.2 |
| 269 function DateParse(string) { | 272 function DateParse(string) { |
| 270 var arr = %DateParseString($toString(string), parse_buffer); | 273 var arr = %DateParseString(ToString(string), parse_buffer); |
| 271 if (IS_NULL(arr)) return NAN; | 274 if (IS_NULL(arr)) return NAN; |
| 272 | 275 |
| 273 var day = MakeDay(arr[0], arr[1], arr[2]); | 276 var day = MakeDay(arr[0], arr[1], arr[2]); |
| 274 var time = MakeTime(arr[3], arr[4], arr[5], arr[6]); | 277 var time = MakeTime(arr[3], arr[4], arr[5], arr[6]); |
| 275 var date = MakeDate(day, time); | 278 var date = MakeDate(day, time); |
| 276 | 279 |
| 277 if (IS_NULL(arr[7])) { | 280 if (IS_NULL(arr[7])) { |
| 278 return TimeClip(UTC(date)); | 281 return TimeClip(UTC(date)); |
| 279 } else { | 282 } else { |
| 280 return TimeClip(date - arr[7] * 1000); | 283 return TimeClip(date - arr[7] * 1000); |
| 281 } | 284 } |
| 282 } | 285 } |
| 283 | 286 |
| 284 | 287 |
| 285 // ECMA 262 - 15.9.4.3 | 288 // ECMA 262 - 15.9.4.3 |
| 286 function DateUTC(year, month, date, hours, minutes, seconds, ms) { | 289 function DateUTC(year, month, date, hours, minutes, seconds, ms) { |
| 287 year = $toNumber(year); | 290 year = ToNumber(year); |
| 288 month = $toNumber(month); | 291 month = ToNumber(month); |
| 289 var argc = %_ArgumentsLength(); | 292 var argc = %_ArgumentsLength(); |
| 290 date = argc > 2 ? $toNumber(date) : 1; | 293 date = argc > 2 ? ToNumber(date) : 1; |
| 291 hours = argc > 3 ? $toNumber(hours) : 0; | 294 hours = argc > 3 ? ToNumber(hours) : 0; |
| 292 minutes = argc > 4 ? $toNumber(minutes) : 0; | 295 minutes = argc > 4 ? ToNumber(minutes) : 0; |
| 293 seconds = argc > 5 ? $toNumber(seconds) : 0; | 296 seconds = argc > 5 ? ToNumber(seconds) : 0; |
| 294 ms = argc > 6 ? $toNumber(ms) : 0; | 297 ms = argc > 6 ? ToNumber(ms) : 0; |
| 295 year = (!NUMBER_IS_NAN(year) && | 298 year = (!NUMBER_IS_NAN(year) && |
| 296 0 <= TO_INTEGER(year) && | 299 0 <= TO_INTEGER(year) && |
| 297 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; | 300 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; |
| 298 var day = MakeDay(year, month, date); | 301 var day = MakeDay(year, month, date); |
| 299 var time = MakeTime(hours, minutes, seconds, ms); | 302 var time = MakeTime(hours, minutes, seconds, ms); |
| 300 return TimeClip(MakeDate(day, time)); | 303 return TimeClip(MakeDate(day, time)); |
| 301 } | 304 } |
| 302 | 305 |
| 303 | 306 |
| 304 // ECMA 262 - 15.9.4.4 | 307 // ECMA 262 - 15.9.4.4 |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 490 // ECMA 262 - 15.9.5.26 | 493 // ECMA 262 - 15.9.5.26 |
| 491 function DateGetTimezoneOffset() { | 494 function DateGetTimezoneOffset() { |
| 492 CHECK_DATE(this); | 495 CHECK_DATE(this); |
| 493 return TIMEZONE_OFFSET(this); | 496 return TIMEZONE_OFFSET(this); |
| 494 } | 497 } |
| 495 | 498 |
| 496 | 499 |
| 497 // ECMA 262 - 15.9.5.27 | 500 // ECMA 262 - 15.9.5.27 |
| 498 function DateSetTime(ms) { | 501 function DateSetTime(ms) { |
| 499 CHECK_DATE(this); | 502 CHECK_DATE(this); |
| 500 SET_UTC_DATE_VALUE(this, $toNumber(ms)); | 503 SET_UTC_DATE_VALUE(this, ToNumber(ms)); |
| 501 return UTC_DATE_VALUE(this); | 504 return UTC_DATE_VALUE(this); |
| 502 } | 505 } |
| 503 | 506 |
| 504 | 507 |
| 505 // ECMA 262 - 15.9.5.28 | 508 // ECMA 262 - 15.9.5.28 |
| 506 function DateSetMilliseconds(ms) { | 509 function DateSetMilliseconds(ms) { |
| 507 CHECK_DATE(this); | 510 CHECK_DATE(this); |
| 508 var t = LOCAL_DATE_VALUE(this); | 511 var t = LOCAL_DATE_VALUE(this); |
| 509 ms = $toNumber(ms); | 512 ms = ToNumber(ms); |
| 510 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms); | 513 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms); |
| 511 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 514 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
| 512 } | 515 } |
| 513 | 516 |
| 514 | 517 |
| 515 // ECMA 262 - 15.9.5.29 | 518 // ECMA 262 - 15.9.5.29 |
| 516 function DateSetUTCMilliseconds(ms) { | 519 function DateSetUTCMilliseconds(ms) { |
| 517 CHECK_DATE(this); | 520 CHECK_DATE(this); |
| 518 var t = UTC_DATE_VALUE(this); | 521 var t = UTC_DATE_VALUE(this); |
| 519 ms = $toNumber(ms); | 522 ms = ToNumber(ms); |
| 520 var time = MakeTime(UTC_HOUR(this), | 523 var time = MakeTime(UTC_HOUR(this), |
| 521 UTC_MIN(this), | 524 UTC_MIN(this), |
| 522 UTC_SEC(this), | 525 UTC_SEC(this), |
| 523 ms); | 526 ms); |
| 524 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 527 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
| 525 } | 528 } |
| 526 | 529 |
| 527 | 530 |
| 528 // ECMA 262 - 15.9.5.30 | 531 // ECMA 262 - 15.9.5.30 |
| 529 function DateSetSeconds(sec, ms) { | 532 function DateSetSeconds(sec, ms) { |
| 530 CHECK_DATE(this); | 533 CHECK_DATE(this); |
| 531 var t = LOCAL_DATE_VALUE(this); | 534 var t = LOCAL_DATE_VALUE(this); |
| 532 sec = $toNumber(sec); | 535 sec = ToNumber(sec); |
| 533 ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : $toNumber(ms); | 536 ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : ToNumber(ms); |
| 534 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), sec, ms); | 537 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), sec, ms); |
| 535 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 538 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
| 536 } | 539 } |
| 537 | 540 |
| 538 | 541 |
| 539 // ECMA 262 - 15.9.5.31 | 542 // ECMA 262 - 15.9.5.31 |
| 540 function DateSetUTCSeconds(sec, ms) { | 543 function DateSetUTCSeconds(sec, ms) { |
| 541 CHECK_DATE(this); | 544 CHECK_DATE(this); |
| 542 var t = UTC_DATE_VALUE(this); | 545 var t = UTC_DATE_VALUE(this); |
| 543 sec = $toNumber(sec); | 546 sec = ToNumber(sec); |
| 544 ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : $toNumber(ms); | 547 ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : ToNumber(ms); |
| 545 var time = MakeTime(UTC_HOUR(this), UTC_MIN(this), sec, ms); | 548 var time = MakeTime(UTC_HOUR(this), UTC_MIN(this), sec, ms); |
| 546 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 549 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
| 547 } | 550 } |
| 548 | 551 |
| 549 | 552 |
| 550 // ECMA 262 - 15.9.5.33 | 553 // ECMA 262 - 15.9.5.33 |
| 551 function DateSetMinutes(min, sec, ms) { | 554 function DateSetMinutes(min, sec, ms) { |
| 552 CHECK_DATE(this); | 555 CHECK_DATE(this); |
| 553 var t = LOCAL_DATE_VALUE(this); | 556 var t = LOCAL_DATE_VALUE(this); |
| 554 min = $toNumber(min); | 557 min = ToNumber(min); |
| 555 var argc = %_ArgumentsLength(); | 558 var argc = %_ArgumentsLength(); |
| 556 sec = argc < 2 ? LOCAL_SEC(this) : $toNumber(sec); | 559 sec = argc < 2 ? LOCAL_SEC(this) : ToNumber(sec); |
| 557 ms = argc < 3 ? LOCAL_MS(this) : $toNumber(ms); | 560 ms = argc < 3 ? LOCAL_MS(this) : ToNumber(ms); |
| 558 var time = MakeTime(LOCAL_HOUR(this), min, sec, ms); | 561 var time = MakeTime(LOCAL_HOUR(this), min, sec, ms); |
| 559 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 562 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
| 560 } | 563 } |
| 561 | 564 |
| 562 | 565 |
| 563 // ECMA 262 - 15.9.5.34 | 566 // ECMA 262 - 15.9.5.34 |
| 564 function DateSetUTCMinutes(min, sec, ms) { | 567 function DateSetUTCMinutes(min, sec, ms) { |
| 565 CHECK_DATE(this); | 568 CHECK_DATE(this); |
| 566 var t = UTC_DATE_VALUE(this); | 569 var t = UTC_DATE_VALUE(this); |
| 567 min = $toNumber(min); | 570 min = ToNumber(min); |
| 568 var argc = %_ArgumentsLength(); | 571 var argc = %_ArgumentsLength(); |
| 569 sec = argc < 2 ? UTC_SEC(this) : $toNumber(sec); | 572 sec = argc < 2 ? UTC_SEC(this) : ToNumber(sec); |
| 570 ms = argc < 3 ? UTC_MS(this) : $toNumber(ms); | 573 ms = argc < 3 ? UTC_MS(this) : ToNumber(ms); |
| 571 var time = MakeTime(UTC_HOUR(this), min, sec, ms); | 574 var time = MakeTime(UTC_HOUR(this), min, sec, ms); |
| 572 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 575 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
| 573 } | 576 } |
| 574 | 577 |
| 575 | 578 |
| 576 // ECMA 262 - 15.9.5.35 | 579 // ECMA 262 - 15.9.5.35 |
| 577 function DateSetHours(hour, min, sec, ms) { | 580 function DateSetHours(hour, min, sec, ms) { |
| 578 CHECK_DATE(this); | 581 CHECK_DATE(this); |
| 579 var t = LOCAL_DATE_VALUE(this); | 582 var t = LOCAL_DATE_VALUE(this); |
| 580 hour = $toNumber(hour); | 583 hour = ToNumber(hour); |
| 581 var argc = %_ArgumentsLength(); | 584 var argc = %_ArgumentsLength(); |
| 582 min = argc < 2 ? LOCAL_MIN(this) : $toNumber(min); | 585 min = argc < 2 ? LOCAL_MIN(this) : ToNumber(min); |
| 583 sec = argc < 3 ? LOCAL_SEC(this) : $toNumber(sec); | 586 sec = argc < 3 ? LOCAL_SEC(this) : ToNumber(sec); |
| 584 ms = argc < 4 ? LOCAL_MS(this) : $toNumber(ms); | 587 ms = argc < 4 ? LOCAL_MS(this) : ToNumber(ms); |
| 585 var time = MakeTime(hour, min, sec, ms); | 588 var time = MakeTime(hour, min, sec, ms); |
| 586 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 589 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
| 587 } | 590 } |
| 588 | 591 |
| 589 | 592 |
| 590 // ECMA 262 - 15.9.5.34 | 593 // ECMA 262 - 15.9.5.34 |
| 591 function DateSetUTCHours(hour, min, sec, ms) { | 594 function DateSetUTCHours(hour, min, sec, ms) { |
| 592 CHECK_DATE(this); | 595 CHECK_DATE(this); |
| 593 var t = UTC_DATE_VALUE(this); | 596 var t = UTC_DATE_VALUE(this); |
| 594 hour = $toNumber(hour); | 597 hour = ToNumber(hour); |
| 595 var argc = %_ArgumentsLength(); | 598 var argc = %_ArgumentsLength(); |
| 596 min = argc < 2 ? UTC_MIN(this) : $toNumber(min); | 599 min = argc < 2 ? UTC_MIN(this) : ToNumber(min); |
| 597 sec = argc < 3 ? UTC_SEC(this) : $toNumber(sec); | 600 sec = argc < 3 ? UTC_SEC(this) : ToNumber(sec); |
| 598 ms = argc < 4 ? UTC_MS(this) : $toNumber(ms); | 601 ms = argc < 4 ? UTC_MS(this) : ToNumber(ms); |
| 599 var time = MakeTime(hour, min, sec, ms); | 602 var time = MakeTime(hour, min, sec, ms); |
| 600 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 603 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
| 601 } | 604 } |
| 602 | 605 |
| 603 | 606 |
| 604 // ECMA 262 - 15.9.5.36 | 607 // ECMA 262 - 15.9.5.36 |
| 605 function DateSetDate(date) { | 608 function DateSetDate(date) { |
| 606 CHECK_DATE(this); | 609 CHECK_DATE(this); |
| 607 var t = LOCAL_DATE_VALUE(this); | 610 var t = LOCAL_DATE_VALUE(this); |
| 608 date = $toNumber(date); | 611 date = ToNumber(date); |
| 609 var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date); | 612 var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date); |
| 610 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); | 613 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); |
| 611 } | 614 } |
| 612 | 615 |
| 613 | 616 |
| 614 // ECMA 262 - 15.9.5.37 | 617 // ECMA 262 - 15.9.5.37 |
| 615 function DateSetUTCDate(date) { | 618 function DateSetUTCDate(date) { |
| 616 CHECK_DATE(this); | 619 CHECK_DATE(this); |
| 617 var t = UTC_DATE_VALUE(this); | 620 var t = UTC_DATE_VALUE(this); |
| 618 date = $toNumber(date); | 621 date = ToNumber(date); |
| 619 var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date); | 622 var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date); |
| 620 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); | 623 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); |
| 621 } | 624 } |
| 622 | 625 |
| 623 | 626 |
| 624 // ECMA 262 - 15.9.5.38 | 627 // ECMA 262 - 15.9.5.38 |
| 625 function DateSetMonth(month, date) { | 628 function DateSetMonth(month, date) { |
| 626 CHECK_DATE(this); | 629 CHECK_DATE(this); |
| 627 var t = LOCAL_DATE_VALUE(this); | 630 var t = LOCAL_DATE_VALUE(this); |
| 628 month = $toNumber(month); | 631 month = ToNumber(month); |
| 629 date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : $toNumber(date); | 632 date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : ToNumber(date); |
| 630 var day = MakeDay(LOCAL_YEAR(this), month, date); | 633 var day = MakeDay(LOCAL_YEAR(this), month, date); |
| 631 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); | 634 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); |
| 632 } | 635 } |
| 633 | 636 |
| 634 | 637 |
| 635 // ECMA 262 - 15.9.5.39 | 638 // ECMA 262 - 15.9.5.39 |
| 636 function DateSetUTCMonth(month, date) { | 639 function DateSetUTCMonth(month, date) { |
| 637 CHECK_DATE(this); | 640 CHECK_DATE(this); |
| 638 var t = UTC_DATE_VALUE(this); | 641 var t = UTC_DATE_VALUE(this); |
| 639 month = $toNumber(month); | 642 month = ToNumber(month); |
| 640 date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : $toNumber(date); | 643 date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : ToNumber(date); |
| 641 var day = MakeDay(UTC_YEAR(this), month, date); | 644 var day = MakeDay(UTC_YEAR(this), month, date); |
| 642 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); | 645 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); |
| 643 } | 646 } |
| 644 | 647 |
| 645 | 648 |
| 646 // ECMA 262 - 15.9.5.40 | 649 // ECMA 262 - 15.9.5.40 |
| 647 function DateSetFullYear(year, month, date) { | 650 function DateSetFullYear(year, month, date) { |
| 648 CHECK_DATE(this); | 651 CHECK_DATE(this); |
| 649 var t = LOCAL_DATE_VALUE(this); | 652 var t = LOCAL_DATE_VALUE(this); |
| 650 year = $toNumber(year); | 653 year = ToNumber(year); |
| 651 var argc = %_ArgumentsLength(); | 654 var argc = %_ArgumentsLength(); |
| 652 var time ; | 655 var time ; |
| 653 if (NUMBER_IS_NAN(t)) { | 656 if (NUMBER_IS_NAN(t)) { |
| 654 month = argc < 2 ? 0 : $toNumber(month); | 657 month = argc < 2 ? 0 : ToNumber(month); |
| 655 date = argc < 3 ? 1 : $toNumber(date); | 658 date = argc < 3 ? 1 : ToNumber(date); |
| 656 time = 0; | 659 time = 0; |
| 657 } else { | 660 } else { |
| 658 month = argc < 2 ? LOCAL_MONTH(this) : $toNumber(month); | 661 month = argc < 2 ? LOCAL_MONTH(this) : ToNumber(month); |
| 659 date = argc < 3 ? LOCAL_DAY(this) : $toNumber(date); | 662 date = argc < 3 ? LOCAL_DAY(this) : ToNumber(date); |
| 660 time = LOCAL_TIME_IN_DAY(this); | 663 time = LOCAL_TIME_IN_DAY(this); |
| 661 } | 664 } |
| 662 var day = MakeDay(year, month, date); | 665 var day = MakeDay(year, month, date); |
| 663 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time)); | 666 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time)); |
| 664 } | 667 } |
| 665 | 668 |
| 666 | 669 |
| 667 // ECMA 262 - 15.9.5.41 | 670 // ECMA 262 - 15.9.5.41 |
| 668 function DateSetUTCFullYear(year, month, date) { | 671 function DateSetUTCFullYear(year, month, date) { |
| 669 CHECK_DATE(this); | 672 CHECK_DATE(this); |
| 670 var t = UTC_DATE_VALUE(this); | 673 var t = UTC_DATE_VALUE(this); |
| 671 year = $toNumber(year); | 674 year = ToNumber(year); |
| 672 var argc = %_ArgumentsLength(); | 675 var argc = %_ArgumentsLength(); |
| 673 var time ; | 676 var time ; |
| 674 if (NUMBER_IS_NAN(t)) { | 677 if (NUMBER_IS_NAN(t)) { |
| 675 month = argc < 2 ? 0 : $toNumber(month); | 678 month = argc < 2 ? 0 : ToNumber(month); |
| 676 date = argc < 3 ? 1 : $toNumber(date); | 679 date = argc < 3 ? 1 : ToNumber(date); |
| 677 time = 0; | 680 time = 0; |
| 678 } else { | 681 } else { |
| 679 month = argc < 2 ? UTC_MONTH(this) : $toNumber(month); | 682 month = argc < 2 ? UTC_MONTH(this) : ToNumber(month); |
| 680 date = argc < 3 ? UTC_DAY(this) : $toNumber(date); | 683 date = argc < 3 ? UTC_DAY(this) : ToNumber(date); |
| 681 time = UTC_TIME_IN_DAY(this); | 684 time = UTC_TIME_IN_DAY(this); |
| 682 } | 685 } |
| 683 var day = MakeDay(year, month, date); | 686 var day = MakeDay(year, month, date); |
| 684 return SET_UTC_DATE_VALUE(this, MakeDate(day, time)); | 687 return SET_UTC_DATE_VALUE(this, MakeDate(day, time)); |
| 685 } | 688 } |
| 686 | 689 |
| 687 | 690 |
| 688 // ECMA 262 - 15.9.5.42 | 691 // ECMA 262 - 15.9.5.42 |
| 689 function DateToUTCString() { | 692 function DateToUTCString() { |
| 690 CHECK_DATE(this); | 693 CHECK_DATE(this); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 702 // ECMA 262 - B.2.4 | 705 // ECMA 262 - B.2.4 |
| 703 function DateGetYear() { | 706 function DateGetYear() { |
| 704 CHECK_DATE(this); | 707 CHECK_DATE(this); |
| 705 return LOCAL_YEAR(this) - 1900; | 708 return LOCAL_YEAR(this) - 1900; |
| 706 } | 709 } |
| 707 | 710 |
| 708 | 711 |
| 709 // ECMA 262 - B.2.5 | 712 // ECMA 262 - B.2.5 |
| 710 function DateSetYear(year) { | 713 function DateSetYear(year) { |
| 711 CHECK_DATE(this); | 714 CHECK_DATE(this); |
| 712 year = $toNumber(year); | 715 year = ToNumber(year); |
| 713 if (NUMBER_IS_NAN(year)) return SET_UTC_DATE_VALUE(this, NAN); | 716 if (NUMBER_IS_NAN(year)) return SET_UTC_DATE_VALUE(this, NAN); |
| 714 year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99) | 717 year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99) |
| 715 ? 1900 + TO_INTEGER(year) : year; | 718 ? 1900 + TO_INTEGER(year) : year; |
| 716 var t = LOCAL_DATE_VALUE(this); | 719 var t = LOCAL_DATE_VALUE(this); |
| 717 var month, date, time; | 720 var month, date, time; |
| 718 if (NUMBER_IS_NAN(t)) { | 721 if (NUMBER_IS_NAN(t)) { |
| 719 month = 0; | 722 month = 0; |
| 720 date = 1; | 723 date = 1; |
| 721 time = 0; | 724 time = 0; |
| 722 } else { | 725 } else { |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 878 "setYear", DateSetYear, | 881 "setYear", DateSetYear, |
| 879 "toISOString", DateToISOString, | 882 "toISOString", DateToISOString, |
| 880 "toJSON", DateToJSON | 883 "toJSON", DateToJSON |
| 881 ]); | 884 ]); |
| 882 | 885 |
| 883 utils.ExportToRuntime(function(to) { | 886 utils.ExportToRuntime(function(to) { |
| 884 to.CreateDate = CreateDate; | 887 to.CreateDate = CreateDate; |
| 885 }); | 888 }); |
| 886 | 889 |
| 887 }) | 890 }) |
| OLD | NEW |