| 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 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 | 126 |
| 127 // Test that we can move a Smi value literally into a register. | 127 // Test that we can move a Smi value literally into a register. |
| 128 TEST(SmiMove) { | 128 TEST(SmiMove) { |
| 129 // Allocate an executable page of memory. | 129 // Allocate an executable page of memory. |
| 130 size_t actual_size; | 130 size_t actual_size; |
| 131 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 131 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
| 132 &actual_size, | 132 &actual_size, |
| 133 true)); | 133 true)); |
| 134 CHECK(buffer); | 134 CHECK(buffer); |
| 135 HandleScope handles; | 135 HandleScope handles; |
| 136 MacroAssembler assembler(buffer, actual_size); | 136 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 137 MacroAssembler* masm = &assembler; // Create a pointer for the __ macro. | 137 MacroAssembler* masm = &assembler; // Create a pointer for the __ macro. |
| 138 masm->set_allow_stub_calls(false); | 138 masm->set_allow_stub_calls(false); |
| 139 Label exit; | 139 Label exit; |
| 140 | 140 |
| 141 TestMoveSmi(masm, &exit, 1, Smi::FromInt(0)); | 141 TestMoveSmi(masm, &exit, 1, Smi::FromInt(0)); |
| 142 TestMoveSmi(masm, &exit, 2, Smi::FromInt(127)); | 142 TestMoveSmi(masm, &exit, 2, Smi::FromInt(127)); |
| 143 TestMoveSmi(masm, &exit, 3, Smi::FromInt(128)); | 143 TestMoveSmi(masm, &exit, 3, Smi::FromInt(128)); |
| 144 TestMoveSmi(masm, &exit, 4, Smi::FromInt(255)); | 144 TestMoveSmi(masm, &exit, 4, Smi::FromInt(255)); |
| 145 TestMoveSmi(masm, &exit, 5, Smi::FromInt(256)); | 145 TestMoveSmi(masm, &exit, 5, Smi::FromInt(256)); |
| 146 TestMoveSmi(masm, &exit, 6, Smi::FromInt(Smi::kMaxValue)); | 146 TestMoveSmi(masm, &exit, 6, Smi::FromInt(Smi::kMaxValue)); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 211 // Test that we can compare smis for equality (and more). | 211 // Test that we can compare smis for equality (and more). |
| 212 TEST(SmiCompare) { | 212 TEST(SmiCompare) { |
| 213 // Allocate an executable page of memory. | 213 // Allocate an executable page of memory. |
| 214 size_t actual_size; | 214 size_t actual_size; |
| 215 byte* buffer = | 215 byte* buffer = |
| 216 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 216 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
| 217 &actual_size, | 217 &actual_size, |
| 218 true)); | 218 true)); |
| 219 CHECK(buffer); | 219 CHECK(buffer); |
| 220 HandleScope handles; | 220 HandleScope handles; |
| 221 MacroAssembler assembler(buffer, actual_size); | 221 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 222 | 222 |
| 223 MacroAssembler* masm = &assembler; | 223 MacroAssembler* masm = &assembler; |
| 224 masm->set_allow_stub_calls(false); | 224 masm->set_allow_stub_calls(false); |
| 225 Label exit; | 225 Label exit; |
| 226 | 226 |
| 227 TestSmiCompare(masm, &exit, 0x10, 0, 0); | 227 TestSmiCompare(masm, &exit, 0x10, 0, 0); |
| 228 TestSmiCompare(masm, &exit, 0x20, 0, 1); | 228 TestSmiCompare(masm, &exit, 0x20, 0, 1); |
| 229 TestSmiCompare(masm, &exit, 0x30, 1, 0); | 229 TestSmiCompare(masm, &exit, 0x30, 1, 0); |
| 230 TestSmiCompare(masm, &exit, 0x40, 1, 1); | 230 TestSmiCompare(masm, &exit, 0x40, 1, 1); |
| 231 TestSmiCompare(masm, &exit, 0x50, 0, -1); | 231 TestSmiCompare(masm, &exit, 0x50, 0, -1); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 258 | 258 |
| 259 | 259 |
| 260 TEST(Integer32ToSmi) { | 260 TEST(Integer32ToSmi) { |
| 261 // Allocate an executable page of memory. | 261 // Allocate an executable page of memory. |
| 262 size_t actual_size; | 262 size_t actual_size; |
| 263 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 263 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
| 264 &actual_size, | 264 &actual_size, |
| 265 true)); | 265 true)); |
| 266 CHECK(buffer); | 266 CHECK(buffer); |
| 267 HandleScope handles; | 267 HandleScope handles; |
| 268 MacroAssembler assembler(buffer, actual_size); | 268 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 269 | 269 |
| 270 MacroAssembler* masm = &assembler; | 270 MacroAssembler* masm = &assembler; |
| 271 masm->set_allow_stub_calls(false); | 271 masm->set_allow_stub_calls(false); |
| 272 Label exit; | 272 Label exit; |
| 273 | 273 |
| 274 __ movq(rax, Immediate(1)); // Test number. | 274 __ movq(rax, Immediate(1)); // Test number. |
| 275 __ movl(rcx, Immediate(0)); | 275 __ movl(rcx, Immediate(0)); |
| 276 __ Integer32ToSmi(rcx, rcx); | 276 __ Integer32ToSmi(rcx, rcx); |
| 277 __ Set(rdx, reinterpret_cast<intptr_t>(Smi::FromInt(0))); | 277 __ Set(rdx, reinterpret_cast<intptr_t>(Smi::FromInt(0))); |
| 278 __ SmiCompare(rcx, rdx); | 278 __ SmiCompare(rcx, rdx); |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 | 357 |
| 358 | 358 |
| 359 void TestI64PlusConstantToSmi(MacroAssembler* masm, | 359 void TestI64PlusConstantToSmi(MacroAssembler* masm, |
| 360 Label* exit, | 360 Label* exit, |
| 361 int id, | 361 int id, |
| 362 int64_t x, | 362 int64_t x, |
| 363 int y) { | 363 int y) { |
| 364 int64_t result = x + y; | 364 int64_t result = x + y; |
| 365 ASSERT(Smi::IsValid(result)); | 365 ASSERT(Smi::IsValid(result)); |
| 366 __ movl(rax, Immediate(id)); | 366 __ movl(rax, Immediate(id)); |
| 367 __ Move(r8, Smi::FromInt(result)); | 367 __ Move(r8, Smi::FromInt(static_cast<int>(result))); |
| 368 __ movq(rcx, x, RelocInfo::NONE); | 368 __ movq(rcx, x, RelocInfo::NONE); |
| 369 __ movq(r11, rcx); | 369 __ movq(r11, rcx); |
| 370 __ Integer64PlusConstantToSmi(rdx, rcx, y); | 370 __ Integer64PlusConstantToSmi(rdx, rcx, y); |
| 371 __ SmiCompare(rdx, r8); | 371 __ SmiCompare(rdx, r8); |
| 372 __ j(not_equal, exit); | 372 __ j(not_equal, exit); |
| 373 | 373 |
| 374 __ incq(rax); | 374 __ incq(rax); |
| 375 __ SmiCompare(r11, rcx); | 375 __ SmiCompare(r11, rcx); |
| 376 __ j(not_equal, exit); | 376 __ j(not_equal, exit); |
| 377 | 377 |
| 378 __ incq(rax); | 378 __ incq(rax); |
| 379 __ Integer64PlusConstantToSmi(rcx, rcx, y); | 379 __ Integer64PlusConstantToSmi(rcx, rcx, y); |
| 380 __ SmiCompare(rcx, r8); | 380 __ SmiCompare(rcx, r8); |
| 381 __ j(not_equal, exit); | 381 __ j(not_equal, exit); |
| 382 } | 382 } |
| 383 | 383 |
| 384 | 384 |
| 385 TEST(Integer64PlusConstantToSmi) { | 385 TEST(Integer64PlusConstantToSmi) { |
| 386 // Allocate an executable page of memory. | 386 // Allocate an executable page of memory. |
| 387 size_t actual_size; | 387 size_t actual_size; |
| 388 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 388 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
| 389 &actual_size, | 389 &actual_size, |
| 390 true)); | 390 true)); |
| 391 CHECK(buffer); | 391 CHECK(buffer); |
| 392 HandleScope handles; | 392 HandleScope handles; |
| 393 MacroAssembler assembler(buffer, actual_size); | 393 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 394 | 394 |
| 395 MacroAssembler* masm = &assembler; | 395 MacroAssembler* masm = &assembler; |
| 396 masm->set_allow_stub_calls(false); | 396 masm->set_allow_stub_calls(false); |
| 397 Label exit; | 397 Label exit; |
| 398 | 398 |
| 399 int64_t twice_max = static_cast<int64_t>(Smi::kMaxValue) * 2; | 399 int64_t twice_max = static_cast<int64_t>(Smi::kMaxValue) * 2; |
| 400 | 400 |
| 401 TestI64PlusConstantToSmi(masm, &exit, 0x10, 0, 0); | 401 TestI64PlusConstantToSmi(masm, &exit, 0x10, 0, 0); |
| 402 TestI64PlusConstantToSmi(masm, &exit, 0x20, 0, 1); | 402 TestI64PlusConstantToSmi(masm, &exit, 0x20, 0, 1); |
| 403 TestI64PlusConstantToSmi(masm, &exit, 0x30, 1, 0); | 403 TestI64PlusConstantToSmi(masm, &exit, 0x30, 1, 0); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 424 | 424 |
| 425 | 425 |
| 426 TEST(SmiCheck) { | 426 TEST(SmiCheck) { |
| 427 // Allocate an executable page of memory. | 427 // Allocate an executable page of memory. |
| 428 size_t actual_size; | 428 size_t actual_size; |
| 429 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 429 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
| 430 &actual_size, | 430 &actual_size, |
| 431 true)); | 431 true)); |
| 432 CHECK(buffer); | 432 CHECK(buffer); |
| 433 HandleScope handles; | 433 HandleScope handles; |
| 434 MacroAssembler assembler(buffer, actual_size); | 434 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 435 | 435 |
| 436 MacroAssembler* masm = &assembler; | 436 MacroAssembler* masm = &assembler; |
| 437 masm->set_allow_stub_calls(false); | 437 masm->set_allow_stub_calls(false); |
| 438 Label exit; | 438 Label exit; |
| 439 Condition cond; | 439 Condition cond; |
| 440 | 440 |
| 441 __ movl(rax, Immediate(1)); // Test number. | 441 __ movl(rax, Immediate(1)); // Test number. |
| 442 | 442 |
| 443 // CheckSmi | 443 // CheckSmi |
| 444 | 444 |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 669 | 669 |
| 670 TEST(SmiNeg) { | 670 TEST(SmiNeg) { |
| 671 // Allocate an executable page of memory. | 671 // Allocate an executable page of memory. |
| 672 size_t actual_size; | 672 size_t actual_size; |
| 673 byte* buffer = | 673 byte* buffer = |
| 674 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 674 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
| 675 &actual_size, | 675 &actual_size, |
| 676 true)); | 676 true)); |
| 677 CHECK(buffer); | 677 CHECK(buffer); |
| 678 HandleScope handles; | 678 HandleScope handles; |
| 679 MacroAssembler assembler(buffer, actual_size); | 679 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 680 | 680 |
| 681 MacroAssembler* masm = &assembler; | 681 MacroAssembler* masm = &assembler; |
| 682 masm->set_allow_stub_calls(false); | 682 masm->set_allow_stub_calls(false); |
| 683 Label exit; | 683 Label exit; |
| 684 | 684 |
| 685 TestSmiNeg(masm, &exit, 0x10, 0); | 685 TestSmiNeg(masm, &exit, 0x10, 0); |
| 686 TestSmiNeg(masm, &exit, 0x20, 1); | 686 TestSmiNeg(masm, &exit, 0x20, 1); |
| 687 TestSmiNeg(masm, &exit, 0x30, -1); | 687 TestSmiNeg(masm, &exit, 0x30, -1); |
| 688 TestSmiNeg(masm, &exit, 0x40, 127); | 688 TestSmiNeg(masm, &exit, 0x40, 127); |
| 689 TestSmiNeg(masm, &exit, 0x50, 65535); | 689 TestSmiNeg(masm, &exit, 0x50, 65535); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 754 } | 754 } |
| 755 | 755 |
| 756 TEST(SmiAdd) { | 756 TEST(SmiAdd) { |
| 757 // Allocate an executable page of memory. | 757 // Allocate an executable page of memory. |
| 758 size_t actual_size; | 758 size_t actual_size; |
| 759 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 759 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
| 760 &actual_size, | 760 &actual_size, |
| 761 true)); | 761 true)); |
| 762 CHECK(buffer); | 762 CHECK(buffer); |
| 763 HandleScope handles; | 763 HandleScope handles; |
| 764 MacroAssembler assembler(buffer, actual_size); | 764 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 765 | 765 |
| 766 MacroAssembler* masm = &assembler; | 766 MacroAssembler* masm = &assembler; |
| 767 masm->set_allow_stub_calls(false); | 767 masm->set_allow_stub_calls(false); |
| 768 Label exit; | 768 Label exit; |
| 769 | 769 |
| 770 // No-overflow tests. | 770 // No-overflow tests. |
| 771 SmiAddTest(masm, &exit, 0x10, 1, 2); | 771 SmiAddTest(masm, &exit, 0x10, 1, 2); |
| 772 SmiAddTest(masm, &exit, 0x20, 1, -2); | 772 SmiAddTest(masm, &exit, 0x20, 1, -2); |
| 773 SmiAddTest(masm, &exit, 0x30, -1, 2); | 773 SmiAddTest(masm, &exit, 0x30, -1, 2); |
| 774 SmiAddTest(masm, &exit, 0x40, -1, -2); | 774 SmiAddTest(masm, &exit, 0x40, -1, -2); |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 941 | 941 |
| 942 TEST(SmiSub) { | 942 TEST(SmiSub) { |
| 943 // Allocate an executable page of memory. | 943 // Allocate an executable page of memory. |
| 944 size_t actual_size; | 944 size_t actual_size; |
| 945 byte* buffer = | 945 byte* buffer = |
| 946 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 946 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, |
| 947 &actual_size, | 947 &actual_size, |
| 948 true)); | 948 true)); |
| 949 CHECK(buffer); | 949 CHECK(buffer); |
| 950 HandleScope handles; | 950 HandleScope handles; |
| 951 MacroAssembler assembler(buffer, actual_size); | 951 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 952 | 952 |
| 953 MacroAssembler* masm = &assembler; | 953 MacroAssembler* masm = &assembler; |
| 954 masm->set_allow_stub_calls(false); | 954 masm->set_allow_stub_calls(false); |
| 955 Label exit; | 955 Label exit; |
| 956 | 956 |
| 957 SmiSubTest(masm, &exit, 0x10, 1, 2); | 957 SmiSubTest(masm, &exit, 0x10, 1, 2); |
| 958 SmiSubTest(masm, &exit, 0x20, 1, -2); | 958 SmiSubTest(masm, &exit, 0x20, 1, -2); |
| 959 SmiSubTest(masm, &exit, 0x30, -1, 2); | 959 SmiSubTest(masm, &exit, 0x30, -1, 2); |
| 960 SmiSubTest(masm, &exit, 0x40, -1, -2); | 960 SmiSubTest(masm, &exit, 0x40, -1, -2); |
| 961 SmiSubTest(masm, &exit, 0x50, 0x1000, 0x2000); | 961 SmiSubTest(masm, &exit, 0x50, 0x1000, 0x2000); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1028 | 1028 |
| 1029 | 1029 |
| 1030 TEST(SmiMul) { | 1030 TEST(SmiMul) { |
| 1031 // Allocate an executable page of memory. | 1031 // Allocate an executable page of memory. |
| 1032 size_t actual_size; | 1032 size_t actual_size; |
| 1033 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 1033 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
| 1034 &actual_size, | 1034 &actual_size, |
| 1035 true)); | 1035 true)); |
| 1036 CHECK(buffer); | 1036 CHECK(buffer); |
| 1037 HandleScope handles; | 1037 HandleScope handles; |
| 1038 MacroAssembler assembler(buffer, actual_size); | 1038 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 1039 | 1039 |
| 1040 MacroAssembler* masm = &assembler; | 1040 MacroAssembler* masm = &assembler; |
| 1041 masm->set_allow_stub_calls(false); | 1041 masm->set_allow_stub_calls(false); |
| 1042 Label exit; | 1042 Label exit; |
| 1043 | 1043 |
| 1044 TestSmiMul(masm, &exit, 0x10, 0, 0); | 1044 TestSmiMul(masm, &exit, 0x10, 0, 0); |
| 1045 TestSmiMul(masm, &exit, 0x20, -1, 0); | 1045 TestSmiMul(masm, &exit, 0x20, -1, 0); |
| 1046 TestSmiMul(masm, &exit, 0x30, 0, -1); | 1046 TestSmiMul(masm, &exit, 0x30, 0, -1); |
| 1047 TestSmiMul(masm, &exit, 0x40, -1, -1); | 1047 TestSmiMul(masm, &exit, 0x40, -1, -1); |
| 1048 TestSmiMul(masm, &exit, 0x50, 0x10000, 0x10000); | 1048 TestSmiMul(masm, &exit, 0x50, 0x10000, 0x10000); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1131 | 1131 |
| 1132 TEST(SmiDiv) { | 1132 TEST(SmiDiv) { |
| 1133 // Allocate an executable page of memory. | 1133 // Allocate an executable page of memory. |
| 1134 size_t actual_size; | 1134 size_t actual_size; |
| 1135 byte* buffer = | 1135 byte* buffer = |
| 1136 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 1136 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, |
| 1137 &actual_size, | 1137 &actual_size, |
| 1138 true)); | 1138 true)); |
| 1139 CHECK(buffer); | 1139 CHECK(buffer); |
| 1140 HandleScope handles; | 1140 HandleScope handles; |
| 1141 MacroAssembler assembler(buffer, actual_size); | 1141 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 1142 | 1142 |
| 1143 MacroAssembler* masm = &assembler; | 1143 MacroAssembler* masm = &assembler; |
| 1144 masm->set_allow_stub_calls(false); | 1144 masm->set_allow_stub_calls(false); |
| 1145 Label exit; | 1145 Label exit; |
| 1146 | 1146 |
| 1147 __ push(r12); | 1147 __ push(r12); |
| 1148 __ push(r15); | 1148 __ push(r15); |
| 1149 TestSmiDiv(masm, &exit, 0x10, 1, 1); | 1149 TestSmiDiv(masm, &exit, 0x10, 1, 1); |
| 1150 TestSmiDiv(masm, &exit, 0x20, 1, 0); | 1150 TestSmiDiv(masm, &exit, 0x20, 1, 0); |
| 1151 TestSmiDiv(masm, &exit, 0x30, -1, 0); | 1151 TestSmiDiv(masm, &exit, 0x30, -1, 0); |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1238 | 1238 |
| 1239 TEST(SmiMod) { | 1239 TEST(SmiMod) { |
| 1240 // Allocate an executable page of memory. | 1240 // Allocate an executable page of memory. |
| 1241 size_t actual_size; | 1241 size_t actual_size; |
| 1242 byte* buffer = | 1242 byte* buffer = |
| 1243 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 1243 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, |
| 1244 &actual_size, | 1244 &actual_size, |
| 1245 true)); | 1245 true)); |
| 1246 CHECK(buffer); | 1246 CHECK(buffer); |
| 1247 HandleScope handles; | 1247 HandleScope handles; |
| 1248 MacroAssembler assembler(buffer, actual_size); | 1248 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 1249 | 1249 |
| 1250 MacroAssembler* masm = &assembler; | 1250 MacroAssembler* masm = &assembler; |
| 1251 masm->set_allow_stub_calls(false); | 1251 masm->set_allow_stub_calls(false); |
| 1252 Label exit; | 1252 Label exit; |
| 1253 | 1253 |
| 1254 __ push(r12); | 1254 __ push(r12); |
| 1255 __ push(r15); | 1255 __ push(r15); |
| 1256 TestSmiMod(masm, &exit, 0x10, 1, 1); | 1256 TestSmiMod(masm, &exit, 0x10, 1, 1); |
| 1257 TestSmiMod(masm, &exit, 0x20, 1, 0); | 1257 TestSmiMod(masm, &exit, 0x20, 1, 0); |
| 1258 TestSmiMod(masm, &exit, 0x30, -1, 0); | 1258 TestSmiMod(masm, &exit, 0x30, -1, 0); |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1331 | 1331 |
| 1332 TEST(SmiIndex) { | 1332 TEST(SmiIndex) { |
| 1333 // Allocate an executable page of memory. | 1333 // Allocate an executable page of memory. |
| 1334 size_t actual_size; | 1334 size_t actual_size; |
| 1335 byte* buffer = | 1335 byte* buffer = |
| 1336 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 1336 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, |
| 1337 &actual_size, | 1337 &actual_size, |
| 1338 true)); | 1338 true)); |
| 1339 CHECK(buffer); | 1339 CHECK(buffer); |
| 1340 HandleScope handles; | 1340 HandleScope handles; |
| 1341 MacroAssembler assembler(buffer, actual_size); | 1341 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 1342 | 1342 |
| 1343 MacroAssembler* masm = &assembler; | 1343 MacroAssembler* masm = &assembler; |
| 1344 masm->set_allow_stub_calls(false); | 1344 masm->set_allow_stub_calls(false); |
| 1345 Label exit; | 1345 Label exit; |
| 1346 | 1346 |
| 1347 TestSmiIndex(masm, &exit, 0x10, 0); | 1347 TestSmiIndex(masm, &exit, 0x10, 0); |
| 1348 TestSmiIndex(masm, &exit, 0x20, 1); | 1348 TestSmiIndex(masm, &exit, 0x20, 1); |
| 1349 TestSmiIndex(masm, &exit, 0x30, 100); | 1349 TestSmiIndex(masm, &exit, 0x30, 100); |
| 1350 TestSmiIndex(masm, &exit, 0x40, 1000); | 1350 TestSmiIndex(masm, &exit, 0x40, 1000); |
| 1351 TestSmiIndex(masm, &exit, 0x50, Smi::kMaxValue); | 1351 TestSmiIndex(masm, &exit, 0x50, Smi::kMaxValue); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1397 | 1397 |
| 1398 TEST(SmiSelectNonSmi) { | 1398 TEST(SmiSelectNonSmi) { |
| 1399 // Allocate an executable page of memory. | 1399 // Allocate an executable page of memory. |
| 1400 size_t actual_size; | 1400 size_t actual_size; |
| 1401 byte* buffer = | 1401 byte* buffer = |
| 1402 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 1402 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
| 1403 &actual_size, | 1403 &actual_size, |
| 1404 true)); | 1404 true)); |
| 1405 CHECK(buffer); | 1405 CHECK(buffer); |
| 1406 HandleScope handles; | 1406 HandleScope handles; |
| 1407 MacroAssembler assembler(buffer, actual_size); | 1407 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 1408 | 1408 |
| 1409 MacroAssembler* masm = &assembler; | 1409 MacroAssembler* masm = &assembler; |
| 1410 masm->set_allow_stub_calls(false); // Avoid inline checks. | 1410 masm->set_allow_stub_calls(false); // Avoid inline checks. |
| 1411 Label exit; | 1411 Label exit; |
| 1412 | 1412 |
| 1413 TestSelectNonSmi(masm, &exit, 0x10, 0, 0); | 1413 TestSelectNonSmi(masm, &exit, 0x10, 0, 0); |
| 1414 TestSelectNonSmi(masm, &exit, 0x20, 0, 1); | 1414 TestSelectNonSmi(masm, &exit, 0x20, 0, 1); |
| 1415 TestSelectNonSmi(masm, &exit, 0x30, 1, 0); | 1415 TestSelectNonSmi(masm, &exit, 0x30, 1, 0); |
| 1416 TestSelectNonSmi(masm, &exit, 0x40, 0, -1); | 1416 TestSelectNonSmi(masm, &exit, 0x40, 0, -1); |
| 1417 TestSelectNonSmi(masm, &exit, 0x50, -1, 0); | 1417 TestSelectNonSmi(masm, &exit, 0x50, -1, 0); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1473 | 1473 |
| 1474 TEST(SmiAnd) { | 1474 TEST(SmiAnd) { |
| 1475 // Allocate an executable page of memory. | 1475 // Allocate an executable page of memory. |
| 1476 size_t actual_size; | 1476 size_t actual_size; |
| 1477 byte* buffer = | 1477 byte* buffer = |
| 1478 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 1478 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
| 1479 &actual_size, | 1479 &actual_size, |
| 1480 true)); | 1480 true)); |
| 1481 CHECK(buffer); | 1481 CHECK(buffer); |
| 1482 HandleScope handles; | 1482 HandleScope handles; |
| 1483 MacroAssembler assembler(buffer, actual_size); | 1483 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 1484 | 1484 |
| 1485 MacroAssembler* masm = &assembler; | 1485 MacroAssembler* masm = &assembler; |
| 1486 masm->set_allow_stub_calls(false); | 1486 masm->set_allow_stub_calls(false); |
| 1487 Label exit; | 1487 Label exit; |
| 1488 | 1488 |
| 1489 TestSmiAnd(masm, &exit, 0x10, 0, 0); | 1489 TestSmiAnd(masm, &exit, 0x10, 0, 0); |
| 1490 TestSmiAnd(masm, &exit, 0x20, 0, 1); | 1490 TestSmiAnd(masm, &exit, 0x20, 0, 1); |
| 1491 TestSmiAnd(masm, &exit, 0x30, 1, 0); | 1491 TestSmiAnd(masm, &exit, 0x30, 1, 0); |
| 1492 TestSmiAnd(masm, &exit, 0x40, 0, -1); | 1492 TestSmiAnd(masm, &exit, 0x40, 0, -1); |
| 1493 TestSmiAnd(masm, &exit, 0x50, -1, 0); | 1493 TestSmiAnd(masm, &exit, 0x50, -1, 0); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1551 | 1551 |
| 1552 TEST(SmiOr) { | 1552 TEST(SmiOr) { |
| 1553 // Allocate an executable page of memory. | 1553 // Allocate an executable page of memory. |
| 1554 size_t actual_size; | 1554 size_t actual_size; |
| 1555 byte* buffer = | 1555 byte* buffer = |
| 1556 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 1556 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
| 1557 &actual_size, | 1557 &actual_size, |
| 1558 true)); | 1558 true)); |
| 1559 CHECK(buffer); | 1559 CHECK(buffer); |
| 1560 HandleScope handles; | 1560 HandleScope handles; |
| 1561 MacroAssembler assembler(buffer, actual_size); | 1561 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 1562 | 1562 |
| 1563 MacroAssembler* masm = &assembler; | 1563 MacroAssembler* masm = &assembler; |
| 1564 masm->set_allow_stub_calls(false); | 1564 masm->set_allow_stub_calls(false); |
| 1565 Label exit; | 1565 Label exit; |
| 1566 | 1566 |
| 1567 TestSmiOr(masm, &exit, 0x10, 0, 0); | 1567 TestSmiOr(masm, &exit, 0x10, 0, 0); |
| 1568 TestSmiOr(masm, &exit, 0x20, 0, 1); | 1568 TestSmiOr(masm, &exit, 0x20, 0, 1); |
| 1569 TestSmiOr(masm, &exit, 0x30, 1, 0); | 1569 TestSmiOr(masm, &exit, 0x30, 1, 0); |
| 1570 TestSmiOr(masm, &exit, 0x40, 0, -1); | 1570 TestSmiOr(masm, &exit, 0x40, 0, -1); |
| 1571 TestSmiOr(masm, &exit, 0x50, -1, 0); | 1571 TestSmiOr(masm, &exit, 0x50, -1, 0); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1631 | 1631 |
| 1632 TEST(SmiXor) { | 1632 TEST(SmiXor) { |
| 1633 // Allocate an executable page of memory. | 1633 // Allocate an executable page of memory. |
| 1634 size_t actual_size; | 1634 size_t actual_size; |
| 1635 byte* buffer = | 1635 byte* buffer = |
| 1636 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 1636 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
| 1637 &actual_size, | 1637 &actual_size, |
| 1638 true)); | 1638 true)); |
| 1639 CHECK(buffer); | 1639 CHECK(buffer); |
| 1640 HandleScope handles; | 1640 HandleScope handles; |
| 1641 MacroAssembler assembler(buffer, actual_size); | 1641 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 1642 | 1642 |
| 1643 MacroAssembler* masm = &assembler; | 1643 MacroAssembler* masm = &assembler; |
| 1644 masm->set_allow_stub_calls(false); | 1644 masm->set_allow_stub_calls(false); |
| 1645 Label exit; | 1645 Label exit; |
| 1646 | 1646 |
| 1647 TestSmiXor(masm, &exit, 0x10, 0, 0); | 1647 TestSmiXor(masm, &exit, 0x10, 0, 0); |
| 1648 TestSmiXor(masm, &exit, 0x20, 0, 1); | 1648 TestSmiXor(masm, &exit, 0x20, 0, 1); |
| 1649 TestSmiXor(masm, &exit, 0x30, 1, 0); | 1649 TestSmiXor(masm, &exit, 0x30, 1, 0); |
| 1650 TestSmiXor(masm, &exit, 0x40, 0, -1); | 1650 TestSmiXor(masm, &exit, 0x40, 0, -1); |
| 1651 TestSmiXor(masm, &exit, 0x50, -1, 0); | 1651 TestSmiXor(masm, &exit, 0x50, -1, 0); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1695 | 1695 |
| 1696 TEST(SmiNot) { | 1696 TEST(SmiNot) { |
| 1697 // Allocate an executable page of memory. | 1697 // Allocate an executable page of memory. |
| 1698 size_t actual_size; | 1698 size_t actual_size; |
| 1699 byte* buffer = | 1699 byte* buffer = |
| 1700 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 1700 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
| 1701 &actual_size, | 1701 &actual_size, |
| 1702 true)); | 1702 true)); |
| 1703 CHECK(buffer); | 1703 CHECK(buffer); |
| 1704 HandleScope handles; | 1704 HandleScope handles; |
| 1705 MacroAssembler assembler(buffer, actual_size); | 1705 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 1706 | 1706 |
| 1707 MacroAssembler* masm = &assembler; | 1707 MacroAssembler* masm = &assembler; |
| 1708 masm->set_allow_stub_calls(false); | 1708 masm->set_allow_stub_calls(false); |
| 1709 Label exit; | 1709 Label exit; |
| 1710 | 1710 |
| 1711 TestSmiNot(masm, &exit, 0x10, 0); | 1711 TestSmiNot(masm, &exit, 0x10, 0); |
| 1712 TestSmiNot(masm, &exit, 0x20, 1); | 1712 TestSmiNot(masm, &exit, 0x20, 1); |
| 1713 TestSmiNot(masm, &exit, 0x30, -1); | 1713 TestSmiNot(masm, &exit, 0x30, -1); |
| 1714 TestSmiNot(masm, &exit, 0x40, 127); | 1714 TestSmiNot(masm, &exit, 0x40, 127); |
| 1715 TestSmiNot(masm, &exit, 0x50, 65535); | 1715 TestSmiNot(masm, &exit, 0x50, 65535); |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1836 | 1836 |
| 1837 TEST(SmiShiftLeft) { | 1837 TEST(SmiShiftLeft) { |
| 1838 // Allocate an executable page of memory. | 1838 // Allocate an executable page of memory. |
| 1839 size_t actual_size; | 1839 size_t actual_size; |
| 1840 byte* buffer = | 1840 byte* buffer = |
| 1841 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 3, | 1841 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 3, |
| 1842 &actual_size, | 1842 &actual_size, |
| 1843 true)); | 1843 true)); |
| 1844 CHECK(buffer); | 1844 CHECK(buffer); |
| 1845 HandleScope handles; | 1845 HandleScope handles; |
| 1846 MacroAssembler assembler(buffer, actual_size); | 1846 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 1847 | 1847 |
| 1848 MacroAssembler* masm = &assembler; | 1848 MacroAssembler* masm = &assembler; |
| 1849 masm->set_allow_stub_calls(false); | 1849 masm->set_allow_stub_calls(false); |
| 1850 Label exit; | 1850 Label exit; |
| 1851 | 1851 |
| 1852 TestSmiShiftLeft(masm, &exit, 0x10, 0); | 1852 TestSmiShiftLeft(masm, &exit, 0x10, 0); |
| 1853 TestSmiShiftLeft(masm, &exit, 0x50, 1); | 1853 TestSmiShiftLeft(masm, &exit, 0x50, 1); |
| 1854 TestSmiShiftLeft(masm, &exit, 0x90, 127); | 1854 TestSmiShiftLeft(masm, &exit, 0x90, 127); |
| 1855 TestSmiShiftLeft(masm, &exit, 0xD0, 65535); | 1855 TestSmiShiftLeft(masm, &exit, 0xD0, 65535); |
| 1856 TestSmiShiftLeft(masm, &exit, 0x110, Smi::kMaxValue); | 1856 TestSmiShiftLeft(masm, &exit, 0x110, Smi::kMaxValue); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 1873 Label* exit, | 1873 Label* exit, |
| 1874 int id, | 1874 int id, |
| 1875 int x) { | 1875 int x) { |
| 1876 const int shifts[] = { 0, 1, 7, 24, kSmiValueSize - 1}; | 1876 const int shifts[] = { 0, 1, 7, 24, kSmiValueSize - 1}; |
| 1877 const int kNumShifts = 5; | 1877 const int kNumShifts = 5; |
| 1878 __ movl(rax, Immediate(id)); | 1878 __ movl(rax, Immediate(id)); |
| 1879 for (int i = 0; i < kNumShifts; i++) { | 1879 for (int i = 0; i < kNumShifts; i++) { |
| 1880 int shift = shifts[i]; | 1880 int shift = shifts[i]; |
| 1881 intptr_t result = static_cast<unsigned int>(x) >> shift; | 1881 intptr_t result = static_cast<unsigned int>(x) >> shift; |
| 1882 if (Smi::IsValid(result)) { | 1882 if (Smi::IsValid(result)) { |
| 1883 __ Move(r8, Smi::FromInt(result)); | 1883 __ Move(r8, Smi::FromInt(static_cast<int>(result))); |
| 1884 __ Move(rcx, Smi::FromInt(x)); | 1884 __ Move(rcx, Smi::FromInt(x)); |
| 1885 __ SmiShiftLogicalRightConstant(r9, rcx, shift, exit); | 1885 __ SmiShiftLogicalRightConstant(r9, rcx, shift, exit); |
| 1886 | 1886 |
| 1887 __ incq(rax); | 1887 __ incq(rax); |
| 1888 __ SmiCompare(r9, r8); | 1888 __ SmiCompare(r9, r8); |
| 1889 __ j(not_equal, exit); | 1889 __ j(not_equal, exit); |
| 1890 | 1890 |
| 1891 __ incq(rax); | 1891 __ incq(rax); |
| 1892 __ Move(rdx, Smi::FromInt(x)); | 1892 __ Move(rdx, Smi::FromInt(x)); |
| 1893 __ Move(rcx, Smi::FromInt(shift)); | 1893 __ Move(rcx, Smi::FromInt(shift)); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1939 | 1939 |
| 1940 TEST(SmiShiftLogicalRight) { | 1940 TEST(SmiShiftLogicalRight) { |
| 1941 // Allocate an executable page of memory. | 1941 // Allocate an executable page of memory. |
| 1942 size_t actual_size; | 1942 size_t actual_size; |
| 1943 byte* buffer = | 1943 byte* buffer = |
| 1944 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 1944 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, |
| 1945 &actual_size, | 1945 &actual_size, |
| 1946 true)); | 1946 true)); |
| 1947 CHECK(buffer); | 1947 CHECK(buffer); |
| 1948 HandleScope handles; | 1948 HandleScope handles; |
| 1949 MacroAssembler assembler(buffer, actual_size); | 1949 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 1950 | 1950 |
| 1951 MacroAssembler* masm = &assembler; | 1951 MacroAssembler* masm = &assembler; |
| 1952 masm->set_allow_stub_calls(false); | 1952 masm->set_allow_stub_calls(false); |
| 1953 Label exit; | 1953 Label exit; |
| 1954 | 1954 |
| 1955 TestSmiShiftLogicalRight(masm, &exit, 0x10, 0); | 1955 TestSmiShiftLogicalRight(masm, &exit, 0x10, 0); |
| 1956 TestSmiShiftLogicalRight(masm, &exit, 0x30, 1); | 1956 TestSmiShiftLogicalRight(masm, &exit, 0x30, 1); |
| 1957 TestSmiShiftLogicalRight(masm, &exit, 0x50, 127); | 1957 TestSmiShiftLogicalRight(masm, &exit, 0x50, 127); |
| 1958 TestSmiShiftLogicalRight(masm, &exit, 0x70, 65535); | 1958 TestSmiShiftLogicalRight(masm, &exit, 0x70, 65535); |
| 1959 TestSmiShiftLogicalRight(masm, &exit, 0x90, Smi::kMaxValue); | 1959 TestSmiShiftLogicalRight(masm, &exit, 0x90, Smi::kMaxValue); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2005 | 2005 |
| 2006 TEST(SmiShiftArithmeticRight) { | 2006 TEST(SmiShiftArithmeticRight) { |
| 2007 // Allocate an executable page of memory. | 2007 // Allocate an executable page of memory. |
| 2008 size_t actual_size; | 2008 size_t actual_size; |
| 2009 byte* buffer = | 2009 byte* buffer = |
| 2010 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 2010 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, |
| 2011 &actual_size, | 2011 &actual_size, |
| 2012 true)); | 2012 true)); |
| 2013 CHECK(buffer); | 2013 CHECK(buffer); |
| 2014 HandleScope handles; | 2014 HandleScope handles; |
| 2015 MacroAssembler assembler(buffer, actual_size); | 2015 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 2016 | 2016 |
| 2017 MacroAssembler* masm = &assembler; | 2017 MacroAssembler* masm = &assembler; |
| 2018 masm->set_allow_stub_calls(false); | 2018 masm->set_allow_stub_calls(false); |
| 2019 Label exit; | 2019 Label exit; |
| 2020 | 2020 |
| 2021 TestSmiShiftArithmeticRight(masm, &exit, 0x10, 0); | 2021 TestSmiShiftArithmeticRight(masm, &exit, 0x10, 0); |
| 2022 TestSmiShiftArithmeticRight(masm, &exit, 0x20, 1); | 2022 TestSmiShiftArithmeticRight(masm, &exit, 0x20, 1); |
| 2023 TestSmiShiftArithmeticRight(masm, &exit, 0x30, 127); | 2023 TestSmiShiftArithmeticRight(masm, &exit, 0x30, 127); |
| 2024 TestSmiShiftArithmeticRight(masm, &exit, 0x40, 65535); | 2024 TestSmiShiftArithmeticRight(masm, &exit, 0x40, 65535); |
| 2025 TestSmiShiftArithmeticRight(masm, &exit, 0x50, Smi::kMaxValue); | 2025 TestSmiShiftArithmeticRight(masm, &exit, 0x50, Smi::kMaxValue); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2066 | 2066 |
| 2067 TEST(PositiveSmiTimesPowerOfTwoToInteger64) { | 2067 TEST(PositiveSmiTimesPowerOfTwoToInteger64) { |
| 2068 // Allocate an executable page of memory. | 2068 // Allocate an executable page of memory. |
| 2069 size_t actual_size; | 2069 size_t actual_size; |
| 2070 byte* buffer = | 2070 byte* buffer = |
| 2071 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 2071 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, |
| 2072 &actual_size, | 2072 &actual_size, |
| 2073 true)); | 2073 true)); |
| 2074 CHECK(buffer); | 2074 CHECK(buffer); |
| 2075 HandleScope handles; | 2075 HandleScope handles; |
| 2076 MacroAssembler assembler(buffer, actual_size); | 2076 MacroAssembler assembler(buffer, static_cast<int>(actual_size)); |
| 2077 | 2077 |
| 2078 MacroAssembler* masm = &assembler; | 2078 MacroAssembler* masm = &assembler; |
| 2079 masm->set_allow_stub_calls(false); | 2079 masm->set_allow_stub_calls(false); |
| 2080 Label exit; | 2080 Label exit; |
| 2081 | 2081 |
| 2082 TestPositiveSmiPowerUp(masm, &exit, 0x20, 0); | 2082 TestPositiveSmiPowerUp(masm, &exit, 0x20, 0); |
| 2083 TestPositiveSmiPowerUp(masm, &exit, 0x40, 1); | 2083 TestPositiveSmiPowerUp(masm, &exit, 0x40, 1); |
| 2084 TestPositiveSmiPowerUp(masm, &exit, 0x60, 127); | 2084 TestPositiveSmiPowerUp(masm, &exit, 0x60, 127); |
| 2085 TestPositiveSmiPowerUp(masm, &exit, 0x80, 128); | 2085 TestPositiveSmiPowerUp(masm, &exit, 0x80, 128); |
| 2086 TestPositiveSmiPowerUp(masm, &exit, 0xA0, 255); | 2086 TestPositiveSmiPowerUp(masm, &exit, 0xA0, 255); |
| 2087 TestPositiveSmiPowerUp(masm, &exit, 0xC0, 256); | 2087 TestPositiveSmiPowerUp(masm, &exit, 0xC0, 256); |
| 2088 TestPositiveSmiPowerUp(masm, &exit, 0x100, 65535); | 2088 TestPositiveSmiPowerUp(masm, &exit, 0x100, 65535); |
| 2089 TestPositiveSmiPowerUp(masm, &exit, 0x120, 65536); | 2089 TestPositiveSmiPowerUp(masm, &exit, 0x120, 65536); |
| 2090 TestPositiveSmiPowerUp(masm, &exit, 0x140, Smi::kMaxValue); | 2090 TestPositiveSmiPowerUp(masm, &exit, 0x140, Smi::kMaxValue); |
| 2091 | 2091 |
| 2092 __ xor_(rax, rax); // Success. | 2092 __ xor_(rax, rax); // Success. |
| 2093 __ bind(&exit); | 2093 __ bind(&exit); |
| 2094 __ ret(0); | 2094 __ ret(0); |
| 2095 | 2095 |
| 2096 CodeDesc desc; | 2096 CodeDesc desc; |
| 2097 masm->GetCode(&desc); | 2097 masm->GetCode(&desc); |
| 2098 // Call the function from C++. | 2098 // Call the function from C++. |
| 2099 int result = FUNCTION_CAST<F0>(buffer)(); | 2099 int result = FUNCTION_CAST<F0>(buffer)(); |
| 2100 CHECK_EQ(0, result); | 2100 CHECK_EQ(0, result); |
| 2101 } | 2101 } |
| 2102 | 2102 |
| 2103 | 2103 |
| 2104 #undef __ | 2104 #undef __ |
| OLD | NEW |