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 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
147 | 147 |
148 // Test that we can move a Smi value literally into a register. | 148 // Test that we can move a Smi value literally into a register. |
149 TEST(SmiMove) { | 149 TEST(SmiMove) { |
150 // Allocate an executable page of memory. | 150 // Allocate an executable page of memory. |
151 size_t actual_size; | 151 size_t actual_size; |
152 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 152 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
153 Assembler::kMinimalBufferSize, &actual_size, true)); | 153 Assembler::kMinimalBufferSize, &actual_size, true)); |
154 CHECK(buffer); | 154 CHECK(buffer); |
155 Isolate* isolate = CcTest::i_isolate(); | 155 Isolate* isolate = CcTest::i_isolate(); |
156 HandleScope handles(isolate); | 156 HandleScope handles(isolate); |
157 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 157 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 158 v8::internal::CodeObjectRequired::kYes); |
158 MacroAssembler* masm = &assembler; // Create a pointer for the __ macro. | 159 MacroAssembler* masm = &assembler; // Create a pointer for the __ macro. |
159 EntryCode(masm); | 160 EntryCode(masm); |
160 Label exit; | 161 Label exit; |
161 | 162 |
162 TestMoveSmi(masm, &exit, 1, Smi::FromInt(0)); | 163 TestMoveSmi(masm, &exit, 1, Smi::FromInt(0)); |
163 TestMoveSmi(masm, &exit, 2, Smi::FromInt(127)); | 164 TestMoveSmi(masm, &exit, 2, Smi::FromInt(127)); |
164 TestMoveSmi(masm, &exit, 3, Smi::FromInt(128)); | 165 TestMoveSmi(masm, &exit, 3, Smi::FromInt(128)); |
165 TestMoveSmi(masm, &exit, 4, Smi::FromInt(255)); | 166 TestMoveSmi(masm, &exit, 4, Smi::FromInt(255)); |
166 TestMoveSmi(masm, &exit, 5, Smi::FromInt(256)); | 167 TestMoveSmi(masm, &exit, 5, Smi::FromInt(256)); |
167 TestMoveSmi(masm, &exit, 6, Smi::FromInt(Smi::kMaxValue)); | 168 TestMoveSmi(masm, &exit, 6, Smi::FromInt(Smi::kMaxValue)); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 | 233 |
233 // Test that we can compare smis for equality (and more). | 234 // Test that we can compare smis for equality (and more). |
234 TEST(SmiCompare) { | 235 TEST(SmiCompare) { |
235 // Allocate an executable page of memory. | 236 // Allocate an executable page of memory. |
236 size_t actual_size; | 237 size_t actual_size; |
237 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 238 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
238 Assembler::kMinimalBufferSize * 2, &actual_size, true)); | 239 Assembler::kMinimalBufferSize * 2, &actual_size, true)); |
239 CHECK(buffer); | 240 CHECK(buffer); |
240 Isolate* isolate = CcTest::i_isolate(); | 241 Isolate* isolate = CcTest::i_isolate(); |
241 HandleScope handles(isolate); | 242 HandleScope handles(isolate); |
242 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 243 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 244 v8::internal::CodeObjectRequired::kYes); |
243 | 245 |
244 MacroAssembler* masm = &assembler; | 246 MacroAssembler* masm = &assembler; |
245 EntryCode(masm); | 247 EntryCode(masm); |
246 Label exit; | 248 Label exit; |
247 | 249 |
248 TestSmiCompare(masm, &exit, 0x10, 0, 0); | 250 TestSmiCompare(masm, &exit, 0x10, 0, 0); |
249 TestSmiCompare(masm, &exit, 0x20, 0, 1); | 251 TestSmiCompare(masm, &exit, 0x20, 0, 1); |
250 TestSmiCompare(masm, &exit, 0x30, 1, 0); | 252 TestSmiCompare(masm, &exit, 0x30, 1, 0); |
251 TestSmiCompare(masm, &exit, 0x40, 1, 1); | 253 TestSmiCompare(masm, &exit, 0x40, 1, 1); |
252 TestSmiCompare(masm, &exit, 0x50, 0, -1); | 254 TestSmiCompare(masm, &exit, 0x50, 0, -1); |
(...skipping 27 matching lines...) Expand all Loading... |
280 | 282 |
281 | 283 |
282 TEST(Integer32ToSmi) { | 284 TEST(Integer32ToSmi) { |
283 // Allocate an executable page of memory. | 285 // Allocate an executable page of memory. |
284 size_t actual_size; | 286 size_t actual_size; |
285 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 287 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
286 Assembler::kMinimalBufferSize, &actual_size, true)); | 288 Assembler::kMinimalBufferSize, &actual_size, true)); |
287 CHECK(buffer); | 289 CHECK(buffer); |
288 Isolate* isolate = CcTest::i_isolate(); | 290 Isolate* isolate = CcTest::i_isolate(); |
289 HandleScope handles(isolate); | 291 HandleScope handles(isolate); |
290 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 292 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 293 v8::internal::CodeObjectRequired::kYes); |
291 | 294 |
292 MacroAssembler* masm = &assembler; | 295 MacroAssembler* masm = &assembler; |
293 EntryCode(masm); | 296 EntryCode(masm); |
294 Label exit; | 297 Label exit; |
295 | 298 |
296 __ movq(rax, Immediate(1)); // Test number. | 299 __ movq(rax, Immediate(1)); // Test number. |
297 __ movl(rcx, Immediate(0)); | 300 __ movl(rcx, Immediate(0)); |
298 __ Integer32ToSmi(rcx, rcx); | 301 __ Integer32ToSmi(rcx, rcx); |
299 __ Set(rdx, reinterpret_cast<intptr_t>(Smi::FromInt(0))); | 302 __ Set(rdx, reinterpret_cast<intptr_t>(Smi::FromInt(0))); |
300 __ cmpq(rcx, rdx); | 303 __ cmpq(rcx, rdx); |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
406 | 409 |
407 | 410 |
408 TEST(Integer64PlusConstantToSmi) { | 411 TEST(Integer64PlusConstantToSmi) { |
409 // Allocate an executable page of memory. | 412 // Allocate an executable page of memory. |
410 size_t actual_size; | 413 size_t actual_size; |
411 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 414 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
412 Assembler::kMinimalBufferSize, &actual_size, true)); | 415 Assembler::kMinimalBufferSize, &actual_size, true)); |
413 CHECK(buffer); | 416 CHECK(buffer); |
414 Isolate* isolate = CcTest::i_isolate(); | 417 Isolate* isolate = CcTest::i_isolate(); |
415 HandleScope handles(isolate); | 418 HandleScope handles(isolate); |
416 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 419 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 420 v8::internal::CodeObjectRequired::kYes); |
417 | 421 |
418 MacroAssembler* masm = &assembler; | 422 MacroAssembler* masm = &assembler; |
419 EntryCode(masm); | 423 EntryCode(masm); |
420 Label exit; | 424 Label exit; |
421 | 425 |
422 int64_t twice_max = static_cast<int64_t>(Smi::kMaxValue) * 2; | 426 int64_t twice_max = static_cast<int64_t>(Smi::kMaxValue) * 2; |
423 | 427 |
424 TestI64PlusConstantToSmi(masm, &exit, 0x10, 0, 0); | 428 TestI64PlusConstantToSmi(masm, &exit, 0x10, 0, 0); |
425 TestI64PlusConstantToSmi(masm, &exit, 0x20, 0, 1); | 429 TestI64PlusConstantToSmi(masm, &exit, 0x20, 0, 1); |
426 TestI64PlusConstantToSmi(masm, &exit, 0x30, 1, 0); | 430 TestI64PlusConstantToSmi(masm, &exit, 0x30, 1, 0); |
(...skipping 21 matching lines...) Expand all Loading... |
448 | 452 |
449 | 453 |
450 TEST(SmiCheck) { | 454 TEST(SmiCheck) { |
451 // Allocate an executable page of memory. | 455 // Allocate an executable page of memory. |
452 size_t actual_size; | 456 size_t actual_size; |
453 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 457 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
454 Assembler::kMinimalBufferSize, &actual_size, true)); | 458 Assembler::kMinimalBufferSize, &actual_size, true)); |
455 CHECK(buffer); | 459 CHECK(buffer); |
456 Isolate* isolate = CcTest::i_isolate(); | 460 Isolate* isolate = CcTest::i_isolate(); |
457 HandleScope handles(isolate); | 461 HandleScope handles(isolate); |
458 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 462 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 463 v8::internal::CodeObjectRequired::kYes); |
459 | 464 |
460 MacroAssembler* masm = &assembler; | 465 MacroAssembler* masm = &assembler; |
461 EntryCode(masm); | 466 EntryCode(masm); |
462 Label exit; | 467 Label exit; |
463 Condition cond; | 468 Condition cond; |
464 | 469 |
465 __ movl(rax, Immediate(1)); // Test number. | 470 __ movl(rax, Immediate(1)); // Test number. |
466 | 471 |
467 // CheckSmi | 472 // CheckSmi |
468 | 473 |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
667 | 672 |
668 | 673 |
669 TEST(SmiNeg) { | 674 TEST(SmiNeg) { |
670 // Allocate an executable page of memory. | 675 // Allocate an executable page of memory. |
671 size_t actual_size; | 676 size_t actual_size; |
672 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 677 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
673 Assembler::kMinimalBufferSize, &actual_size, true)); | 678 Assembler::kMinimalBufferSize, &actual_size, true)); |
674 CHECK(buffer); | 679 CHECK(buffer); |
675 Isolate* isolate = CcTest::i_isolate(); | 680 Isolate* isolate = CcTest::i_isolate(); |
676 HandleScope handles(isolate); | 681 HandleScope handles(isolate); |
677 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 682 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 683 v8::internal::CodeObjectRequired::kYes); |
678 | 684 |
679 MacroAssembler* masm = &assembler; | 685 MacroAssembler* masm = &assembler; |
680 EntryCode(masm); | 686 EntryCode(masm); |
681 Label exit; | 687 Label exit; |
682 | 688 |
683 TestSmiNeg(masm, &exit, 0x10, 0); | 689 TestSmiNeg(masm, &exit, 0x10, 0); |
684 TestSmiNeg(masm, &exit, 0x20, 1); | 690 TestSmiNeg(masm, &exit, 0x20, 1); |
685 TestSmiNeg(masm, &exit, 0x30, -1); | 691 TestSmiNeg(masm, &exit, 0x30, -1); |
686 TestSmiNeg(masm, &exit, 0x40, 127); | 692 TestSmiNeg(masm, &exit, 0x40, 127); |
687 TestSmiNeg(masm, &exit, 0x50, 65535); | 693 TestSmiNeg(masm, &exit, 0x50, 65535); |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
878 | 884 |
879 | 885 |
880 TEST(SmiAdd) { | 886 TEST(SmiAdd) { |
881 // Allocate an executable page of memory. | 887 // Allocate an executable page of memory. |
882 size_t actual_size; | 888 size_t actual_size; |
883 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 889 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
884 Assembler::kMinimalBufferSize * 3, &actual_size, true)); | 890 Assembler::kMinimalBufferSize * 3, &actual_size, true)); |
885 CHECK(buffer); | 891 CHECK(buffer); |
886 Isolate* isolate = CcTest::i_isolate(); | 892 Isolate* isolate = CcTest::i_isolate(); |
887 HandleScope handles(isolate); | 893 HandleScope handles(isolate); |
888 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 894 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 895 v8::internal::CodeObjectRequired::kYes); |
889 | 896 |
890 MacroAssembler* masm = &assembler; | 897 MacroAssembler* masm = &assembler; |
891 EntryCode(masm); | 898 EntryCode(masm); |
892 Label exit; | 899 Label exit; |
893 | 900 |
894 // No-overflow tests. | 901 // No-overflow tests. |
895 SmiAddTest(masm, &exit, 0x10, 1, 2); | 902 SmiAddTest(masm, &exit, 0x10, 1, 2); |
896 SmiAddTest(masm, &exit, 0x20, 1, -2); | 903 SmiAddTest(masm, &exit, 0x20, 1, -2); |
897 SmiAddTest(masm, &exit, 0x30, -1, 2); | 904 SmiAddTest(masm, &exit, 0x30, -1, 2); |
898 SmiAddTest(masm, &exit, 0x40, -1, -2); | 905 SmiAddTest(masm, &exit, 0x40, -1, -2); |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1094 | 1101 |
1095 | 1102 |
1096 TEST(SmiSub) { | 1103 TEST(SmiSub) { |
1097 // Allocate an executable page of memory. | 1104 // Allocate an executable page of memory. |
1098 size_t actual_size; | 1105 size_t actual_size; |
1099 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 1106 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
1100 Assembler::kMinimalBufferSize * 4, &actual_size, true)); | 1107 Assembler::kMinimalBufferSize * 4, &actual_size, true)); |
1101 CHECK(buffer); | 1108 CHECK(buffer); |
1102 Isolate* isolate = CcTest::i_isolate(); | 1109 Isolate* isolate = CcTest::i_isolate(); |
1103 HandleScope handles(isolate); | 1110 HandleScope handles(isolate); |
1104 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1111 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 1112 v8::internal::CodeObjectRequired::kYes); |
1105 | 1113 |
1106 MacroAssembler* masm = &assembler; | 1114 MacroAssembler* masm = &assembler; |
1107 EntryCode(masm); | 1115 EntryCode(masm); |
1108 Label exit; | 1116 Label exit; |
1109 | 1117 |
1110 SmiSubTest(masm, &exit, 0x10, 1, 2); | 1118 SmiSubTest(masm, &exit, 0x10, 1, 2); |
1111 SmiSubTest(masm, &exit, 0x20, 1, -2); | 1119 SmiSubTest(masm, &exit, 0x20, 1, -2); |
1112 SmiSubTest(masm, &exit, 0x30, -1, 2); | 1120 SmiSubTest(masm, &exit, 0x30, -1, 2); |
1113 SmiSubTest(masm, &exit, 0x40, -1, -2); | 1121 SmiSubTest(masm, &exit, 0x40, -1, -2); |
1114 SmiSubTest(masm, &exit, 0x50, 0x1000, 0x2000); | 1122 SmiSubTest(masm, &exit, 0x50, 0x1000, 0x2000); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1182 | 1190 |
1183 | 1191 |
1184 TEST(SmiMul) { | 1192 TEST(SmiMul) { |
1185 // Allocate an executable page of memory. | 1193 // Allocate an executable page of memory. |
1186 size_t actual_size; | 1194 size_t actual_size; |
1187 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 1195 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
1188 Assembler::kMinimalBufferSize, &actual_size, true)); | 1196 Assembler::kMinimalBufferSize, &actual_size, true)); |
1189 CHECK(buffer); | 1197 CHECK(buffer); |
1190 Isolate* isolate = CcTest::i_isolate(); | 1198 Isolate* isolate = CcTest::i_isolate(); |
1191 HandleScope handles(isolate); | 1199 HandleScope handles(isolate); |
1192 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1200 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 1201 v8::internal::CodeObjectRequired::kYes); |
1193 | 1202 |
1194 MacroAssembler* masm = &assembler; | 1203 MacroAssembler* masm = &assembler; |
1195 EntryCode(masm); | 1204 EntryCode(masm); |
1196 Label exit; | 1205 Label exit; |
1197 | 1206 |
1198 TestSmiMul(masm, &exit, 0x10, 0, 0); | 1207 TestSmiMul(masm, &exit, 0x10, 0, 0); |
1199 TestSmiMul(masm, &exit, 0x20, -1, 0); | 1208 TestSmiMul(masm, &exit, 0x20, -1, 0); |
1200 TestSmiMul(masm, &exit, 0x30, 0, -1); | 1209 TestSmiMul(masm, &exit, 0x30, 0, -1); |
1201 TestSmiMul(masm, &exit, 0x40, -1, -1); | 1210 TestSmiMul(masm, &exit, 0x40, -1, -1); |
1202 TestSmiMul(masm, &exit, 0x50, 0x10000, 0x10000); | 1211 TestSmiMul(masm, &exit, 0x50, 0x10000, 0x10000); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1285 | 1294 |
1286 | 1295 |
1287 TEST(SmiDiv) { | 1296 TEST(SmiDiv) { |
1288 // Allocate an executable page of memory. | 1297 // Allocate an executable page of memory. |
1289 size_t actual_size; | 1298 size_t actual_size; |
1290 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 1299 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
1291 Assembler::kMinimalBufferSize * 2, &actual_size, true)); | 1300 Assembler::kMinimalBufferSize * 2, &actual_size, true)); |
1292 CHECK(buffer); | 1301 CHECK(buffer); |
1293 Isolate* isolate = CcTest::i_isolate(); | 1302 Isolate* isolate = CcTest::i_isolate(); |
1294 HandleScope handles(isolate); | 1303 HandleScope handles(isolate); |
1295 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1304 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 1305 v8::internal::CodeObjectRequired::kYes); |
1296 | 1306 |
1297 MacroAssembler* masm = &assembler; | 1307 MacroAssembler* masm = &assembler; |
1298 EntryCode(masm); | 1308 EntryCode(masm); |
1299 Label exit; | 1309 Label exit; |
1300 | 1310 |
1301 __ pushq(r14); | 1311 __ pushq(r14); |
1302 __ pushq(r15); | 1312 __ pushq(r15); |
1303 TestSmiDiv(masm, &exit, 0x10, 1, 1); | 1313 TestSmiDiv(masm, &exit, 0x10, 1, 1); |
1304 TestSmiDiv(masm, &exit, 0x20, 1, 0); | 1314 TestSmiDiv(masm, &exit, 0x20, 1, 0); |
1305 TestSmiDiv(masm, &exit, 0x30, -1, 0); | 1315 TestSmiDiv(masm, &exit, 0x30, -1, 0); |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1392 | 1402 |
1393 | 1403 |
1394 TEST(SmiMod) { | 1404 TEST(SmiMod) { |
1395 // Allocate an executable page of memory. | 1405 // Allocate an executable page of memory. |
1396 size_t actual_size; | 1406 size_t actual_size; |
1397 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 1407 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
1398 Assembler::kMinimalBufferSize * 2, &actual_size, true)); | 1408 Assembler::kMinimalBufferSize * 2, &actual_size, true)); |
1399 CHECK(buffer); | 1409 CHECK(buffer); |
1400 Isolate* isolate = CcTest::i_isolate(); | 1410 Isolate* isolate = CcTest::i_isolate(); |
1401 HandleScope handles(isolate); | 1411 HandleScope handles(isolate); |
1402 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1412 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 1413 v8::internal::CodeObjectRequired::kYes); |
1403 | 1414 |
1404 MacroAssembler* masm = &assembler; | 1415 MacroAssembler* masm = &assembler; |
1405 EntryCode(masm); | 1416 EntryCode(masm); |
1406 Label exit; | 1417 Label exit; |
1407 | 1418 |
1408 __ pushq(r14); | 1419 __ pushq(r14); |
1409 __ pushq(r15); | 1420 __ pushq(r15); |
1410 TestSmiMod(masm, &exit, 0x10, 1, 1); | 1421 TestSmiMod(masm, &exit, 0x10, 1, 1); |
1411 TestSmiMod(masm, &exit, 0x20, 1, 0); | 1422 TestSmiMod(masm, &exit, 0x20, 1, 0); |
1412 TestSmiMod(masm, &exit, 0x30, -1, 0); | 1423 TestSmiMod(masm, &exit, 0x30, -1, 0); |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1486 | 1497 |
1487 | 1498 |
1488 TEST(SmiIndex) { | 1499 TEST(SmiIndex) { |
1489 // Allocate an executable page of memory. | 1500 // Allocate an executable page of memory. |
1490 size_t actual_size; | 1501 size_t actual_size; |
1491 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 1502 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
1492 Assembler::kMinimalBufferSize * 5, &actual_size, true)); | 1503 Assembler::kMinimalBufferSize * 5, &actual_size, true)); |
1493 CHECK(buffer); | 1504 CHECK(buffer); |
1494 Isolate* isolate = CcTest::i_isolate(); | 1505 Isolate* isolate = CcTest::i_isolate(); |
1495 HandleScope handles(isolate); | 1506 HandleScope handles(isolate); |
1496 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1507 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 1508 v8::internal::CodeObjectRequired::kYes); |
1497 | 1509 |
1498 MacroAssembler* masm = &assembler; | 1510 MacroAssembler* masm = &assembler; |
1499 EntryCode(masm); | 1511 EntryCode(masm); |
1500 Label exit; | 1512 Label exit; |
1501 | 1513 |
1502 TestSmiIndex(masm, &exit, 0x10, 0); | 1514 TestSmiIndex(masm, &exit, 0x10, 0); |
1503 TestSmiIndex(masm, &exit, 0x20, 1); | 1515 TestSmiIndex(masm, &exit, 0x20, 1); |
1504 TestSmiIndex(masm, &exit, 0x30, 100); | 1516 TestSmiIndex(masm, &exit, 0x30, 100); |
1505 TestSmiIndex(masm, &exit, 0x40, 1000); | 1517 TestSmiIndex(masm, &exit, 0x40, 1000); |
1506 TestSmiIndex(masm, &exit, 0x50, Smi::kMaxValue); | 1518 TestSmiIndex(masm, &exit, 0x50, Smi::kMaxValue); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1552 | 1564 |
1553 | 1565 |
1554 TEST(SmiSelectNonSmi) { | 1566 TEST(SmiSelectNonSmi) { |
1555 // Allocate an executable page of memory. | 1567 // Allocate an executable page of memory. |
1556 size_t actual_size; | 1568 size_t actual_size; |
1557 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 1569 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
1558 Assembler::kMinimalBufferSize * 2, &actual_size, true)); | 1570 Assembler::kMinimalBufferSize * 2, &actual_size, true)); |
1559 CHECK(buffer); | 1571 CHECK(buffer); |
1560 Isolate* isolate = CcTest::i_isolate(); | 1572 Isolate* isolate = CcTest::i_isolate(); |
1561 HandleScope handles(isolate); | 1573 HandleScope handles(isolate); |
1562 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1574 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 1575 v8::internal::CodeObjectRequired::kYes); |
1563 | 1576 |
1564 MacroAssembler* masm = &assembler; | 1577 MacroAssembler* masm = &assembler; |
1565 EntryCode(masm); | 1578 EntryCode(masm); |
1566 Label exit; | 1579 Label exit; |
1567 | 1580 |
1568 TestSelectNonSmi(masm, &exit, 0x10, 0, 0); | 1581 TestSelectNonSmi(masm, &exit, 0x10, 0, 0); |
1569 TestSelectNonSmi(masm, &exit, 0x20, 0, 1); | 1582 TestSelectNonSmi(masm, &exit, 0x20, 0, 1); |
1570 TestSelectNonSmi(masm, &exit, 0x30, 1, 0); | 1583 TestSelectNonSmi(masm, &exit, 0x30, 1, 0); |
1571 TestSelectNonSmi(masm, &exit, 0x40, 0, -1); | 1584 TestSelectNonSmi(masm, &exit, 0x40, 0, -1); |
1572 TestSelectNonSmi(masm, &exit, 0x50, -1, 0); | 1585 TestSelectNonSmi(masm, &exit, 0x50, -1, 0); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1628 | 1641 |
1629 | 1642 |
1630 TEST(SmiAnd) { | 1643 TEST(SmiAnd) { |
1631 // Allocate an executable page of memory. | 1644 // Allocate an executable page of memory. |
1632 size_t actual_size; | 1645 size_t actual_size; |
1633 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 1646 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
1634 Assembler::kMinimalBufferSize * 2, &actual_size, true)); | 1647 Assembler::kMinimalBufferSize * 2, &actual_size, true)); |
1635 CHECK(buffer); | 1648 CHECK(buffer); |
1636 Isolate* isolate = CcTest::i_isolate(); | 1649 Isolate* isolate = CcTest::i_isolate(); |
1637 HandleScope handles(isolate); | 1650 HandleScope handles(isolate); |
1638 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1651 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 1652 v8::internal::CodeObjectRequired::kYes); |
1639 | 1653 |
1640 MacroAssembler* masm = &assembler; | 1654 MacroAssembler* masm = &assembler; |
1641 EntryCode(masm); | 1655 EntryCode(masm); |
1642 Label exit; | 1656 Label exit; |
1643 | 1657 |
1644 TestSmiAnd(masm, &exit, 0x10, 0, 0); | 1658 TestSmiAnd(masm, &exit, 0x10, 0, 0); |
1645 TestSmiAnd(masm, &exit, 0x20, 0, 1); | 1659 TestSmiAnd(masm, &exit, 0x20, 0, 1); |
1646 TestSmiAnd(masm, &exit, 0x30, 1, 0); | 1660 TestSmiAnd(masm, &exit, 0x30, 1, 0); |
1647 TestSmiAnd(masm, &exit, 0x40, 0, -1); | 1661 TestSmiAnd(masm, &exit, 0x40, 0, -1); |
1648 TestSmiAnd(masm, &exit, 0x50, -1, 0); | 1662 TestSmiAnd(masm, &exit, 0x50, -1, 0); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1706 | 1720 |
1707 | 1721 |
1708 TEST(SmiOr) { | 1722 TEST(SmiOr) { |
1709 // Allocate an executable page of memory. | 1723 // Allocate an executable page of memory. |
1710 size_t actual_size; | 1724 size_t actual_size; |
1711 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 1725 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
1712 Assembler::kMinimalBufferSize * 2, &actual_size, true)); | 1726 Assembler::kMinimalBufferSize * 2, &actual_size, true)); |
1713 CHECK(buffer); | 1727 CHECK(buffer); |
1714 Isolate* isolate = CcTest::i_isolate(); | 1728 Isolate* isolate = CcTest::i_isolate(); |
1715 HandleScope handles(isolate); | 1729 HandleScope handles(isolate); |
1716 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1730 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 1731 v8::internal::CodeObjectRequired::kYes); |
1717 | 1732 |
1718 MacroAssembler* masm = &assembler; | 1733 MacroAssembler* masm = &assembler; |
1719 EntryCode(masm); | 1734 EntryCode(masm); |
1720 Label exit; | 1735 Label exit; |
1721 | 1736 |
1722 TestSmiOr(masm, &exit, 0x10, 0, 0); | 1737 TestSmiOr(masm, &exit, 0x10, 0, 0); |
1723 TestSmiOr(masm, &exit, 0x20, 0, 1); | 1738 TestSmiOr(masm, &exit, 0x20, 0, 1); |
1724 TestSmiOr(masm, &exit, 0x30, 1, 0); | 1739 TestSmiOr(masm, &exit, 0x30, 1, 0); |
1725 TestSmiOr(masm, &exit, 0x40, 0, -1); | 1740 TestSmiOr(masm, &exit, 0x40, 0, -1); |
1726 TestSmiOr(masm, &exit, 0x50, -1, 0); | 1741 TestSmiOr(masm, &exit, 0x50, -1, 0); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1786 | 1801 |
1787 | 1802 |
1788 TEST(SmiXor) { | 1803 TEST(SmiXor) { |
1789 // Allocate an executable page of memory. | 1804 // Allocate an executable page of memory. |
1790 size_t actual_size; | 1805 size_t actual_size; |
1791 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 1806 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
1792 Assembler::kMinimalBufferSize * 2, &actual_size, true)); | 1807 Assembler::kMinimalBufferSize * 2, &actual_size, true)); |
1793 CHECK(buffer); | 1808 CHECK(buffer); |
1794 Isolate* isolate = CcTest::i_isolate(); | 1809 Isolate* isolate = CcTest::i_isolate(); |
1795 HandleScope handles(isolate); | 1810 HandleScope handles(isolate); |
1796 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1811 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 1812 v8::internal::CodeObjectRequired::kYes); |
1797 | 1813 |
1798 MacroAssembler* masm = &assembler; | 1814 MacroAssembler* masm = &assembler; |
1799 EntryCode(masm); | 1815 EntryCode(masm); |
1800 Label exit; | 1816 Label exit; |
1801 | 1817 |
1802 TestSmiXor(masm, &exit, 0x10, 0, 0); | 1818 TestSmiXor(masm, &exit, 0x10, 0, 0); |
1803 TestSmiXor(masm, &exit, 0x20, 0, 1); | 1819 TestSmiXor(masm, &exit, 0x20, 0, 1); |
1804 TestSmiXor(masm, &exit, 0x30, 1, 0); | 1820 TestSmiXor(masm, &exit, 0x30, 1, 0); |
1805 TestSmiXor(masm, &exit, 0x40, 0, -1); | 1821 TestSmiXor(masm, &exit, 0x40, 0, -1); |
1806 TestSmiXor(masm, &exit, 0x50, -1, 0); | 1822 TestSmiXor(masm, &exit, 0x50, -1, 0); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1850 | 1866 |
1851 | 1867 |
1852 TEST(SmiNot) { | 1868 TEST(SmiNot) { |
1853 // Allocate an executable page of memory. | 1869 // Allocate an executable page of memory. |
1854 size_t actual_size; | 1870 size_t actual_size; |
1855 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 1871 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
1856 Assembler::kMinimalBufferSize, &actual_size, true)); | 1872 Assembler::kMinimalBufferSize, &actual_size, true)); |
1857 CHECK(buffer); | 1873 CHECK(buffer); |
1858 Isolate* isolate = CcTest::i_isolate(); | 1874 Isolate* isolate = CcTest::i_isolate(); |
1859 HandleScope handles(isolate); | 1875 HandleScope handles(isolate); |
1860 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1876 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 1877 v8::internal::CodeObjectRequired::kYes); |
1861 | 1878 |
1862 MacroAssembler* masm = &assembler; | 1879 MacroAssembler* masm = &assembler; |
1863 EntryCode(masm); | 1880 EntryCode(masm); |
1864 Label exit; | 1881 Label exit; |
1865 | 1882 |
1866 TestSmiNot(masm, &exit, 0x10, 0); | 1883 TestSmiNot(masm, &exit, 0x10, 0); |
1867 TestSmiNot(masm, &exit, 0x20, 1); | 1884 TestSmiNot(masm, &exit, 0x20, 1); |
1868 TestSmiNot(masm, &exit, 0x30, -1); | 1885 TestSmiNot(masm, &exit, 0x30, -1); |
1869 TestSmiNot(masm, &exit, 0x40, 127); | 1886 TestSmiNot(masm, &exit, 0x40, 127); |
1870 TestSmiNot(masm, &exit, 0x50, 65535); | 1887 TestSmiNot(masm, &exit, 0x50, 65535); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1943 | 1960 |
1944 | 1961 |
1945 TEST(SmiShiftLeft) { | 1962 TEST(SmiShiftLeft) { |
1946 // Allocate an executable page of memory. | 1963 // Allocate an executable page of memory. |
1947 size_t actual_size; | 1964 size_t actual_size; |
1948 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 1965 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
1949 Assembler::kMinimalBufferSize * 7, &actual_size, true)); | 1966 Assembler::kMinimalBufferSize * 7, &actual_size, true)); |
1950 CHECK(buffer); | 1967 CHECK(buffer); |
1951 Isolate* isolate = CcTest::i_isolate(); | 1968 Isolate* isolate = CcTest::i_isolate(); |
1952 HandleScope handles(isolate); | 1969 HandleScope handles(isolate); |
1953 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1970 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 1971 v8::internal::CodeObjectRequired::kYes); |
1954 | 1972 |
1955 MacroAssembler* masm = &assembler; | 1973 MacroAssembler* masm = &assembler; |
1956 EntryCode(masm); | 1974 EntryCode(masm); |
1957 Label exit; | 1975 Label exit; |
1958 | 1976 |
1959 TestSmiShiftLeft(masm, &exit, 0x10, 0); | 1977 TestSmiShiftLeft(masm, &exit, 0x10, 0); |
1960 TestSmiShiftLeft(masm, &exit, 0x50, 1); | 1978 TestSmiShiftLeft(masm, &exit, 0x50, 1); |
1961 TestSmiShiftLeft(masm, &exit, 0x90, 127); | 1979 TestSmiShiftLeft(masm, &exit, 0x90, 127); |
1962 TestSmiShiftLeft(masm, &exit, 0xD0, 65535); | 1980 TestSmiShiftLeft(masm, &exit, 0xD0, 65535); |
1963 TestSmiShiftLeft(masm, &exit, 0x110, Smi::kMaxValue); | 1981 TestSmiShiftLeft(masm, &exit, 0x110, Smi::kMaxValue); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2046 | 2064 |
2047 | 2065 |
2048 TEST(SmiShiftLogicalRight) { | 2066 TEST(SmiShiftLogicalRight) { |
2049 // Allocate an executable page of memory. | 2067 // Allocate an executable page of memory. |
2050 size_t actual_size; | 2068 size_t actual_size; |
2051 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 2069 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
2052 Assembler::kMinimalBufferSize * 5, &actual_size, true)); | 2070 Assembler::kMinimalBufferSize * 5, &actual_size, true)); |
2053 CHECK(buffer); | 2071 CHECK(buffer); |
2054 Isolate* isolate = CcTest::i_isolate(); | 2072 Isolate* isolate = CcTest::i_isolate(); |
2055 HandleScope handles(isolate); | 2073 HandleScope handles(isolate); |
2056 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 2074 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 2075 v8::internal::CodeObjectRequired::kYes); |
2057 | 2076 |
2058 MacroAssembler* masm = &assembler; | 2077 MacroAssembler* masm = &assembler; |
2059 EntryCode(masm); | 2078 EntryCode(masm); |
2060 Label exit; | 2079 Label exit; |
2061 | 2080 |
2062 TestSmiShiftLogicalRight(masm, &exit, 0x10, 0); | 2081 TestSmiShiftLogicalRight(masm, &exit, 0x10, 0); |
2063 TestSmiShiftLogicalRight(masm, &exit, 0x30, 1); | 2082 TestSmiShiftLogicalRight(masm, &exit, 0x30, 1); |
2064 TestSmiShiftLogicalRight(masm, &exit, 0x50, 127); | 2083 TestSmiShiftLogicalRight(masm, &exit, 0x50, 127); |
2065 TestSmiShiftLogicalRight(masm, &exit, 0x70, 65535); | 2084 TestSmiShiftLogicalRight(masm, &exit, 0x70, 65535); |
2066 TestSmiShiftLogicalRight(masm, &exit, 0x90, Smi::kMaxValue); | 2085 TestSmiShiftLogicalRight(masm, &exit, 0x90, Smi::kMaxValue); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2112 | 2131 |
2113 | 2132 |
2114 TEST(SmiShiftArithmeticRight) { | 2133 TEST(SmiShiftArithmeticRight) { |
2115 // Allocate an executable page of memory. | 2134 // Allocate an executable page of memory. |
2116 size_t actual_size; | 2135 size_t actual_size; |
2117 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 2136 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
2118 Assembler::kMinimalBufferSize * 3, &actual_size, true)); | 2137 Assembler::kMinimalBufferSize * 3, &actual_size, true)); |
2119 CHECK(buffer); | 2138 CHECK(buffer); |
2120 Isolate* isolate = CcTest::i_isolate(); | 2139 Isolate* isolate = CcTest::i_isolate(); |
2121 HandleScope handles(isolate); | 2140 HandleScope handles(isolate); |
2122 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 2141 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 2142 v8::internal::CodeObjectRequired::kYes); |
2123 | 2143 |
2124 MacroAssembler* masm = &assembler; | 2144 MacroAssembler* masm = &assembler; |
2125 EntryCode(masm); | 2145 EntryCode(masm); |
2126 Label exit; | 2146 Label exit; |
2127 | 2147 |
2128 TestSmiShiftArithmeticRight(masm, &exit, 0x10, 0); | 2148 TestSmiShiftArithmeticRight(masm, &exit, 0x10, 0); |
2129 TestSmiShiftArithmeticRight(masm, &exit, 0x20, 1); | 2149 TestSmiShiftArithmeticRight(masm, &exit, 0x20, 1); |
2130 TestSmiShiftArithmeticRight(masm, &exit, 0x30, 127); | 2150 TestSmiShiftArithmeticRight(masm, &exit, 0x30, 127); |
2131 TestSmiShiftArithmeticRight(masm, &exit, 0x40, 65535); | 2151 TestSmiShiftArithmeticRight(masm, &exit, 0x40, 65535); |
2132 TestSmiShiftArithmeticRight(masm, &exit, 0x50, Smi::kMaxValue); | 2152 TestSmiShiftArithmeticRight(masm, &exit, 0x50, Smi::kMaxValue); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2173 | 2193 |
2174 | 2194 |
2175 TEST(PositiveSmiTimesPowerOfTwoToInteger64) { | 2195 TEST(PositiveSmiTimesPowerOfTwoToInteger64) { |
2176 // Allocate an executable page of memory. | 2196 // Allocate an executable page of memory. |
2177 size_t actual_size; | 2197 size_t actual_size; |
2178 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 2198 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
2179 Assembler::kMinimalBufferSize * 4, &actual_size, true)); | 2199 Assembler::kMinimalBufferSize * 4, &actual_size, true)); |
2180 CHECK(buffer); | 2200 CHECK(buffer); |
2181 Isolate* isolate = CcTest::i_isolate(); | 2201 Isolate* isolate = CcTest::i_isolate(); |
2182 HandleScope handles(isolate); | 2202 HandleScope handles(isolate); |
2183 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 2203 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 2204 v8::internal::CodeObjectRequired::kYes); |
2184 | 2205 |
2185 MacroAssembler* masm = &assembler; | 2206 MacroAssembler* masm = &assembler; |
2186 EntryCode(masm); | 2207 EntryCode(masm); |
2187 Label exit; | 2208 Label exit; |
2188 | 2209 |
2189 TestPositiveSmiPowerUp(masm, &exit, 0x20, 0); | 2210 TestPositiveSmiPowerUp(masm, &exit, 0x20, 0); |
2190 TestPositiveSmiPowerUp(masm, &exit, 0x40, 1); | 2211 TestPositiveSmiPowerUp(masm, &exit, 0x40, 1); |
2191 TestPositiveSmiPowerUp(masm, &exit, 0x60, 127); | 2212 TestPositiveSmiPowerUp(masm, &exit, 0x60, 127); |
2192 TestPositiveSmiPowerUp(masm, &exit, 0x80, 128); | 2213 TestPositiveSmiPowerUp(masm, &exit, 0x80, 128); |
2193 TestPositiveSmiPowerUp(masm, &exit, 0xA0, 255); | 2214 TestPositiveSmiPowerUp(masm, &exit, 0xA0, 255); |
(...skipping 19 matching lines...) Expand all Loading... |
2213 uint32_t data[256]; | 2234 uint32_t data[256]; |
2214 for (uint32_t i = 0; i < 256; i++) { data[i] = i * 0x01010101; } | 2235 for (uint32_t i = 0; i < 256; i++) { data[i] = i * 0x01010101; } |
2215 | 2236 |
2216 // Allocate an executable page of memory. | 2237 // Allocate an executable page of memory. |
2217 size_t actual_size; | 2238 size_t actual_size; |
2218 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 2239 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
2219 Assembler::kMinimalBufferSize * 2, &actual_size, true)); | 2240 Assembler::kMinimalBufferSize * 2, &actual_size, true)); |
2220 CHECK(buffer); | 2241 CHECK(buffer); |
2221 Isolate* isolate = CcTest::i_isolate(); | 2242 Isolate* isolate = CcTest::i_isolate(); |
2222 HandleScope handles(isolate); | 2243 HandleScope handles(isolate); |
2223 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 2244 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 2245 v8::internal::CodeObjectRequired::kYes); |
2224 | 2246 |
2225 MacroAssembler* masm = &assembler; | 2247 MacroAssembler* masm = &assembler; |
2226 Label exit; | 2248 Label exit; |
2227 | 2249 |
2228 EntryCode(masm); | 2250 EntryCode(masm); |
2229 __ pushq(r13); | 2251 __ pushq(r13); |
2230 __ pushq(r14); | 2252 __ pushq(r14); |
2231 __ pushq(rbx); | 2253 __ pushq(rbx); |
2232 __ pushq(rbp); | 2254 __ pushq(rbp); |
2233 __ pushq(Immediate(0x100)); // <-- rbp | 2255 __ pushq(Immediate(0x100)); // <-- rbp |
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2563 | 2585 |
2564 | 2586 |
2565 TEST(LoadAndStoreWithRepresentation) { | 2587 TEST(LoadAndStoreWithRepresentation) { |
2566 // Allocate an executable page of memory. | 2588 // Allocate an executable page of memory. |
2567 size_t actual_size; | 2589 size_t actual_size; |
2568 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( | 2590 byte* buffer = static_cast<byte*>(v8::base::OS::Allocate( |
2569 Assembler::kMinimalBufferSize, &actual_size, true)); | 2591 Assembler::kMinimalBufferSize, &actual_size, true)); |
2570 CHECK(buffer); | 2592 CHECK(buffer); |
2571 Isolate* isolate = CcTest::i_isolate(); | 2593 Isolate* isolate = CcTest::i_isolate(); |
2572 HandleScope handles(isolate); | 2594 HandleScope handles(isolate); |
2573 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 2595 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size), |
| 2596 v8::internal::CodeObjectRequired::kYes); |
2574 MacroAssembler* masm = &assembler; // Create a pointer for the __ macro. | 2597 MacroAssembler* masm = &assembler; // Create a pointer for the __ macro. |
2575 EntryCode(masm); | 2598 EntryCode(masm); |
2576 __ subq(rsp, Immediate(1 * kPointerSize)); | 2599 __ subq(rsp, Immediate(1 * kPointerSize)); |
2577 Label exit; | 2600 Label exit; |
2578 | 2601 |
2579 // Test 1. | 2602 // Test 1. |
2580 __ movq(rax, Immediate(1)); // Test number. | 2603 __ movq(rax, Immediate(1)); // Test number. |
2581 __ movq(Operand(rsp, 0 * kPointerSize), Immediate(0)); | 2604 __ movq(Operand(rsp, 0 * kPointerSize), Immediate(0)); |
2582 __ movq(rcx, Immediate(-1)); | 2605 __ movq(rcx, Immediate(-1)); |
2583 __ Store(Operand(rsp, 0 * kPointerSize), rcx, Representation::UInteger8()); | 2606 __ Store(Operand(rsp, 0 * kPointerSize), rcx, Representation::UInteger8()); |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2703 | 2726 |
2704 CodeDesc desc; | 2727 CodeDesc desc; |
2705 masm->GetCode(&desc); | 2728 masm->GetCode(&desc); |
2706 // Call the function from C++. | 2729 // Call the function from C++. |
2707 int result = FUNCTION_CAST<F0>(buffer)(); | 2730 int result = FUNCTION_CAST<F0>(buffer)(); |
2708 CHECK_EQ(0, result); | 2731 CHECK_EQ(0, result); |
2709 } | 2732 } |
2710 | 2733 |
2711 | 2734 |
2712 #undef __ | 2735 #undef __ |
OLD | NEW |