| OLD | NEW |
| 1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 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 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 TestMoveSmi(masm, &exit, 4, Smi::FromInt(255)); | 174 TestMoveSmi(masm, &exit, 4, Smi::FromInt(255)); |
| 175 TestMoveSmi(masm, &exit, 5, Smi::FromInt(256)); | 175 TestMoveSmi(masm, &exit, 5, Smi::FromInt(256)); |
| 176 TestMoveSmi(masm, &exit, 6, Smi::FromInt(Smi::kMaxValue)); | 176 TestMoveSmi(masm, &exit, 6, Smi::FromInt(Smi::kMaxValue)); |
| 177 TestMoveSmi(masm, &exit, 7, Smi::FromInt(-1)); | 177 TestMoveSmi(masm, &exit, 7, Smi::FromInt(-1)); |
| 178 TestMoveSmi(masm, &exit, 8, Smi::FromInt(-128)); | 178 TestMoveSmi(masm, &exit, 8, Smi::FromInt(-128)); |
| 179 TestMoveSmi(masm, &exit, 9, Smi::FromInt(-129)); | 179 TestMoveSmi(masm, &exit, 9, Smi::FromInt(-129)); |
| 180 TestMoveSmi(masm, &exit, 10, Smi::FromInt(-256)); | 180 TestMoveSmi(masm, &exit, 10, Smi::FromInt(-256)); |
| 181 TestMoveSmi(masm, &exit, 11, Smi::FromInt(-257)); | 181 TestMoveSmi(masm, &exit, 11, Smi::FromInt(-257)); |
| 182 TestMoveSmi(masm, &exit, 12, Smi::FromInt(Smi::kMinValue)); | 182 TestMoveSmi(masm, &exit, 12, Smi::FromInt(Smi::kMinValue)); |
| 183 | 183 |
| 184 __ xor_(rax, rax); // Success. | 184 __ xorq(rax, rax); // Success. |
| 185 __ bind(&exit); | 185 __ bind(&exit); |
| 186 ExitCode(masm); | 186 ExitCode(masm); |
| 187 __ ret(0); | 187 __ ret(0); |
| 188 | 188 |
| 189 CodeDesc desc; | 189 CodeDesc desc; |
| 190 masm->GetCode(&desc); | 190 masm->GetCode(&desc); |
| 191 // Call the function from C++. | 191 // Call the function from C++. |
| 192 int result = FUNCTION_CAST<F0>(buffer)(); | 192 int result = FUNCTION_CAST<F0>(buffer)(); |
| 193 CHECK_EQ(0, result); | 193 CHECK_EQ(0, result); |
| 194 } | 194 } |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 270 TestSmiCompare(masm, &exit, 0xB0, Smi::kMaxValue, 0); | 270 TestSmiCompare(masm, &exit, 0xB0, Smi::kMaxValue, 0); |
| 271 TestSmiCompare(masm, &exit, 0xC0, -1, Smi::kMinValue); | 271 TestSmiCompare(masm, &exit, 0xC0, -1, Smi::kMinValue); |
| 272 TestSmiCompare(masm, &exit, 0xD0, Smi::kMinValue, -1); | 272 TestSmiCompare(masm, &exit, 0xD0, Smi::kMinValue, -1); |
| 273 TestSmiCompare(masm, &exit, 0xE0, -1, Smi::kMaxValue); | 273 TestSmiCompare(masm, &exit, 0xE0, -1, Smi::kMaxValue); |
| 274 TestSmiCompare(masm, &exit, 0xF0, Smi::kMaxValue, -1); | 274 TestSmiCompare(masm, &exit, 0xF0, Smi::kMaxValue, -1); |
| 275 TestSmiCompare(masm, &exit, 0x100, Smi::kMinValue, Smi::kMinValue); | 275 TestSmiCompare(masm, &exit, 0x100, Smi::kMinValue, Smi::kMinValue); |
| 276 TestSmiCompare(masm, &exit, 0x110, Smi::kMinValue, Smi::kMaxValue); | 276 TestSmiCompare(masm, &exit, 0x110, Smi::kMinValue, Smi::kMaxValue); |
| 277 TestSmiCompare(masm, &exit, 0x120, Smi::kMaxValue, Smi::kMinValue); | 277 TestSmiCompare(masm, &exit, 0x120, Smi::kMaxValue, Smi::kMinValue); |
| 278 TestSmiCompare(masm, &exit, 0x130, Smi::kMaxValue, Smi::kMaxValue); | 278 TestSmiCompare(masm, &exit, 0x130, Smi::kMaxValue, Smi::kMaxValue); |
| 279 | 279 |
| 280 __ xor_(rax, rax); // Success. | 280 __ xorq(rax, rax); // Success. |
| 281 __ bind(&exit); | 281 __ bind(&exit); |
| 282 ExitCode(masm); | 282 ExitCode(masm); |
| 283 __ ret(0); | 283 __ ret(0); |
| 284 | 284 |
| 285 CodeDesc desc; | 285 CodeDesc desc; |
| 286 masm->GetCode(&desc); | 286 masm->GetCode(&desc); |
| 287 // Call the function from C++. | 287 // Call the function from C++. |
| 288 int result = FUNCTION_CAST<F0>(buffer)(); | 288 int result = FUNCTION_CAST<F0>(buffer)(); |
| 289 CHECK_EQ(0, result); | 289 CHECK_EQ(0, result); |
| 290 } | 290 } |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 373 __ j(not_equal, &exit); | 373 __ j(not_equal, &exit); |
| 374 | 374 |
| 375 __ movq(rax, Immediate(10)); // Test number. | 375 __ movq(rax, Immediate(10)); // Test number. |
| 376 __ movl(rcx, Immediate(Smi::kMinValue)); | 376 __ movl(rcx, Immediate(Smi::kMinValue)); |
| 377 __ Integer32ToSmi(r8, rcx); | 377 __ Integer32ToSmi(r8, rcx); |
| 378 __ Set(rdx, reinterpret_cast<intptr_t>(Smi::FromInt(Smi::kMinValue))); | 378 __ Set(rdx, reinterpret_cast<intptr_t>(Smi::FromInt(Smi::kMinValue))); |
| 379 __ cmpq(r8, rdx); | 379 __ cmpq(r8, rdx); |
| 380 __ j(not_equal, &exit); | 380 __ j(not_equal, &exit); |
| 381 | 381 |
| 382 | 382 |
| 383 __ xor_(rax, rax); // Success. | 383 __ xorq(rax, rax); // Success. |
| 384 __ bind(&exit); | 384 __ bind(&exit); |
| 385 ExitCode(masm); | 385 ExitCode(masm); |
| 386 __ ret(0); | 386 __ ret(0); |
| 387 | 387 |
| 388 CodeDesc desc; | 388 CodeDesc desc; |
| 389 masm->GetCode(&desc); | 389 masm->GetCode(&desc); |
| 390 // Call the function from C++. | 390 // Call the function from C++. |
| 391 int result = FUNCTION_CAST<F0>(buffer)(); | 391 int result = FUNCTION_CAST<F0>(buffer)(); |
| 392 CHECK_EQ(0, result); | 392 CHECK_EQ(0, result); |
| 393 } | 393 } |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 443 TestI64PlusConstantToSmi(masm, &exit, 0x40, Smi::kMaxValue - 5, 5); | 443 TestI64PlusConstantToSmi(masm, &exit, 0x40, Smi::kMaxValue - 5, 5); |
| 444 TestI64PlusConstantToSmi(masm, &exit, 0x50, Smi::kMinValue + 5, 5); | 444 TestI64PlusConstantToSmi(masm, &exit, 0x50, Smi::kMinValue + 5, 5); |
| 445 TestI64PlusConstantToSmi(masm, &exit, 0x60, twice_max, -Smi::kMaxValue); | 445 TestI64PlusConstantToSmi(masm, &exit, 0x60, twice_max, -Smi::kMaxValue); |
| 446 TestI64PlusConstantToSmi(masm, &exit, 0x70, -twice_max, Smi::kMaxValue); | 446 TestI64PlusConstantToSmi(masm, &exit, 0x70, -twice_max, Smi::kMaxValue); |
| 447 TestI64PlusConstantToSmi(masm, &exit, 0x80, 0, Smi::kMinValue); | 447 TestI64PlusConstantToSmi(masm, &exit, 0x80, 0, Smi::kMinValue); |
| 448 TestI64PlusConstantToSmi(masm, &exit, 0x90, 0, Smi::kMaxValue); | 448 TestI64PlusConstantToSmi(masm, &exit, 0x90, 0, Smi::kMaxValue); |
| 449 TestI64PlusConstantToSmi(masm, &exit, 0xA0, Smi::kMinValue, 0); | 449 TestI64PlusConstantToSmi(masm, &exit, 0xA0, Smi::kMinValue, 0); |
| 450 TestI64PlusConstantToSmi(masm, &exit, 0xB0, Smi::kMaxValue, 0); | 450 TestI64PlusConstantToSmi(masm, &exit, 0xB0, Smi::kMaxValue, 0); |
| 451 TestI64PlusConstantToSmi(masm, &exit, 0xC0, twice_max, Smi::kMinValue); | 451 TestI64PlusConstantToSmi(masm, &exit, 0xC0, twice_max, Smi::kMinValue); |
| 452 | 452 |
| 453 __ xor_(rax, rax); // Success. | 453 __ xorq(rax, rax); // Success. |
| 454 __ bind(&exit); | 454 __ bind(&exit); |
| 455 ExitCode(masm); | 455 ExitCode(masm); |
| 456 __ ret(0); | 456 __ ret(0); |
| 457 | 457 |
| 458 CodeDesc desc; | 458 CodeDesc desc; |
| 459 masm->GetCode(&desc); | 459 masm->GetCode(&desc); |
| 460 // Call the function from C++. | 460 // Call the function from C++. |
| 461 int result = FUNCTION_CAST<F0>(buffer)(); | 461 int result = FUNCTION_CAST<F0>(buffer)(); |
| 462 CHECK_EQ(0, result); | 462 CHECK_EQ(0, result); |
| 463 } | 463 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 483 __ movl(rax, Immediate(1)); // Test number. | 483 __ movl(rax, Immediate(1)); // Test number. |
| 484 | 484 |
| 485 // CheckSmi | 485 // CheckSmi |
| 486 | 486 |
| 487 __ movl(rcx, Immediate(0)); | 487 __ movl(rcx, Immediate(0)); |
| 488 __ Integer32ToSmi(rcx, rcx); | 488 __ Integer32ToSmi(rcx, rcx); |
| 489 cond = masm->CheckSmi(rcx); | 489 cond = masm->CheckSmi(rcx); |
| 490 __ j(NegateCondition(cond), &exit); | 490 __ j(NegateCondition(cond), &exit); |
| 491 | 491 |
| 492 __ incq(rax); | 492 __ incq(rax); |
| 493 __ xor_(rcx, Immediate(kSmiTagMask)); | 493 __ xorq(rcx, Immediate(kSmiTagMask)); |
| 494 cond = masm->CheckSmi(rcx); | 494 cond = masm->CheckSmi(rcx); |
| 495 __ j(cond, &exit); | 495 __ j(cond, &exit); |
| 496 | 496 |
| 497 __ incq(rax); | 497 __ incq(rax); |
| 498 __ movl(rcx, Immediate(-1)); | 498 __ movl(rcx, Immediate(-1)); |
| 499 __ Integer32ToSmi(rcx, rcx); | 499 __ Integer32ToSmi(rcx, rcx); |
| 500 cond = masm->CheckSmi(rcx); | 500 cond = masm->CheckSmi(rcx); |
| 501 __ j(NegateCondition(cond), &exit); | 501 __ j(NegateCondition(cond), &exit); |
| 502 | 502 |
| 503 __ incq(rax); | 503 __ incq(rax); |
| 504 __ xor_(rcx, Immediate(kSmiTagMask)); | 504 __ xorq(rcx, Immediate(kSmiTagMask)); |
| 505 cond = masm->CheckSmi(rcx); | 505 cond = masm->CheckSmi(rcx); |
| 506 __ j(cond, &exit); | 506 __ j(cond, &exit); |
| 507 | 507 |
| 508 __ incq(rax); | 508 __ incq(rax); |
| 509 __ movl(rcx, Immediate(Smi::kMaxValue)); | 509 __ movl(rcx, Immediate(Smi::kMaxValue)); |
| 510 __ Integer32ToSmi(rcx, rcx); | 510 __ Integer32ToSmi(rcx, rcx); |
| 511 cond = masm->CheckSmi(rcx); | 511 cond = masm->CheckSmi(rcx); |
| 512 __ j(NegateCondition(cond), &exit); | 512 __ j(NegateCondition(cond), &exit); |
| 513 | 513 |
| 514 __ incq(rax); | 514 __ incq(rax); |
| 515 __ xor_(rcx, Immediate(kSmiTagMask)); | 515 __ xorq(rcx, Immediate(kSmiTagMask)); |
| 516 cond = masm->CheckSmi(rcx); | 516 cond = masm->CheckSmi(rcx); |
| 517 __ j(cond, &exit); | 517 __ j(cond, &exit); |
| 518 | 518 |
| 519 __ incq(rax); | 519 __ incq(rax); |
| 520 __ movl(rcx, Immediate(Smi::kMinValue)); | 520 __ movl(rcx, Immediate(Smi::kMinValue)); |
| 521 __ Integer32ToSmi(rcx, rcx); | 521 __ Integer32ToSmi(rcx, rcx); |
| 522 cond = masm->CheckSmi(rcx); | 522 cond = masm->CheckSmi(rcx); |
| 523 __ j(NegateCondition(cond), &exit); | 523 __ j(NegateCondition(cond), &exit); |
| 524 | 524 |
| 525 __ incq(rax); | 525 __ incq(rax); |
| 526 __ xor_(rcx, Immediate(kSmiTagMask)); | 526 __ xorq(rcx, Immediate(kSmiTagMask)); |
| 527 cond = masm->CheckSmi(rcx); | 527 cond = masm->CheckSmi(rcx); |
| 528 __ j(cond, &exit); | 528 __ j(cond, &exit); |
| 529 | 529 |
| 530 // CheckPositiveSmi | 530 // CheckPositiveSmi |
| 531 | 531 |
| 532 __ incq(rax); | 532 __ incq(rax); |
| 533 __ movl(rcx, Immediate(0)); | 533 __ movl(rcx, Immediate(0)); |
| 534 __ Integer32ToSmi(rcx, rcx); | 534 __ Integer32ToSmi(rcx, rcx); |
| 535 cond = masm->CheckNonNegativeSmi(rcx); | 535 cond = masm->CheckNonNegativeSmi(rcx); |
| 536 __ j(NegateCondition(cond), &exit); | 536 __ j(NegateCondition(cond), &exit); |
| 537 | 537 |
| 538 __ incq(rax); | 538 __ incq(rax); |
| 539 __ xor_(rcx, Immediate(kSmiTagMask)); | 539 __ xorq(rcx, Immediate(kSmiTagMask)); |
| 540 cond = masm->CheckNonNegativeSmi(rcx); // "zero" non-smi. | 540 cond = masm->CheckNonNegativeSmi(rcx); // "zero" non-smi. |
| 541 __ j(cond, &exit); | 541 __ j(cond, &exit); |
| 542 | 542 |
| 543 __ incq(rax); | 543 __ incq(rax); |
| 544 __ movq(rcx, Immediate(-1)); | 544 __ movq(rcx, Immediate(-1)); |
| 545 __ Integer32ToSmi(rcx, rcx); | 545 __ Integer32ToSmi(rcx, rcx); |
| 546 cond = masm->CheckNonNegativeSmi(rcx); // Negative smis are not positive. | 546 cond = masm->CheckNonNegativeSmi(rcx); // Negative smis are not positive. |
| 547 __ j(cond, &exit); | 547 __ j(cond, &exit); |
| 548 | 548 |
| 549 __ incq(rax); | 549 __ incq(rax); |
| 550 __ movq(rcx, Immediate(Smi::kMinValue)); | 550 __ movq(rcx, Immediate(Smi::kMinValue)); |
| 551 __ Integer32ToSmi(rcx, rcx); | 551 __ Integer32ToSmi(rcx, rcx); |
| 552 cond = masm->CheckNonNegativeSmi(rcx); // Most negative smi is not positive. | 552 cond = masm->CheckNonNegativeSmi(rcx); // Most negative smi is not positive. |
| 553 __ j(cond, &exit); | 553 __ j(cond, &exit); |
| 554 | 554 |
| 555 __ incq(rax); | 555 __ incq(rax); |
| 556 __ xor_(rcx, Immediate(kSmiTagMask)); | 556 __ xorq(rcx, Immediate(kSmiTagMask)); |
| 557 cond = masm->CheckNonNegativeSmi(rcx); // "Negative" non-smi. | 557 cond = masm->CheckNonNegativeSmi(rcx); // "Negative" non-smi. |
| 558 __ j(cond, &exit); | 558 __ j(cond, &exit); |
| 559 | 559 |
| 560 __ incq(rax); | 560 __ incq(rax); |
| 561 __ movq(rcx, Immediate(Smi::kMaxValue)); | 561 __ movq(rcx, Immediate(Smi::kMaxValue)); |
| 562 __ Integer32ToSmi(rcx, rcx); | 562 __ Integer32ToSmi(rcx, rcx); |
| 563 cond = masm->CheckNonNegativeSmi(rcx); // Most positive smi is positive. | 563 cond = masm->CheckNonNegativeSmi(rcx); // Most positive smi is positive. |
| 564 __ j(NegateCondition(cond), &exit); | 564 __ j(NegateCondition(cond), &exit); |
| 565 | 565 |
| 566 __ incq(rax); | 566 __ incq(rax); |
| 567 __ xor_(rcx, Immediate(kSmiTagMask)); | 567 __ xorq(rcx, Immediate(kSmiTagMask)); |
| 568 cond = masm->CheckNonNegativeSmi(rcx); // "Positive" non-smi. | 568 cond = masm->CheckNonNegativeSmi(rcx); // "Positive" non-smi. |
| 569 __ j(cond, &exit); | 569 __ j(cond, &exit); |
| 570 | 570 |
| 571 // CheckIsMinSmi | 571 // CheckIsMinSmi |
| 572 | 572 |
| 573 __ incq(rax); | 573 __ incq(rax); |
| 574 __ movq(rcx, Immediate(Smi::kMaxValue)); | 574 __ movq(rcx, Immediate(Smi::kMaxValue)); |
| 575 __ Integer32ToSmi(rcx, rcx); | 575 __ Integer32ToSmi(rcx, rcx); |
| 576 cond = masm->CheckIsMinSmi(rcx); | 576 cond = masm->CheckIsMinSmi(rcx); |
| 577 __ j(cond, &exit); | 577 __ j(cond, &exit); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 598 | 598 |
| 599 __ incq(rax); | 599 __ incq(rax); |
| 600 __ movq(rcx, Immediate(Smi::kMaxValue)); | 600 __ movq(rcx, Immediate(Smi::kMaxValue)); |
| 601 __ Integer32ToSmi(rcx, rcx); | 601 __ Integer32ToSmi(rcx, rcx); |
| 602 __ movq(rdx, Immediate(Smi::kMinValue)); | 602 __ movq(rdx, Immediate(Smi::kMinValue)); |
| 603 __ Integer32ToSmi(rdx, rdx); | 603 __ Integer32ToSmi(rdx, rdx); |
| 604 cond = masm->CheckBothSmi(rcx, rdx); | 604 cond = masm->CheckBothSmi(rcx, rdx); |
| 605 __ j(NegateCondition(cond), &exit); | 605 __ j(NegateCondition(cond), &exit); |
| 606 | 606 |
| 607 __ incq(rax); | 607 __ incq(rax); |
| 608 __ xor_(rcx, Immediate(kSmiTagMask)); | 608 __ xorq(rcx, Immediate(kSmiTagMask)); |
| 609 cond = masm->CheckBothSmi(rcx, rdx); | 609 cond = masm->CheckBothSmi(rcx, rdx); |
| 610 __ j(cond, &exit); | 610 __ j(cond, &exit); |
| 611 | 611 |
| 612 __ incq(rax); | 612 __ incq(rax); |
| 613 __ xor_(rdx, Immediate(kSmiTagMask)); | 613 __ xorq(rdx, Immediate(kSmiTagMask)); |
| 614 cond = masm->CheckBothSmi(rcx, rdx); | 614 cond = masm->CheckBothSmi(rcx, rdx); |
| 615 __ j(cond, &exit); | 615 __ j(cond, &exit); |
| 616 | 616 |
| 617 __ incq(rax); | 617 __ incq(rax); |
| 618 __ xor_(rcx, Immediate(kSmiTagMask)); | 618 __ xorq(rcx, Immediate(kSmiTagMask)); |
| 619 cond = masm->CheckBothSmi(rcx, rdx); | 619 cond = masm->CheckBothSmi(rcx, rdx); |
| 620 __ j(cond, &exit); | 620 __ j(cond, &exit); |
| 621 | 621 |
| 622 __ incq(rax); | 622 __ incq(rax); |
| 623 cond = masm->CheckBothSmi(rcx, rcx); | 623 cond = masm->CheckBothSmi(rcx, rcx); |
| 624 __ j(NegateCondition(cond), &exit); | 624 __ j(NegateCondition(cond), &exit); |
| 625 | 625 |
| 626 __ incq(rax); | 626 __ incq(rax); |
| 627 cond = masm->CheckBothSmi(rdx, rdx); | 627 cond = masm->CheckBothSmi(rdx, rdx); |
| 628 __ j(cond, &exit); | 628 __ j(cond, &exit); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 642 __ movq(rcx, Immediate(Smi::kMaxValue)); | 642 __ movq(rcx, Immediate(Smi::kMaxValue)); |
| 643 cond = masm->CheckInteger32ValidSmiValue(rax); | 643 cond = masm->CheckInteger32ValidSmiValue(rax); |
| 644 __ j(NegateCondition(cond), &exit); | 644 __ j(NegateCondition(cond), &exit); |
| 645 | 645 |
| 646 __ incq(rax); | 646 __ incq(rax); |
| 647 __ movq(rcx, Immediate(Smi::kMinValue)); | 647 __ movq(rcx, Immediate(Smi::kMinValue)); |
| 648 cond = masm->CheckInteger32ValidSmiValue(rax); | 648 cond = masm->CheckInteger32ValidSmiValue(rax); |
| 649 __ j(NegateCondition(cond), &exit); | 649 __ j(NegateCondition(cond), &exit); |
| 650 | 650 |
| 651 // Success | 651 // Success |
| 652 __ xor_(rax, rax); | 652 __ xorq(rax, rax); |
| 653 | 653 |
| 654 __ bind(&exit); | 654 __ bind(&exit); |
| 655 ExitCode(masm); | 655 ExitCode(masm); |
| 656 __ ret(0); | 656 __ ret(0); |
| 657 | 657 |
| 658 CodeDesc desc; | 658 CodeDesc desc; |
| 659 masm->GetCode(&desc); | 659 masm->GetCode(&desc); |
| 660 // Call the function from C++. | 660 // Call the function from C++. |
| 661 int result = FUNCTION_CAST<F0>(buffer)(); | 661 int result = FUNCTION_CAST<F0>(buffer)(); |
| 662 CHECK_EQ(0, result); | 662 CHECK_EQ(0, result); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 729 | 729 |
| 730 TestSmiNeg(masm, &exit, 0x10, 0); | 730 TestSmiNeg(masm, &exit, 0x10, 0); |
| 731 TestSmiNeg(masm, &exit, 0x20, 1); | 731 TestSmiNeg(masm, &exit, 0x20, 1); |
| 732 TestSmiNeg(masm, &exit, 0x30, -1); | 732 TestSmiNeg(masm, &exit, 0x30, -1); |
| 733 TestSmiNeg(masm, &exit, 0x40, 127); | 733 TestSmiNeg(masm, &exit, 0x40, 127); |
| 734 TestSmiNeg(masm, &exit, 0x50, 65535); | 734 TestSmiNeg(masm, &exit, 0x50, 65535); |
| 735 TestSmiNeg(masm, &exit, 0x60, Smi::kMinValue); | 735 TestSmiNeg(masm, &exit, 0x60, Smi::kMinValue); |
| 736 TestSmiNeg(masm, &exit, 0x70, Smi::kMaxValue); | 736 TestSmiNeg(masm, &exit, 0x70, Smi::kMaxValue); |
| 737 TestSmiNeg(masm, &exit, 0x80, -Smi::kMaxValue); | 737 TestSmiNeg(masm, &exit, 0x80, -Smi::kMaxValue); |
| 738 | 738 |
| 739 __ xor_(rax, rax); // Success. | 739 __ xorq(rax, rax); // Success. |
| 740 __ bind(&exit); | 740 __ bind(&exit); |
| 741 ExitCode(masm); | 741 ExitCode(masm); |
| 742 __ ret(0); | 742 __ ret(0); |
| 743 | 743 |
| 744 CodeDesc desc; | 744 CodeDesc desc; |
| 745 masm->GetCode(&desc); | 745 masm->GetCode(&desc); |
| 746 // Call the function from C++. | 746 // Call the function from C++. |
| 747 int result = FUNCTION_CAST<F0>(buffer)(); | 747 int result = FUNCTION_CAST<F0>(buffer)(); |
| 748 CHECK_EQ(0, result); | 748 CHECK_EQ(0, result); |
| 749 } | 749 } |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 954 SmiAddTest(masm, &exit, 0x80, Smi::kMaxValue, Smi::kMinValue); | 954 SmiAddTest(masm, &exit, 0x80, Smi::kMaxValue, Smi::kMinValue); |
| 955 | 955 |
| 956 SmiAddOverflowTest(masm, &exit, 0x90, -1); | 956 SmiAddOverflowTest(masm, &exit, 0x90, -1); |
| 957 SmiAddOverflowTest(masm, &exit, 0xA0, 1); | 957 SmiAddOverflowTest(masm, &exit, 0xA0, 1); |
| 958 SmiAddOverflowTest(masm, &exit, 0xB0, 1024); | 958 SmiAddOverflowTest(masm, &exit, 0xB0, 1024); |
| 959 SmiAddOverflowTest(masm, &exit, 0xC0, Smi::kMaxValue); | 959 SmiAddOverflowTest(masm, &exit, 0xC0, Smi::kMaxValue); |
| 960 SmiAddOverflowTest(masm, &exit, 0xD0, -2); | 960 SmiAddOverflowTest(masm, &exit, 0xD0, -2); |
| 961 SmiAddOverflowTest(masm, &exit, 0xE0, -42000); | 961 SmiAddOverflowTest(masm, &exit, 0xE0, -42000); |
| 962 SmiAddOverflowTest(masm, &exit, 0xF0, Smi::kMinValue); | 962 SmiAddOverflowTest(masm, &exit, 0xF0, Smi::kMinValue); |
| 963 | 963 |
| 964 __ xor_(rax, rax); // Success. | 964 __ xorq(rax, rax); // Success. |
| 965 __ bind(&exit); | 965 __ bind(&exit); |
| 966 ExitCode(masm); | 966 ExitCode(masm); |
| 967 __ ret(0); | 967 __ ret(0); |
| 968 | 968 |
| 969 CodeDesc desc; | 969 CodeDesc desc; |
| 970 masm->GetCode(&desc); | 970 masm->GetCode(&desc); |
| 971 // Call the function from C++. | 971 // Call the function from C++. |
| 972 int result = FUNCTION_CAST<F0>(buffer)(); | 972 int result = FUNCTION_CAST<F0>(buffer)(); |
| 973 CHECK_EQ(0, result); | 973 CHECK_EQ(0, result); |
| 974 } | 974 } |
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1175 SmiSubTest(masm, &exit, 0x90, 0, Smi::kMaxValue); | 1175 SmiSubTest(masm, &exit, 0x90, 0, Smi::kMaxValue); |
| 1176 | 1176 |
| 1177 SmiSubOverflowTest(masm, &exit, 0xA0, 1); | 1177 SmiSubOverflowTest(masm, &exit, 0xA0, 1); |
| 1178 SmiSubOverflowTest(masm, &exit, 0xB0, 1024); | 1178 SmiSubOverflowTest(masm, &exit, 0xB0, 1024); |
| 1179 SmiSubOverflowTest(masm, &exit, 0xC0, Smi::kMaxValue); | 1179 SmiSubOverflowTest(masm, &exit, 0xC0, Smi::kMaxValue); |
| 1180 SmiSubOverflowTest(masm, &exit, 0xD0, -2); | 1180 SmiSubOverflowTest(masm, &exit, 0xD0, -2); |
| 1181 SmiSubOverflowTest(masm, &exit, 0xE0, -42000); | 1181 SmiSubOverflowTest(masm, &exit, 0xE0, -42000); |
| 1182 SmiSubOverflowTest(masm, &exit, 0xF0, Smi::kMinValue); | 1182 SmiSubOverflowTest(masm, &exit, 0xF0, Smi::kMinValue); |
| 1183 SmiSubOverflowTest(masm, &exit, 0x100, 0); | 1183 SmiSubOverflowTest(masm, &exit, 0x100, 0); |
| 1184 | 1184 |
| 1185 __ xor_(rax, rax); // Success. | 1185 __ xorq(rax, rax); // Success. |
| 1186 __ bind(&exit); | 1186 __ bind(&exit); |
| 1187 ExitCode(masm); | 1187 ExitCode(masm); |
| 1188 __ ret(0); | 1188 __ ret(0); |
| 1189 | 1189 |
| 1190 CodeDesc desc; | 1190 CodeDesc desc; |
| 1191 masm->GetCode(&desc); | 1191 masm->GetCode(&desc); |
| 1192 // Call the function from C++. | 1192 // Call the function from C++. |
| 1193 int result = FUNCTION_CAST<F0>(buffer)(); | 1193 int result = FUNCTION_CAST<F0>(buffer)(); |
| 1194 CHECK_EQ(0, result); | 1194 CHECK_EQ(0, result); |
| 1195 } | 1195 } |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1262 TestSmiMul(masm, &exit, 0x60, 0x10000, 0xffff); | 1262 TestSmiMul(masm, &exit, 0x60, 0x10000, 0xffff); |
| 1263 TestSmiMul(masm, &exit, 0x70, 0x10000, 0xffff); | 1263 TestSmiMul(masm, &exit, 0x70, 0x10000, 0xffff); |
| 1264 TestSmiMul(masm, &exit, 0x80, Smi::kMaxValue, -1); | 1264 TestSmiMul(masm, &exit, 0x80, Smi::kMaxValue, -1); |
| 1265 TestSmiMul(masm, &exit, 0x90, Smi::kMaxValue, -2); | 1265 TestSmiMul(masm, &exit, 0x90, Smi::kMaxValue, -2); |
| 1266 TestSmiMul(masm, &exit, 0xa0, Smi::kMaxValue, 2); | 1266 TestSmiMul(masm, &exit, 0xa0, Smi::kMaxValue, 2); |
| 1267 TestSmiMul(masm, &exit, 0xb0, (Smi::kMaxValue / 2), 2); | 1267 TestSmiMul(masm, &exit, 0xb0, (Smi::kMaxValue / 2), 2); |
| 1268 TestSmiMul(masm, &exit, 0xc0, (Smi::kMaxValue / 2) + 1, 2); | 1268 TestSmiMul(masm, &exit, 0xc0, (Smi::kMaxValue / 2) + 1, 2); |
| 1269 TestSmiMul(masm, &exit, 0xd0, (Smi::kMinValue / 2), 2); | 1269 TestSmiMul(masm, &exit, 0xd0, (Smi::kMinValue / 2), 2); |
| 1270 TestSmiMul(masm, &exit, 0xe0, (Smi::kMinValue / 2) - 1, 2); | 1270 TestSmiMul(masm, &exit, 0xe0, (Smi::kMinValue / 2) - 1, 2); |
| 1271 | 1271 |
| 1272 __ xor_(rax, rax); // Success. | 1272 __ xorq(rax, rax); // Success. |
| 1273 __ bind(&exit); | 1273 __ bind(&exit); |
| 1274 ExitCode(masm); | 1274 ExitCode(masm); |
| 1275 __ ret(0); | 1275 __ ret(0); |
| 1276 | 1276 |
| 1277 CodeDesc desc; | 1277 CodeDesc desc; |
| 1278 masm->GetCode(&desc); | 1278 masm->GetCode(&desc); |
| 1279 // Call the function from C++. | 1279 // Call the function from C++. |
| 1280 int result = FUNCTION_CAST<F0>(buffer)(); | 1280 int result = FUNCTION_CAST<F0>(buffer)(); |
| 1281 CHECK_EQ(0, result); | 1281 CHECK_EQ(0, result); |
| 1282 } | 1282 } |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1376 TestSmiDiv(masm, &exit, 0xc0, 1, Smi::kMaxValue); | 1376 TestSmiDiv(masm, &exit, 0xc0, 1, Smi::kMaxValue); |
| 1377 TestSmiDiv(masm, &exit, 0xd0, -1, Smi::kMaxValue); | 1377 TestSmiDiv(masm, &exit, 0xd0, -1, Smi::kMaxValue); |
| 1378 TestSmiDiv(masm, &exit, 0xe0, Smi::kMaxValue, 1); | 1378 TestSmiDiv(masm, &exit, 0xe0, Smi::kMaxValue, 1); |
| 1379 TestSmiDiv(masm, &exit, 0xf0, Smi::kMaxValue, Smi::kMaxValue); | 1379 TestSmiDiv(masm, &exit, 0xf0, Smi::kMaxValue, Smi::kMaxValue); |
| 1380 TestSmiDiv(masm, &exit, 0x100, Smi::kMaxValue, -Smi::kMaxValue); | 1380 TestSmiDiv(masm, &exit, 0x100, Smi::kMaxValue, -Smi::kMaxValue); |
| 1381 TestSmiDiv(masm, &exit, 0x110, Smi::kMaxValue, -1); | 1381 TestSmiDiv(masm, &exit, 0x110, Smi::kMaxValue, -1); |
| 1382 TestSmiDiv(masm, &exit, 0x120, Smi::kMinValue, 1); | 1382 TestSmiDiv(masm, &exit, 0x120, Smi::kMinValue, 1); |
| 1383 TestSmiDiv(masm, &exit, 0x130, Smi::kMinValue, Smi::kMinValue); | 1383 TestSmiDiv(masm, &exit, 0x130, Smi::kMinValue, Smi::kMinValue); |
| 1384 TestSmiDiv(masm, &exit, 0x140, Smi::kMinValue, -1); | 1384 TestSmiDiv(masm, &exit, 0x140, Smi::kMinValue, -1); |
| 1385 | 1385 |
| 1386 __ xor_(r15, r15); // Success. | 1386 __ xorq(r15, r15); // Success. |
| 1387 __ bind(&exit); | 1387 __ bind(&exit); |
| 1388 __ movq(rax, r15); | 1388 __ movq(rax, r15); |
| 1389 __ popq(r15); | 1389 __ popq(r15); |
| 1390 __ popq(r14); | 1390 __ popq(r14); |
| 1391 ExitCode(masm); | 1391 ExitCode(masm); |
| 1392 __ ret(0); | 1392 __ ret(0); |
| 1393 | 1393 |
| 1394 CodeDesc desc; | 1394 CodeDesc desc; |
| 1395 masm->GetCode(&desc); | 1395 masm->GetCode(&desc); |
| 1396 // Call the function from C++. | 1396 // Call the function from C++. |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1486 TestSmiMod(masm, &exit, 0xc0, 1, Smi::kMaxValue); | 1486 TestSmiMod(masm, &exit, 0xc0, 1, Smi::kMaxValue); |
| 1487 TestSmiMod(masm, &exit, 0xd0, -1, Smi::kMaxValue); | 1487 TestSmiMod(masm, &exit, 0xd0, -1, Smi::kMaxValue); |
| 1488 TestSmiMod(masm, &exit, 0xe0, Smi::kMaxValue, 1); | 1488 TestSmiMod(masm, &exit, 0xe0, Smi::kMaxValue, 1); |
| 1489 TestSmiMod(masm, &exit, 0xf0, Smi::kMaxValue, Smi::kMaxValue); | 1489 TestSmiMod(masm, &exit, 0xf0, Smi::kMaxValue, Smi::kMaxValue); |
| 1490 TestSmiMod(masm, &exit, 0x100, Smi::kMaxValue, -Smi::kMaxValue); | 1490 TestSmiMod(masm, &exit, 0x100, Smi::kMaxValue, -Smi::kMaxValue); |
| 1491 TestSmiMod(masm, &exit, 0x110, Smi::kMaxValue, -1); | 1491 TestSmiMod(masm, &exit, 0x110, Smi::kMaxValue, -1); |
| 1492 TestSmiMod(masm, &exit, 0x120, Smi::kMinValue, 1); | 1492 TestSmiMod(masm, &exit, 0x120, Smi::kMinValue, 1); |
| 1493 TestSmiMod(masm, &exit, 0x130, Smi::kMinValue, Smi::kMinValue); | 1493 TestSmiMod(masm, &exit, 0x130, Smi::kMinValue, Smi::kMinValue); |
| 1494 TestSmiMod(masm, &exit, 0x140, Smi::kMinValue, -1); | 1494 TestSmiMod(masm, &exit, 0x140, Smi::kMinValue, -1); |
| 1495 | 1495 |
| 1496 __ xor_(r15, r15); // Success. | 1496 __ xorq(r15, r15); // Success. |
| 1497 __ bind(&exit); | 1497 __ bind(&exit); |
| 1498 __ movq(rax, r15); | 1498 __ movq(rax, r15); |
| 1499 __ popq(r15); | 1499 __ popq(r15); |
| 1500 __ popq(r14); | 1500 __ popq(r14); |
| 1501 ExitCode(masm); | 1501 ExitCode(masm); |
| 1502 __ ret(0); | 1502 __ ret(0); |
| 1503 | 1503 |
| 1504 CodeDesc desc; | 1504 CodeDesc desc; |
| 1505 masm->GetCode(&desc); | 1505 masm->GetCode(&desc); |
| 1506 // Call the function from C++. | 1506 // Call the function from C++. |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1566 MacroAssembler* masm = &assembler; | 1566 MacroAssembler* masm = &assembler; |
| 1567 EntryCode(masm); | 1567 EntryCode(masm); |
| 1568 Label exit; | 1568 Label exit; |
| 1569 | 1569 |
| 1570 TestSmiIndex(masm, &exit, 0x10, 0); | 1570 TestSmiIndex(masm, &exit, 0x10, 0); |
| 1571 TestSmiIndex(masm, &exit, 0x20, 1); | 1571 TestSmiIndex(masm, &exit, 0x20, 1); |
| 1572 TestSmiIndex(masm, &exit, 0x30, 100); | 1572 TestSmiIndex(masm, &exit, 0x30, 100); |
| 1573 TestSmiIndex(masm, &exit, 0x40, 1000); | 1573 TestSmiIndex(masm, &exit, 0x40, 1000); |
| 1574 TestSmiIndex(masm, &exit, 0x50, Smi::kMaxValue); | 1574 TestSmiIndex(masm, &exit, 0x50, Smi::kMaxValue); |
| 1575 | 1575 |
| 1576 __ xor_(rax, rax); // Success. | 1576 __ xorq(rax, rax); // Success. |
| 1577 __ bind(&exit); | 1577 __ bind(&exit); |
| 1578 ExitCode(masm); | 1578 ExitCode(masm); |
| 1579 __ ret(0); | 1579 __ ret(0); |
| 1580 | 1580 |
| 1581 CodeDesc desc; | 1581 CodeDesc desc; |
| 1582 masm->GetCode(&desc); | 1582 masm->GetCode(&desc); |
| 1583 // Call the function from C++. | 1583 // Call the function from C++. |
| 1584 int result = FUNCTION_CAST<F0>(buffer)(); | 1584 int result = FUNCTION_CAST<F0>(buffer)(); |
| 1585 CHECK_EQ(0, result); | 1585 CHECK_EQ(0, result); |
| 1586 } | 1586 } |
| 1587 | 1587 |
| 1588 | 1588 |
| 1589 void TestSelectNonSmi(MacroAssembler* masm, Label* exit, int id, int x, int y) { | 1589 void TestSelectNonSmi(MacroAssembler* masm, Label* exit, int id, int x, int y) { |
| 1590 __ movl(rax, Immediate(id)); | 1590 __ movl(rax, Immediate(id)); |
| 1591 __ Move(rcx, Smi::FromInt(x)); | 1591 __ Move(rcx, Smi::FromInt(x)); |
| 1592 __ Move(rdx, Smi::FromInt(y)); | 1592 __ Move(rdx, Smi::FromInt(y)); |
| 1593 __ xor_(rdx, Immediate(kSmiTagMask)); | 1593 __ xorq(rdx, Immediate(kSmiTagMask)); |
| 1594 __ SelectNonSmi(r9, rcx, rdx, exit); | 1594 __ SelectNonSmi(r9, rcx, rdx, exit); |
| 1595 | 1595 |
| 1596 __ incq(rax); | 1596 __ incq(rax); |
| 1597 __ cmpq(r9, rdx); | 1597 __ cmpq(r9, rdx); |
| 1598 __ j(not_equal, exit); | 1598 __ j(not_equal, exit); |
| 1599 | 1599 |
| 1600 __ incq(rax); | 1600 __ incq(rax); |
| 1601 __ Move(rcx, Smi::FromInt(x)); | 1601 __ Move(rcx, Smi::FromInt(x)); |
| 1602 __ Move(rdx, Smi::FromInt(y)); | 1602 __ Move(rdx, Smi::FromInt(y)); |
| 1603 __ xor_(rcx, Immediate(kSmiTagMask)); | 1603 __ xorq(rcx, Immediate(kSmiTagMask)); |
| 1604 __ SelectNonSmi(r9, rcx, rdx, exit); | 1604 __ SelectNonSmi(r9, rcx, rdx, exit); |
| 1605 | 1605 |
| 1606 __ incq(rax); | 1606 __ incq(rax); |
| 1607 __ cmpq(r9, rcx); | 1607 __ cmpq(r9, rcx); |
| 1608 __ j(not_equal, exit); | 1608 __ j(not_equal, exit); |
| 1609 | 1609 |
| 1610 __ incq(rax); | 1610 __ incq(rax); |
| 1611 Label fail_ok; | 1611 Label fail_ok; |
| 1612 __ Move(rcx, Smi::FromInt(x)); | 1612 __ Move(rcx, Smi::FromInt(x)); |
| 1613 __ Move(rdx, Smi::FromInt(y)); | 1613 __ Move(rdx, Smi::FromInt(y)); |
| 1614 __ xor_(rcx, Immediate(kSmiTagMask)); | 1614 __ xorq(rcx, Immediate(kSmiTagMask)); |
| 1615 __ xor_(rdx, Immediate(kSmiTagMask)); | 1615 __ xorq(rdx, Immediate(kSmiTagMask)); |
| 1616 __ SelectNonSmi(r9, rcx, rdx, &fail_ok); | 1616 __ SelectNonSmi(r9, rcx, rdx, &fail_ok); |
| 1617 __ jmp(exit); | 1617 __ jmp(exit); |
| 1618 __ bind(&fail_ok); | 1618 __ bind(&fail_ok); |
| 1619 } | 1619 } |
| 1620 | 1620 |
| 1621 | 1621 |
| 1622 TEST(SmiSelectNonSmi) { | 1622 TEST(SmiSelectNonSmi) { |
| 1623 i::V8::Initialize(NULL); | 1623 i::V8::Initialize(NULL); |
| 1624 // Allocate an executable page of memory. | 1624 // Allocate an executable page of memory. |
| 1625 size_t actual_size; | 1625 size_t actual_size; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1639 TestSelectNonSmi(masm, &exit, 0x10, 0, 0); | 1639 TestSelectNonSmi(masm, &exit, 0x10, 0, 0); |
| 1640 TestSelectNonSmi(masm, &exit, 0x20, 0, 1); | 1640 TestSelectNonSmi(masm, &exit, 0x20, 0, 1); |
| 1641 TestSelectNonSmi(masm, &exit, 0x30, 1, 0); | 1641 TestSelectNonSmi(masm, &exit, 0x30, 1, 0); |
| 1642 TestSelectNonSmi(masm, &exit, 0x40, 0, -1); | 1642 TestSelectNonSmi(masm, &exit, 0x40, 0, -1); |
| 1643 TestSelectNonSmi(masm, &exit, 0x50, -1, 0); | 1643 TestSelectNonSmi(masm, &exit, 0x50, -1, 0); |
| 1644 TestSelectNonSmi(masm, &exit, 0x60, -1, -1); | 1644 TestSelectNonSmi(masm, &exit, 0x60, -1, -1); |
| 1645 TestSelectNonSmi(masm, &exit, 0x70, 1, 1); | 1645 TestSelectNonSmi(masm, &exit, 0x70, 1, 1); |
| 1646 TestSelectNonSmi(masm, &exit, 0x80, Smi::kMinValue, Smi::kMaxValue); | 1646 TestSelectNonSmi(masm, &exit, 0x80, Smi::kMinValue, Smi::kMaxValue); |
| 1647 TestSelectNonSmi(masm, &exit, 0x90, Smi::kMinValue, Smi::kMinValue); | 1647 TestSelectNonSmi(masm, &exit, 0x90, Smi::kMinValue, Smi::kMinValue); |
| 1648 | 1648 |
| 1649 __ xor_(rax, rax); // Success. | 1649 __ xorq(rax, rax); // Success. |
| 1650 __ bind(&exit); | 1650 __ bind(&exit); |
| 1651 ExitCode(masm); | 1651 ExitCode(masm); |
| 1652 __ ret(0); | 1652 __ ret(0); |
| 1653 | 1653 |
| 1654 CodeDesc desc; | 1654 CodeDesc desc; |
| 1655 masm->GetCode(&desc); | 1655 masm->GetCode(&desc); |
| 1656 // Call the function from C++. | 1656 // Call the function from C++. |
| 1657 int result = FUNCTION_CAST<F0>(buffer)(); | 1657 int result = FUNCTION_CAST<F0>(buffer)(); |
| 1658 CHECK_EQ(0, result); | 1658 CHECK_EQ(0, result); |
| 1659 } | 1659 } |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1720 TestSmiAnd(masm, &exit, 0x30, 1, 0); | 1720 TestSmiAnd(masm, &exit, 0x30, 1, 0); |
| 1721 TestSmiAnd(masm, &exit, 0x40, 0, -1); | 1721 TestSmiAnd(masm, &exit, 0x40, 0, -1); |
| 1722 TestSmiAnd(masm, &exit, 0x50, -1, 0); | 1722 TestSmiAnd(masm, &exit, 0x50, -1, 0); |
| 1723 TestSmiAnd(masm, &exit, 0x60, -1, -1); | 1723 TestSmiAnd(masm, &exit, 0x60, -1, -1); |
| 1724 TestSmiAnd(masm, &exit, 0x70, 1, 1); | 1724 TestSmiAnd(masm, &exit, 0x70, 1, 1); |
| 1725 TestSmiAnd(masm, &exit, 0x80, Smi::kMinValue, Smi::kMaxValue); | 1725 TestSmiAnd(masm, &exit, 0x80, Smi::kMinValue, Smi::kMaxValue); |
| 1726 TestSmiAnd(masm, &exit, 0x90, Smi::kMinValue, Smi::kMinValue); | 1726 TestSmiAnd(masm, &exit, 0x90, Smi::kMinValue, Smi::kMinValue); |
| 1727 TestSmiAnd(masm, &exit, 0xA0, Smi::kMinValue, -1); | 1727 TestSmiAnd(masm, &exit, 0xA0, Smi::kMinValue, -1); |
| 1728 TestSmiAnd(masm, &exit, 0xB0, Smi::kMinValue, -1); | 1728 TestSmiAnd(masm, &exit, 0xB0, Smi::kMinValue, -1); |
| 1729 | 1729 |
| 1730 __ xor_(rax, rax); // Success. | 1730 __ xorq(rax, rax); // Success. |
| 1731 __ bind(&exit); | 1731 __ bind(&exit); |
| 1732 ExitCode(masm); | 1732 ExitCode(masm); |
| 1733 __ ret(0); | 1733 __ ret(0); |
| 1734 | 1734 |
| 1735 CodeDesc desc; | 1735 CodeDesc desc; |
| 1736 masm->GetCode(&desc); | 1736 masm->GetCode(&desc); |
| 1737 // Call the function from C++. | 1737 // Call the function from C++. |
| 1738 int result = FUNCTION_CAST<F0>(buffer)(); | 1738 int result = FUNCTION_CAST<F0>(buffer)(); |
| 1739 CHECK_EQ(0, result); | 1739 CHECK_EQ(0, result); |
| 1740 } | 1740 } |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1803 TestSmiOr(masm, &exit, 0x50, -1, 0); | 1803 TestSmiOr(masm, &exit, 0x50, -1, 0); |
| 1804 TestSmiOr(masm, &exit, 0x60, -1, -1); | 1804 TestSmiOr(masm, &exit, 0x60, -1, -1); |
| 1805 TestSmiOr(masm, &exit, 0x70, 1, 1); | 1805 TestSmiOr(masm, &exit, 0x70, 1, 1); |
| 1806 TestSmiOr(masm, &exit, 0x80, Smi::kMinValue, Smi::kMaxValue); | 1806 TestSmiOr(masm, &exit, 0x80, Smi::kMinValue, Smi::kMaxValue); |
| 1807 TestSmiOr(masm, &exit, 0x90, Smi::kMinValue, Smi::kMinValue); | 1807 TestSmiOr(masm, &exit, 0x90, Smi::kMinValue, Smi::kMinValue); |
| 1808 TestSmiOr(masm, &exit, 0xA0, Smi::kMinValue, -1); | 1808 TestSmiOr(masm, &exit, 0xA0, Smi::kMinValue, -1); |
| 1809 TestSmiOr(masm, &exit, 0xB0, 0x05555555, 0x01234567); | 1809 TestSmiOr(masm, &exit, 0xB0, 0x05555555, 0x01234567); |
| 1810 TestSmiOr(masm, &exit, 0xC0, 0x05555555, 0x0fedcba9); | 1810 TestSmiOr(masm, &exit, 0xC0, 0x05555555, 0x0fedcba9); |
| 1811 TestSmiOr(masm, &exit, 0xD0, Smi::kMinValue, -1); | 1811 TestSmiOr(masm, &exit, 0xD0, Smi::kMinValue, -1); |
| 1812 | 1812 |
| 1813 __ xor_(rax, rax); // Success. | 1813 __ xorq(rax, rax); // Success. |
| 1814 __ bind(&exit); | 1814 __ bind(&exit); |
| 1815 ExitCode(masm); | 1815 ExitCode(masm); |
| 1816 __ ret(0); | 1816 __ ret(0); |
| 1817 | 1817 |
| 1818 CodeDesc desc; | 1818 CodeDesc desc; |
| 1819 masm->GetCode(&desc); | 1819 masm->GetCode(&desc); |
| 1820 // Call the function from C++. | 1820 // Call the function from C++. |
| 1821 int result = FUNCTION_CAST<F0>(buffer)(); | 1821 int result = FUNCTION_CAST<F0>(buffer)(); |
| 1822 CHECK_EQ(0, result); | 1822 CHECK_EQ(0, result); |
| 1823 } | 1823 } |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1886 TestSmiXor(masm, &exit, 0x50, -1, 0); | 1886 TestSmiXor(masm, &exit, 0x50, -1, 0); |
| 1887 TestSmiXor(masm, &exit, 0x60, -1, -1); | 1887 TestSmiXor(masm, &exit, 0x60, -1, -1); |
| 1888 TestSmiXor(masm, &exit, 0x70, 1, 1); | 1888 TestSmiXor(masm, &exit, 0x70, 1, 1); |
| 1889 TestSmiXor(masm, &exit, 0x80, Smi::kMinValue, Smi::kMaxValue); | 1889 TestSmiXor(masm, &exit, 0x80, Smi::kMinValue, Smi::kMaxValue); |
| 1890 TestSmiXor(masm, &exit, 0x90, Smi::kMinValue, Smi::kMinValue); | 1890 TestSmiXor(masm, &exit, 0x90, Smi::kMinValue, Smi::kMinValue); |
| 1891 TestSmiXor(masm, &exit, 0xA0, Smi::kMinValue, -1); | 1891 TestSmiXor(masm, &exit, 0xA0, Smi::kMinValue, -1); |
| 1892 TestSmiXor(masm, &exit, 0xB0, 0x5555555, 0x01234567); | 1892 TestSmiXor(masm, &exit, 0xB0, 0x5555555, 0x01234567); |
| 1893 TestSmiXor(masm, &exit, 0xC0, 0x5555555, 0x0fedcba9); | 1893 TestSmiXor(masm, &exit, 0xC0, 0x5555555, 0x0fedcba9); |
| 1894 TestSmiXor(masm, &exit, 0xD0, Smi::kMinValue, -1); | 1894 TestSmiXor(masm, &exit, 0xD0, Smi::kMinValue, -1); |
| 1895 | 1895 |
| 1896 __ xor_(rax, rax); // Success. | 1896 __ xorq(rax, rax); // Success. |
| 1897 __ bind(&exit); | 1897 __ bind(&exit); |
| 1898 ExitCode(masm); | 1898 ExitCode(masm); |
| 1899 __ ret(0); | 1899 __ ret(0); |
| 1900 | 1900 |
| 1901 CodeDesc desc; | 1901 CodeDesc desc; |
| 1902 masm->GetCode(&desc); | 1902 masm->GetCode(&desc); |
| 1903 // Call the function from C++. | 1903 // Call the function from C++. |
| 1904 int result = FUNCTION_CAST<F0>(buffer)(); | 1904 int result = FUNCTION_CAST<F0>(buffer)(); |
| 1905 CHECK_EQ(0, result); | 1905 CHECK_EQ(0, result); |
| 1906 } | 1906 } |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1948 | 1948 |
| 1949 TestSmiNot(masm, &exit, 0x10, 0); | 1949 TestSmiNot(masm, &exit, 0x10, 0); |
| 1950 TestSmiNot(masm, &exit, 0x20, 1); | 1950 TestSmiNot(masm, &exit, 0x20, 1); |
| 1951 TestSmiNot(masm, &exit, 0x30, -1); | 1951 TestSmiNot(masm, &exit, 0x30, -1); |
| 1952 TestSmiNot(masm, &exit, 0x40, 127); | 1952 TestSmiNot(masm, &exit, 0x40, 127); |
| 1953 TestSmiNot(masm, &exit, 0x50, 65535); | 1953 TestSmiNot(masm, &exit, 0x50, 65535); |
| 1954 TestSmiNot(masm, &exit, 0x60, Smi::kMinValue); | 1954 TestSmiNot(masm, &exit, 0x60, Smi::kMinValue); |
| 1955 TestSmiNot(masm, &exit, 0x70, Smi::kMaxValue); | 1955 TestSmiNot(masm, &exit, 0x70, Smi::kMaxValue); |
| 1956 TestSmiNot(masm, &exit, 0x80, 0x05555555); | 1956 TestSmiNot(masm, &exit, 0x80, 0x05555555); |
| 1957 | 1957 |
| 1958 __ xor_(rax, rax); // Success. | 1958 __ xorq(rax, rax); // Success. |
| 1959 __ bind(&exit); | 1959 __ bind(&exit); |
| 1960 ExitCode(masm); | 1960 ExitCode(masm); |
| 1961 __ ret(0); | 1961 __ ret(0); |
| 1962 | 1962 |
| 1963 CodeDesc desc; | 1963 CodeDesc desc; |
| 1964 masm->GetCode(&desc); | 1964 masm->GetCode(&desc); |
| 1965 // Call the function from C++. | 1965 // Call the function from C++. |
| 1966 int result = FUNCTION_CAST<F0>(buffer)(); | 1966 int result = FUNCTION_CAST<F0>(buffer)(); |
| 1967 CHECK_EQ(0, result); | 1967 CHECK_EQ(0, result); |
| 1968 } | 1968 } |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2043 Label exit; | 2043 Label exit; |
| 2044 | 2044 |
| 2045 TestSmiShiftLeft(masm, &exit, 0x10, 0); | 2045 TestSmiShiftLeft(masm, &exit, 0x10, 0); |
| 2046 TestSmiShiftLeft(masm, &exit, 0x50, 1); | 2046 TestSmiShiftLeft(masm, &exit, 0x50, 1); |
| 2047 TestSmiShiftLeft(masm, &exit, 0x90, 127); | 2047 TestSmiShiftLeft(masm, &exit, 0x90, 127); |
| 2048 TestSmiShiftLeft(masm, &exit, 0xD0, 65535); | 2048 TestSmiShiftLeft(masm, &exit, 0xD0, 65535); |
| 2049 TestSmiShiftLeft(masm, &exit, 0x110, Smi::kMaxValue); | 2049 TestSmiShiftLeft(masm, &exit, 0x110, Smi::kMaxValue); |
| 2050 TestSmiShiftLeft(masm, &exit, 0x150, Smi::kMinValue); | 2050 TestSmiShiftLeft(masm, &exit, 0x150, Smi::kMinValue); |
| 2051 TestSmiShiftLeft(masm, &exit, 0x190, -1); | 2051 TestSmiShiftLeft(masm, &exit, 0x190, -1); |
| 2052 | 2052 |
| 2053 __ xor_(rax, rax); // Success. | 2053 __ xorq(rax, rax); // Success. |
| 2054 __ bind(&exit); | 2054 __ bind(&exit); |
| 2055 ExitCode(masm); | 2055 ExitCode(masm); |
| 2056 __ ret(0); | 2056 __ ret(0); |
| 2057 | 2057 |
| 2058 CodeDesc desc; | 2058 CodeDesc desc; |
| 2059 masm->GetCode(&desc); | 2059 masm->GetCode(&desc); |
| 2060 // Call the function from C++. | 2060 // Call the function from C++. |
| 2061 int result = FUNCTION_CAST<F0>(buffer)(); | 2061 int result = FUNCTION_CAST<F0>(buffer)(); |
| 2062 CHECK_EQ(0, result); | 2062 CHECK_EQ(0, result); |
| 2063 } | 2063 } |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2149 Label exit; | 2149 Label exit; |
| 2150 | 2150 |
| 2151 TestSmiShiftLogicalRight(masm, &exit, 0x10, 0); | 2151 TestSmiShiftLogicalRight(masm, &exit, 0x10, 0); |
| 2152 TestSmiShiftLogicalRight(masm, &exit, 0x30, 1); | 2152 TestSmiShiftLogicalRight(masm, &exit, 0x30, 1); |
| 2153 TestSmiShiftLogicalRight(masm, &exit, 0x50, 127); | 2153 TestSmiShiftLogicalRight(masm, &exit, 0x50, 127); |
| 2154 TestSmiShiftLogicalRight(masm, &exit, 0x70, 65535); | 2154 TestSmiShiftLogicalRight(masm, &exit, 0x70, 65535); |
| 2155 TestSmiShiftLogicalRight(masm, &exit, 0x90, Smi::kMaxValue); | 2155 TestSmiShiftLogicalRight(masm, &exit, 0x90, Smi::kMaxValue); |
| 2156 TestSmiShiftLogicalRight(masm, &exit, 0xB0, Smi::kMinValue); | 2156 TestSmiShiftLogicalRight(masm, &exit, 0xB0, Smi::kMinValue); |
| 2157 TestSmiShiftLogicalRight(masm, &exit, 0xD0, -1); | 2157 TestSmiShiftLogicalRight(masm, &exit, 0xD0, -1); |
| 2158 | 2158 |
| 2159 __ xor_(rax, rax); // Success. | 2159 __ xorq(rax, rax); // Success. |
| 2160 __ bind(&exit); | 2160 __ bind(&exit); |
| 2161 ExitCode(masm); | 2161 ExitCode(masm); |
| 2162 __ ret(0); | 2162 __ ret(0); |
| 2163 | 2163 |
| 2164 CodeDesc desc; | 2164 CodeDesc desc; |
| 2165 masm->GetCode(&desc); | 2165 masm->GetCode(&desc); |
| 2166 // Call the function from C++. | 2166 // Call the function from C++. |
| 2167 int result = FUNCTION_CAST<F0>(buffer)(); | 2167 int result = FUNCTION_CAST<F0>(buffer)(); |
| 2168 CHECK_EQ(0, result); | 2168 CHECK_EQ(0, result); |
| 2169 } | 2169 } |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2218 Label exit; | 2218 Label exit; |
| 2219 | 2219 |
| 2220 TestSmiShiftArithmeticRight(masm, &exit, 0x10, 0); | 2220 TestSmiShiftArithmeticRight(masm, &exit, 0x10, 0); |
| 2221 TestSmiShiftArithmeticRight(masm, &exit, 0x20, 1); | 2221 TestSmiShiftArithmeticRight(masm, &exit, 0x20, 1); |
| 2222 TestSmiShiftArithmeticRight(masm, &exit, 0x30, 127); | 2222 TestSmiShiftArithmeticRight(masm, &exit, 0x30, 127); |
| 2223 TestSmiShiftArithmeticRight(masm, &exit, 0x40, 65535); | 2223 TestSmiShiftArithmeticRight(masm, &exit, 0x40, 65535); |
| 2224 TestSmiShiftArithmeticRight(masm, &exit, 0x50, Smi::kMaxValue); | 2224 TestSmiShiftArithmeticRight(masm, &exit, 0x50, Smi::kMaxValue); |
| 2225 TestSmiShiftArithmeticRight(masm, &exit, 0x60, Smi::kMinValue); | 2225 TestSmiShiftArithmeticRight(masm, &exit, 0x60, Smi::kMinValue); |
| 2226 TestSmiShiftArithmeticRight(masm, &exit, 0x70, -1); | 2226 TestSmiShiftArithmeticRight(masm, &exit, 0x70, -1); |
| 2227 | 2227 |
| 2228 __ xor_(rax, rax); // Success. | 2228 __ xorq(rax, rax); // Success. |
| 2229 __ bind(&exit); | 2229 __ bind(&exit); |
| 2230 ExitCode(masm); | 2230 ExitCode(masm); |
| 2231 __ ret(0); | 2231 __ ret(0); |
| 2232 | 2232 |
| 2233 CodeDesc desc; | 2233 CodeDesc desc; |
| 2234 masm->GetCode(&desc); | 2234 masm->GetCode(&desc); |
| 2235 // Call the function from C++. | 2235 // Call the function from C++. |
| 2236 int result = FUNCTION_CAST<F0>(buffer)(); | 2236 int result = FUNCTION_CAST<F0>(buffer)(); |
| 2237 CHECK_EQ(0, result); | 2237 CHECK_EQ(0, result); |
| 2238 } | 2238 } |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2284 TestPositiveSmiPowerUp(masm, &exit, 0x20, 0); | 2284 TestPositiveSmiPowerUp(masm, &exit, 0x20, 0); |
| 2285 TestPositiveSmiPowerUp(masm, &exit, 0x40, 1); | 2285 TestPositiveSmiPowerUp(masm, &exit, 0x40, 1); |
| 2286 TestPositiveSmiPowerUp(masm, &exit, 0x60, 127); | 2286 TestPositiveSmiPowerUp(masm, &exit, 0x60, 127); |
| 2287 TestPositiveSmiPowerUp(masm, &exit, 0x80, 128); | 2287 TestPositiveSmiPowerUp(masm, &exit, 0x80, 128); |
| 2288 TestPositiveSmiPowerUp(masm, &exit, 0xA0, 255); | 2288 TestPositiveSmiPowerUp(masm, &exit, 0xA0, 255); |
| 2289 TestPositiveSmiPowerUp(masm, &exit, 0xC0, 256); | 2289 TestPositiveSmiPowerUp(masm, &exit, 0xC0, 256); |
| 2290 TestPositiveSmiPowerUp(masm, &exit, 0x100, 65535); | 2290 TestPositiveSmiPowerUp(masm, &exit, 0x100, 65535); |
| 2291 TestPositiveSmiPowerUp(masm, &exit, 0x120, 65536); | 2291 TestPositiveSmiPowerUp(masm, &exit, 0x120, 65536); |
| 2292 TestPositiveSmiPowerUp(masm, &exit, 0x140, Smi::kMaxValue); | 2292 TestPositiveSmiPowerUp(masm, &exit, 0x140, Smi::kMaxValue); |
| 2293 | 2293 |
| 2294 __ xor_(rax, rax); // Success. | 2294 __ xorq(rax, rax); // Success. |
| 2295 __ bind(&exit); | 2295 __ bind(&exit); |
| 2296 ExitCode(masm); | 2296 ExitCode(masm); |
| 2297 __ ret(0); | 2297 __ ret(0); |
| 2298 | 2298 |
| 2299 CodeDesc desc; | 2299 CodeDesc desc; |
| 2300 masm->GetCode(&desc); | 2300 masm->GetCode(&desc); |
| 2301 // Call the function from C++. | 2301 // Call the function from C++. |
| 2302 int result = FUNCTION_CAST<F0>(buffer)(); | 2302 int result = FUNCTION_CAST<F0>(buffer)(); |
| 2303 CHECK_EQ(0, result); | 2303 CHECK_EQ(0, result); |
| 2304 } | 2304 } |
| (...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2789 __ movq(rcx, Immediate(-1)); | 2789 __ movq(rcx, Immediate(-1)); |
| 2790 __ Store(Operand(rsp, 0 * kPointerSize), rcx, Representation::UInteger16()); | 2790 __ Store(Operand(rsp, 0 * kPointerSize), rcx, Representation::UInteger16()); |
| 2791 __ movq(rcx, Operand(rsp, 0 * kPointerSize)); | 2791 __ movq(rcx, Operand(rsp, 0 * kPointerSize)); |
| 2792 __ movl(rdx, Immediate(65535)); | 2792 __ movl(rdx, Immediate(65535)); |
| 2793 __ cmpq(rcx, rdx); | 2793 __ cmpq(rcx, rdx); |
| 2794 __ j(not_equal, &exit); | 2794 __ j(not_equal, &exit); |
| 2795 __ Load(rdx, Operand(rsp, 0 * kPointerSize), Representation::UInteger16()); | 2795 __ Load(rdx, Operand(rsp, 0 * kPointerSize), Representation::UInteger16()); |
| 2796 __ cmpq(rcx, rdx); | 2796 __ cmpq(rcx, rdx); |
| 2797 __ j(not_equal, &exit); | 2797 __ j(not_equal, &exit); |
| 2798 | 2798 |
| 2799 __ xor_(rax, rax); // Success. | 2799 __ xorq(rax, rax); // Success. |
| 2800 __ bind(&exit); | 2800 __ bind(&exit); |
| 2801 __ addq(rsp, Immediate(1 * kPointerSize)); | 2801 __ addq(rsp, Immediate(1 * kPointerSize)); |
| 2802 ExitCode(masm); | 2802 ExitCode(masm); |
| 2803 __ ret(0); | 2803 __ ret(0); |
| 2804 | 2804 |
| 2805 CodeDesc desc; | 2805 CodeDesc desc; |
| 2806 masm->GetCode(&desc); | 2806 masm->GetCode(&desc); |
| 2807 // Call the function from C++. | 2807 // Call the function from C++. |
| 2808 int result = FUNCTION_CAST<F0>(buffer)(); | 2808 int result = FUNCTION_CAST<F0>(buffer)(); |
| 2809 CHECK_EQ(0, result); | 2809 CHECK_EQ(0, result); |
| 2810 } | 2810 } |
| 2811 | 2811 |
| 2812 | 2812 |
| 2813 #undef __ | 2813 #undef __ |
| OLD | NEW |