| 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 // This file relies on the fact that the following declarations have been made | 5 // This file relies on the fact that the following declarations have been made |
| 6 // in v8natives.js: | 6 // in v8natives.js: |
| 7 // var $isFinite = GlobalIsFinite; | 7 // var $isFinite = GlobalIsFinite; |
| 8 | 8 |
| 9 var $createDate; | 9 var $createDate; |
| 10 | 10 |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 } | 149 } |
| 150 | 150 |
| 151 } else { | 151 } else { |
| 152 // According to ECMA 262, no hint should be given for this | 152 // According to ECMA 262, no hint should be given for this |
| 153 // conversion. However, ToPrimitive defaults to STRING_HINT for | 153 // conversion. However, ToPrimitive defaults to STRING_HINT for |
| 154 // Date objects which will lose precision when the Date | 154 // Date objects which will lose precision when the Date |
| 155 // constructor is called with another Date object as its | 155 // constructor is called with another Date object as its |
| 156 // argument. We therefore use NUMBER_HINT for the conversion, | 156 // argument. We therefore use NUMBER_HINT for the conversion, |
| 157 // which is the default for everything else than Date objects. | 157 // which is the default for everything else than Date objects. |
| 158 // This makes us behave like KJS and SpiderMonkey. | 158 // This makes us behave like KJS and SpiderMonkey. |
| 159 var time = ToPrimitive(year, NUMBER_HINT); | 159 var time = $toPrimitive(year, NUMBER_HINT); |
| 160 value = IS_STRING(time) ? DateParse(time) : ToNumber(time); | 160 value = IS_STRING(time) ? DateParse(time) : $toNumber(time); |
| 161 } | 161 } |
| 162 SET_UTC_DATE_VALUE(this, value); | 162 SET_UTC_DATE_VALUE(this, value); |
| 163 } else { | 163 } else { |
| 164 year = ToNumber(year); | 164 year = $toNumber(year); |
| 165 month = ToNumber(month); | 165 month = $toNumber(month); |
| 166 date = argc > 2 ? ToNumber(date) : 1; | 166 date = argc > 2 ? $toNumber(date) : 1; |
| 167 hours = argc > 3 ? ToNumber(hours) : 0; | 167 hours = argc > 3 ? $toNumber(hours) : 0; |
| 168 minutes = argc > 4 ? ToNumber(minutes) : 0; | 168 minutes = argc > 4 ? $toNumber(minutes) : 0; |
| 169 seconds = argc > 5 ? ToNumber(seconds) : 0; | 169 seconds = argc > 5 ? $toNumber(seconds) : 0; |
| 170 ms = argc > 6 ? ToNumber(ms) : 0; | 170 ms = argc > 6 ? $toNumber(ms) : 0; |
| 171 year = (!NUMBER_IS_NAN(year) && | 171 year = (!NUMBER_IS_NAN(year) && |
| 172 0 <= TO_INTEGER(year) && | 172 0 <= TO_INTEGER(year) && |
| 173 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; | 173 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; |
| 174 var day = MakeDay(year, month, date); | 174 var day = MakeDay(year, month, date); |
| 175 var time = MakeTime(hours, minutes, seconds, ms); | 175 var time = MakeTime(hours, minutes, seconds, ms); |
| 176 value = MakeDate(day, time); | 176 value = MakeDate(day, time); |
| 177 SET_LOCAL_DATE_VALUE(this, value); | 177 SET_LOCAL_DATE_VALUE(this, value); |
| 178 } | 178 } |
| 179 } | 179 } |
| 180 | 180 |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 242 return DateString(date) + ' ' + TimeString(date); | 242 return DateString(date) + ' ' + TimeString(date); |
| 243 } | 243 } |
| 244 | 244 |
| 245 // ------------------------------------------------------------------- | 245 // ------------------------------------------------------------------- |
| 246 | 246 |
| 247 // Reused output buffer. Used when parsing date strings. | 247 // Reused output buffer. Used when parsing date strings. |
| 248 var parse_buffer = new InternalArray(8); | 248 var parse_buffer = new InternalArray(8); |
| 249 | 249 |
| 250 // ECMA 262 - 15.9.4.2 | 250 // ECMA 262 - 15.9.4.2 |
| 251 function DateParse(string) { | 251 function DateParse(string) { |
| 252 var arr = %DateParseString(ToString(string), parse_buffer); | 252 var arr = %DateParseString($toString(string), parse_buffer); |
| 253 if (IS_NULL(arr)) return NAN; | 253 if (IS_NULL(arr)) return NAN; |
| 254 | 254 |
| 255 var day = MakeDay(arr[0], arr[1], arr[2]); | 255 var day = MakeDay(arr[0], arr[1], arr[2]); |
| 256 var time = MakeTime(arr[3], arr[4], arr[5], arr[6]); | 256 var time = MakeTime(arr[3], arr[4], arr[5], arr[6]); |
| 257 var date = MakeDate(day, time); | 257 var date = MakeDate(day, time); |
| 258 | 258 |
| 259 if (IS_NULL(arr[7])) { | 259 if (IS_NULL(arr[7])) { |
| 260 return TimeClip(UTC(date)); | 260 return TimeClip(UTC(date)); |
| 261 } else { | 261 } else { |
| 262 return TimeClip(date - arr[7] * 1000); | 262 return TimeClip(date - arr[7] * 1000); |
| 263 } | 263 } |
| 264 } | 264 } |
| 265 | 265 |
| 266 | 266 |
| 267 // ECMA 262 - 15.9.4.3 | 267 // ECMA 262 - 15.9.4.3 |
| 268 function DateUTC(year, month, date, hours, minutes, seconds, ms) { | 268 function DateUTC(year, month, date, hours, minutes, seconds, ms) { |
| 269 year = ToNumber(year); | 269 year = $toNumber(year); |
| 270 month = ToNumber(month); | 270 month = $toNumber(month); |
| 271 var argc = %_ArgumentsLength(); | 271 var argc = %_ArgumentsLength(); |
| 272 date = argc > 2 ? ToNumber(date) : 1; | 272 date = argc > 2 ? $toNumber(date) : 1; |
| 273 hours = argc > 3 ? ToNumber(hours) : 0; | 273 hours = argc > 3 ? $toNumber(hours) : 0; |
| 274 minutes = argc > 4 ? ToNumber(minutes) : 0; | 274 minutes = argc > 4 ? $toNumber(minutes) : 0; |
| 275 seconds = argc > 5 ? ToNumber(seconds) : 0; | 275 seconds = argc > 5 ? $toNumber(seconds) : 0; |
| 276 ms = argc > 6 ? ToNumber(ms) : 0; | 276 ms = argc > 6 ? $toNumber(ms) : 0; |
| 277 year = (!NUMBER_IS_NAN(year) && | 277 year = (!NUMBER_IS_NAN(year) && |
| 278 0 <= TO_INTEGER(year) && | 278 0 <= TO_INTEGER(year) && |
| 279 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; | 279 TO_INTEGER(year) <= 99) ? 1900 + TO_INTEGER(year) : year; |
| 280 var day = MakeDay(year, month, date); | 280 var day = MakeDay(year, month, date); |
| 281 var time = MakeTime(hours, minutes, seconds, ms); | 281 var time = MakeTime(hours, minutes, seconds, ms); |
| 282 return TimeClip(MakeDate(day, time)); | 282 return TimeClip(MakeDate(day, time)); |
| 283 } | 283 } |
| 284 | 284 |
| 285 | 285 |
| 286 // ECMA 262 - 15.9.4.4 | 286 // ECMA 262 - 15.9.4.4 |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 447 | 447 |
| 448 // ECMA 262 - 15.9.5.26 | 448 // ECMA 262 - 15.9.5.26 |
| 449 function DateGetTimezoneOffset() { | 449 function DateGetTimezoneOffset() { |
| 450 return TIMEZONE_OFFSET(this); | 450 return TIMEZONE_OFFSET(this); |
| 451 } | 451 } |
| 452 | 452 |
| 453 | 453 |
| 454 // ECMA 262 - 15.9.5.27 | 454 // ECMA 262 - 15.9.5.27 |
| 455 function DateSetTime(ms) { | 455 function DateSetTime(ms) { |
| 456 CHECK_DATE(this); | 456 CHECK_DATE(this); |
| 457 SET_UTC_DATE_VALUE(this, ToNumber(ms)); | 457 SET_UTC_DATE_VALUE(this, $toNumber(ms)); |
| 458 return UTC_DATE_VALUE(this); | 458 return UTC_DATE_VALUE(this); |
| 459 } | 459 } |
| 460 | 460 |
| 461 | 461 |
| 462 // ECMA 262 - 15.9.5.28 | 462 // ECMA 262 - 15.9.5.28 |
| 463 function DateSetMilliseconds(ms) { | 463 function DateSetMilliseconds(ms) { |
| 464 var t = LOCAL_DATE_VALUE(this); | 464 var t = LOCAL_DATE_VALUE(this); |
| 465 ms = ToNumber(ms); | 465 ms = $toNumber(ms); |
| 466 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms); | 466 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), LOCAL_SEC(this), ms); |
| 467 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 467 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
| 468 } | 468 } |
| 469 | 469 |
| 470 | 470 |
| 471 // ECMA 262 - 15.9.5.29 | 471 // ECMA 262 - 15.9.5.29 |
| 472 function DateSetUTCMilliseconds(ms) { | 472 function DateSetUTCMilliseconds(ms) { |
| 473 var t = UTC_DATE_VALUE(this); | 473 var t = UTC_DATE_VALUE(this); |
| 474 ms = ToNumber(ms); | 474 ms = $toNumber(ms); |
| 475 var time = MakeTime(UTC_HOUR(this), | 475 var time = MakeTime(UTC_HOUR(this), |
| 476 UTC_MIN(this), | 476 UTC_MIN(this), |
| 477 UTC_SEC(this), | 477 UTC_SEC(this), |
| 478 ms); | 478 ms); |
| 479 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 479 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
| 480 } | 480 } |
| 481 | 481 |
| 482 | 482 |
| 483 // ECMA 262 - 15.9.5.30 | 483 // ECMA 262 - 15.9.5.30 |
| 484 function DateSetSeconds(sec, ms) { | 484 function DateSetSeconds(sec, ms) { |
| 485 var t = LOCAL_DATE_VALUE(this); | 485 var t = LOCAL_DATE_VALUE(this); |
| 486 sec = ToNumber(sec); | 486 sec = $toNumber(sec); |
| 487 ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : ToNumber(ms); | 487 ms = %_ArgumentsLength() < 2 ? LOCAL_MS(this) : $toNumber(ms); |
| 488 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), sec, ms); | 488 var time = MakeTime(LOCAL_HOUR(this), LOCAL_MIN(this), sec, ms); |
| 489 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 489 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
| 490 } | 490 } |
| 491 | 491 |
| 492 | 492 |
| 493 // ECMA 262 - 15.9.5.31 | 493 // ECMA 262 - 15.9.5.31 |
| 494 function DateSetUTCSeconds(sec, ms) { | 494 function DateSetUTCSeconds(sec, ms) { |
| 495 var t = UTC_DATE_VALUE(this); | 495 var t = UTC_DATE_VALUE(this); |
| 496 sec = ToNumber(sec); | 496 sec = $toNumber(sec); |
| 497 ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : ToNumber(ms); | 497 ms = %_ArgumentsLength() < 2 ? UTC_MS(this) : $toNumber(ms); |
| 498 var time = MakeTime(UTC_HOUR(this), UTC_MIN(this), sec, ms); | 498 var time = MakeTime(UTC_HOUR(this), UTC_MIN(this), sec, ms); |
| 499 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 499 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
| 500 } | 500 } |
| 501 | 501 |
| 502 | 502 |
| 503 // ECMA 262 - 15.9.5.33 | 503 // ECMA 262 - 15.9.5.33 |
| 504 function DateSetMinutes(min, sec, ms) { | 504 function DateSetMinutes(min, sec, ms) { |
| 505 var t = LOCAL_DATE_VALUE(this); | 505 var t = LOCAL_DATE_VALUE(this); |
| 506 min = ToNumber(min); | 506 min = $toNumber(min); |
| 507 var argc = %_ArgumentsLength(); | 507 var argc = %_ArgumentsLength(); |
| 508 sec = argc < 2 ? LOCAL_SEC(this) : ToNumber(sec); | 508 sec = argc < 2 ? LOCAL_SEC(this) : $toNumber(sec); |
| 509 ms = argc < 3 ? LOCAL_MS(this) : ToNumber(ms); | 509 ms = argc < 3 ? LOCAL_MS(this) : $toNumber(ms); |
| 510 var time = MakeTime(LOCAL_HOUR(this), min, sec, ms); | 510 var time = MakeTime(LOCAL_HOUR(this), min, sec, ms); |
| 511 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 511 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
| 512 } | 512 } |
| 513 | 513 |
| 514 | 514 |
| 515 // ECMA 262 - 15.9.5.34 | 515 // ECMA 262 - 15.9.5.34 |
| 516 function DateSetUTCMinutes(min, sec, ms) { | 516 function DateSetUTCMinutes(min, sec, ms) { |
| 517 var t = UTC_DATE_VALUE(this); | 517 var t = UTC_DATE_VALUE(this); |
| 518 min = ToNumber(min); | 518 min = $toNumber(min); |
| 519 var argc = %_ArgumentsLength(); | 519 var argc = %_ArgumentsLength(); |
| 520 sec = argc < 2 ? UTC_SEC(this) : ToNumber(sec); | 520 sec = argc < 2 ? UTC_SEC(this) : $toNumber(sec); |
| 521 ms = argc < 3 ? UTC_MS(this) : ToNumber(ms); | 521 ms = argc < 3 ? UTC_MS(this) : $toNumber(ms); |
| 522 var time = MakeTime(UTC_HOUR(this), min, sec, ms); | 522 var time = MakeTime(UTC_HOUR(this), min, sec, ms); |
| 523 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 523 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
| 524 } | 524 } |
| 525 | 525 |
| 526 | 526 |
| 527 // ECMA 262 - 15.9.5.35 | 527 // ECMA 262 - 15.9.5.35 |
| 528 function DateSetHours(hour, min, sec, ms) { | 528 function DateSetHours(hour, min, sec, ms) { |
| 529 var t = LOCAL_DATE_VALUE(this); | 529 var t = LOCAL_DATE_VALUE(this); |
| 530 hour = ToNumber(hour); | 530 hour = $toNumber(hour); |
| 531 var argc = %_ArgumentsLength(); | 531 var argc = %_ArgumentsLength(); |
| 532 min = argc < 2 ? LOCAL_MIN(this) : ToNumber(min); | 532 min = argc < 2 ? LOCAL_MIN(this) : $toNumber(min); |
| 533 sec = argc < 3 ? LOCAL_SEC(this) : ToNumber(sec); | 533 sec = argc < 3 ? LOCAL_SEC(this) : $toNumber(sec); |
| 534 ms = argc < 4 ? LOCAL_MS(this) : ToNumber(ms); | 534 ms = argc < 4 ? LOCAL_MS(this) : $toNumber(ms); |
| 535 var time = MakeTime(hour, min, sec, ms); | 535 var time = MakeTime(hour, min, sec, ms); |
| 536 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); | 536 return SET_LOCAL_DATE_VALUE(this, MakeDate(LOCAL_DAYS(this), time)); |
| 537 } | 537 } |
| 538 | 538 |
| 539 | 539 |
| 540 // ECMA 262 - 15.9.5.34 | 540 // ECMA 262 - 15.9.5.34 |
| 541 function DateSetUTCHours(hour, min, sec, ms) { | 541 function DateSetUTCHours(hour, min, sec, ms) { |
| 542 var t = UTC_DATE_VALUE(this); | 542 var t = UTC_DATE_VALUE(this); |
| 543 hour = ToNumber(hour); | 543 hour = $toNumber(hour); |
| 544 var argc = %_ArgumentsLength(); | 544 var argc = %_ArgumentsLength(); |
| 545 min = argc < 2 ? UTC_MIN(this) : ToNumber(min); | 545 min = argc < 2 ? UTC_MIN(this) : $toNumber(min); |
| 546 sec = argc < 3 ? UTC_SEC(this) : ToNumber(sec); | 546 sec = argc < 3 ? UTC_SEC(this) : $toNumber(sec); |
| 547 ms = argc < 4 ? UTC_MS(this) : ToNumber(ms); | 547 ms = argc < 4 ? UTC_MS(this) : $toNumber(ms); |
| 548 var time = MakeTime(hour, min, sec, ms); | 548 var time = MakeTime(hour, min, sec, ms); |
| 549 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); | 549 return SET_UTC_DATE_VALUE(this, MakeDate(UTC_DAYS(this), time)); |
| 550 } | 550 } |
| 551 | 551 |
| 552 | 552 |
| 553 // ECMA 262 - 15.9.5.36 | 553 // ECMA 262 - 15.9.5.36 |
| 554 function DateSetDate(date) { | 554 function DateSetDate(date) { |
| 555 var t = LOCAL_DATE_VALUE(this); | 555 var t = LOCAL_DATE_VALUE(this); |
| 556 date = ToNumber(date); | 556 date = $toNumber(date); |
| 557 var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date); | 557 var day = MakeDay(LOCAL_YEAR(this), LOCAL_MONTH(this), date); |
| 558 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); | 558 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); |
| 559 } | 559 } |
| 560 | 560 |
| 561 | 561 |
| 562 // ECMA 262 - 15.9.5.37 | 562 // ECMA 262 - 15.9.5.37 |
| 563 function DateSetUTCDate(date) { | 563 function DateSetUTCDate(date) { |
| 564 var t = UTC_DATE_VALUE(this); | 564 var t = UTC_DATE_VALUE(this); |
| 565 date = ToNumber(date); | 565 date = $toNumber(date); |
| 566 var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date); | 566 var day = MakeDay(UTC_YEAR(this), UTC_MONTH(this), date); |
| 567 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); | 567 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); |
| 568 } | 568 } |
| 569 | 569 |
| 570 | 570 |
| 571 // ECMA 262 - 15.9.5.38 | 571 // ECMA 262 - 15.9.5.38 |
| 572 function DateSetMonth(month, date) { | 572 function DateSetMonth(month, date) { |
| 573 var t = LOCAL_DATE_VALUE(this); | 573 var t = LOCAL_DATE_VALUE(this); |
| 574 month = ToNumber(month); | 574 month = $toNumber(month); |
| 575 date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : ToNumber(date); | 575 date = %_ArgumentsLength() < 2 ? LOCAL_DAY(this) : $toNumber(date); |
| 576 var day = MakeDay(LOCAL_YEAR(this), month, date); | 576 var day = MakeDay(LOCAL_YEAR(this), month, date); |
| 577 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); | 577 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, LOCAL_TIME_IN_DAY(this))); |
| 578 } | 578 } |
| 579 | 579 |
| 580 | 580 |
| 581 // ECMA 262 - 15.9.5.39 | 581 // ECMA 262 - 15.9.5.39 |
| 582 function DateSetUTCMonth(month, date) { | 582 function DateSetUTCMonth(month, date) { |
| 583 var t = UTC_DATE_VALUE(this); | 583 var t = UTC_DATE_VALUE(this); |
| 584 month = ToNumber(month); | 584 month = $toNumber(month); |
| 585 date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : ToNumber(date); | 585 date = %_ArgumentsLength() < 2 ? UTC_DAY(this) : $toNumber(date); |
| 586 var day = MakeDay(UTC_YEAR(this), month, date); | 586 var day = MakeDay(UTC_YEAR(this), month, date); |
| 587 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); | 587 return SET_UTC_DATE_VALUE(this, MakeDate(day, UTC_TIME_IN_DAY(this))); |
| 588 } | 588 } |
| 589 | 589 |
| 590 | 590 |
| 591 // ECMA 262 - 15.9.5.40 | 591 // ECMA 262 - 15.9.5.40 |
| 592 function DateSetFullYear(year, month, date) { | 592 function DateSetFullYear(year, month, date) { |
| 593 var t = LOCAL_DATE_VALUE(this); | 593 var t = LOCAL_DATE_VALUE(this); |
| 594 year = ToNumber(year); | 594 year = $toNumber(year); |
| 595 var argc = %_ArgumentsLength(); | 595 var argc = %_ArgumentsLength(); |
| 596 var time ; | 596 var time ; |
| 597 if (NUMBER_IS_NAN(t)) { | 597 if (NUMBER_IS_NAN(t)) { |
| 598 month = argc < 2 ? 0 : ToNumber(month); | 598 month = argc < 2 ? 0 : $toNumber(month); |
| 599 date = argc < 3 ? 1 : ToNumber(date); | 599 date = argc < 3 ? 1 : $toNumber(date); |
| 600 time = 0; | 600 time = 0; |
| 601 } else { | 601 } else { |
| 602 month = argc < 2 ? LOCAL_MONTH(this) : ToNumber(month); | 602 month = argc < 2 ? LOCAL_MONTH(this) : $toNumber(month); |
| 603 date = argc < 3 ? LOCAL_DAY(this) : ToNumber(date); | 603 date = argc < 3 ? LOCAL_DAY(this) : $toNumber(date); |
| 604 time = LOCAL_TIME_IN_DAY(this); | 604 time = LOCAL_TIME_IN_DAY(this); |
| 605 } | 605 } |
| 606 var day = MakeDay(year, month, date); | 606 var day = MakeDay(year, month, date); |
| 607 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time)); | 607 return SET_LOCAL_DATE_VALUE(this, MakeDate(day, time)); |
| 608 } | 608 } |
| 609 | 609 |
| 610 | 610 |
| 611 // ECMA 262 - 15.9.5.41 | 611 // ECMA 262 - 15.9.5.41 |
| 612 function DateSetUTCFullYear(year, month, date) { | 612 function DateSetUTCFullYear(year, month, date) { |
| 613 var t = UTC_DATE_VALUE(this); | 613 var t = UTC_DATE_VALUE(this); |
| 614 year = ToNumber(year); | 614 year = $toNumber(year); |
| 615 var argc = %_ArgumentsLength(); | 615 var argc = %_ArgumentsLength(); |
| 616 var time ; | 616 var time ; |
| 617 if (NUMBER_IS_NAN(t)) { | 617 if (NUMBER_IS_NAN(t)) { |
| 618 month = argc < 2 ? 0 : ToNumber(month); | 618 month = argc < 2 ? 0 : $toNumber(month); |
| 619 date = argc < 3 ? 1 : ToNumber(date); | 619 date = argc < 3 ? 1 : $toNumber(date); |
| 620 time = 0; | 620 time = 0; |
| 621 } else { | 621 } else { |
| 622 month = argc < 2 ? UTC_MONTH(this) : ToNumber(month); | 622 month = argc < 2 ? UTC_MONTH(this) : $toNumber(month); |
| 623 date = argc < 3 ? UTC_DAY(this) : ToNumber(date); | 623 date = argc < 3 ? UTC_DAY(this) : $toNumber(date); |
| 624 time = UTC_TIME_IN_DAY(this); | 624 time = UTC_TIME_IN_DAY(this); |
| 625 } | 625 } |
| 626 var day = MakeDay(year, month, date); | 626 var day = MakeDay(year, month, date); |
| 627 return SET_UTC_DATE_VALUE(this, MakeDate(day, time)); | 627 return SET_UTC_DATE_VALUE(this, MakeDate(day, time)); |
| 628 } | 628 } |
| 629 | 629 |
| 630 | 630 |
| 631 // ECMA 262 - 15.9.5.42 | 631 // ECMA 262 - 15.9.5.42 |
| 632 function DateToUTCString() { | 632 function DateToUTCString() { |
| 633 var t = UTC_DATE_VALUE(this); | 633 var t = UTC_DATE_VALUE(this); |
| 634 if (NUMBER_IS_NAN(t)) return kInvalidDate; | 634 if (NUMBER_IS_NAN(t)) return kInvalidDate; |
| 635 // Return UTC string of the form: Sat, 31 Jan 1970 23:00:00 GMT | 635 // Return UTC string of the form: Sat, 31 Jan 1970 23:00:00 GMT |
| 636 return WeekDays[UTC_WEEKDAY(this)] + ', ' | 636 return WeekDays[UTC_WEEKDAY(this)] + ', ' |
| 637 + TwoDigitString(UTC_DAY(this)) + ' ' | 637 + TwoDigitString(UTC_DAY(this)) + ' ' |
| 638 + Months[UTC_MONTH(this)] + ' ' | 638 + Months[UTC_MONTH(this)] + ' ' |
| 639 + UTC_YEAR(this) + ' ' | 639 + UTC_YEAR(this) + ' ' |
| 640 + TimeStringUTC(this) + ' GMT'; | 640 + TimeStringUTC(this) + ' GMT'; |
| 641 } | 641 } |
| 642 | 642 |
| 643 | 643 |
| 644 // ECMA 262 - B.2.4 | 644 // ECMA 262 - B.2.4 |
| 645 function DateGetYear() { | 645 function DateGetYear() { |
| 646 return LOCAL_YEAR(this) - 1900; | 646 return LOCAL_YEAR(this) - 1900; |
| 647 } | 647 } |
| 648 | 648 |
| 649 | 649 |
| 650 // ECMA 262 - B.2.5 | 650 // ECMA 262 - B.2.5 |
| 651 function DateSetYear(year) { | 651 function DateSetYear(year) { |
| 652 CHECK_DATE(this); | 652 CHECK_DATE(this); |
| 653 year = ToNumber(year); | 653 year = $toNumber(year); |
| 654 if (NUMBER_IS_NAN(year)) return SET_UTC_DATE_VALUE(this, NAN); | 654 if (NUMBER_IS_NAN(year)) return SET_UTC_DATE_VALUE(this, NAN); |
| 655 year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99) | 655 year = (0 <= TO_INTEGER(year) && TO_INTEGER(year) <= 99) |
| 656 ? 1900 + TO_INTEGER(year) : year; | 656 ? 1900 + TO_INTEGER(year) : year; |
| 657 var t = LOCAL_DATE_VALUE(this); | 657 var t = LOCAL_DATE_VALUE(this); |
| 658 var month, date, time; | 658 var month, date, time; |
| 659 if (NUMBER_IS_NAN(t)) { | 659 if (NUMBER_IS_NAN(t)) { |
| 660 month = 0; | 660 month = 0; |
| 661 date = 1; | 661 date = 1; |
| 662 time = 0; | 662 time = 0; |
| 663 } else { | 663 } else { |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 708 '-' + PadInt(this.getUTCDate(), 2) + | 708 '-' + PadInt(this.getUTCDate(), 2) + |
| 709 'T' + PadInt(this.getUTCHours(), 2) + | 709 'T' + PadInt(this.getUTCHours(), 2) + |
| 710 ':' + PadInt(this.getUTCMinutes(), 2) + | 710 ':' + PadInt(this.getUTCMinutes(), 2) + |
| 711 ':' + PadInt(this.getUTCSeconds(), 2) + | 711 ':' + PadInt(this.getUTCSeconds(), 2) + |
| 712 '.' + PadInt(this.getUTCMilliseconds(), 3) + | 712 '.' + PadInt(this.getUTCMilliseconds(), 3) + |
| 713 'Z'; | 713 'Z'; |
| 714 } | 714 } |
| 715 | 715 |
| 716 | 716 |
| 717 function DateToJSON(key) { | 717 function DateToJSON(key) { |
| 718 var o = ToObject(this); | 718 var o = $toObject(this); |
| 719 var tv = DefaultNumber(o); | 719 var tv = $defaultNumber(o); |
| 720 if (IS_NUMBER(tv) && !NUMBER_IS_FINITE(tv)) { | 720 if (IS_NUMBER(tv) && !NUMBER_IS_FINITE(tv)) { |
| 721 return null; | 721 return null; |
| 722 } | 722 } |
| 723 return o.toISOString(); | 723 return o.toISOString(); |
| 724 } | 724 } |
| 725 | 725 |
| 726 | 726 |
| 727 var date_cache_version_holder; | 727 var date_cache_version_holder; |
| 728 var date_cache_version = NAN; | 728 var date_cache_version = NAN; |
| 729 | 729 |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 817 "getYear", DateGetYear, | 817 "getYear", DateGetYear, |
| 818 "setYear", DateSetYear, | 818 "setYear", DateSetYear, |
| 819 "toISOString", DateToISOString, | 819 "toISOString", DateToISOString, |
| 820 "toJSON", DateToJSON | 820 "toJSON", DateToJSON |
| 821 ]); | 821 ]); |
| 822 | 822 |
| 823 // Expose to the global scope. | 823 // Expose to the global scope. |
| 824 $createDate = CreateDate; | 824 $createDate = CreateDate; |
| 825 | 825 |
| 826 })(); | 826 })(); |
| OLD | NEW |