| 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 // 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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(); |
| OLD | NEW |