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 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 // Allocate an executable page of memory. | 158 // Allocate an executable page of memory. |
159 size_t actual_size; | 159 size_t actual_size; |
160 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 160 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
161 &actual_size, | 161 &actual_size, |
162 true)); | 162 true)); |
163 CHECK(buffer); | 163 CHECK(buffer); |
164 Isolate* isolate = CcTest::i_isolate(); | 164 Isolate* isolate = CcTest::i_isolate(); |
165 HandleScope handles(isolate); | 165 HandleScope handles(isolate); |
166 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 166 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
167 MacroAssembler* masm = &assembler; // Create a pointer for the __ macro. | 167 MacroAssembler* masm = &assembler; // Create a pointer for the __ macro. |
168 masm->set_allow_stub_calls(false); | |
169 EntryCode(masm); | 168 EntryCode(masm); |
170 Label exit; | 169 Label exit; |
171 | 170 |
172 TestMoveSmi(masm, &exit, 1, Smi::FromInt(0)); | 171 TestMoveSmi(masm, &exit, 1, Smi::FromInt(0)); |
173 TestMoveSmi(masm, &exit, 2, Smi::FromInt(127)); | 172 TestMoveSmi(masm, &exit, 2, Smi::FromInt(127)); |
174 TestMoveSmi(masm, &exit, 3, Smi::FromInt(128)); | 173 TestMoveSmi(masm, &exit, 3, Smi::FromInt(128)); |
175 TestMoveSmi(masm, &exit, 4, Smi::FromInt(255)); | 174 TestMoveSmi(masm, &exit, 4, Smi::FromInt(255)); |
176 TestMoveSmi(masm, &exit, 5, Smi::FromInt(256)); | 175 TestMoveSmi(masm, &exit, 5, Smi::FromInt(256)); |
177 TestMoveSmi(masm, &exit, 6, Smi::FromInt(Smi::kMaxValue)); | 176 TestMoveSmi(masm, &exit, 6, Smi::FromInt(Smi::kMaxValue)); |
178 TestMoveSmi(masm, &exit, 7, Smi::FromInt(-1)); | 177 TestMoveSmi(masm, &exit, 7, Smi::FromInt(-1)); |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
248 byte* buffer = | 247 byte* buffer = |
249 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 248 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, |
250 &actual_size, | 249 &actual_size, |
251 true)); | 250 true)); |
252 CHECK(buffer); | 251 CHECK(buffer); |
253 Isolate* isolate = CcTest::i_isolate(); | 252 Isolate* isolate = CcTest::i_isolate(); |
254 HandleScope handles(isolate); | 253 HandleScope handles(isolate); |
255 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 254 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
256 | 255 |
257 MacroAssembler* masm = &assembler; | 256 MacroAssembler* masm = &assembler; |
258 masm->set_allow_stub_calls(false); | |
259 EntryCode(masm); | 257 EntryCode(masm); |
260 Label exit; | 258 Label exit; |
261 | 259 |
262 TestSmiCompare(masm, &exit, 0x10, 0, 0); | 260 TestSmiCompare(masm, &exit, 0x10, 0, 0); |
263 TestSmiCompare(masm, &exit, 0x20, 0, 1); | 261 TestSmiCompare(masm, &exit, 0x20, 0, 1); |
264 TestSmiCompare(masm, &exit, 0x30, 1, 0); | 262 TestSmiCompare(masm, &exit, 0x30, 1, 0); |
265 TestSmiCompare(masm, &exit, 0x40, 1, 1); | 263 TestSmiCompare(masm, &exit, 0x40, 1, 1); |
266 TestSmiCompare(masm, &exit, 0x50, 0, -1); | 264 TestSmiCompare(masm, &exit, 0x50, 0, -1); |
267 TestSmiCompare(masm, &exit, 0x60, -1, 0); | 265 TestSmiCompare(masm, &exit, 0x60, -1, 0); |
268 TestSmiCompare(masm, &exit, 0x70, -1, -1); | 266 TestSmiCompare(masm, &exit, 0x70, -1, -1); |
(...skipping 30 matching lines...) Expand all Loading... |
299 size_t actual_size; | 297 size_t actual_size; |
300 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 298 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
301 &actual_size, | 299 &actual_size, |
302 true)); | 300 true)); |
303 CHECK(buffer); | 301 CHECK(buffer); |
304 Isolate* isolate = CcTest::i_isolate(); | 302 Isolate* isolate = CcTest::i_isolate(); |
305 HandleScope handles(isolate); | 303 HandleScope handles(isolate); |
306 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 304 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
307 | 305 |
308 MacroAssembler* masm = &assembler; | 306 MacroAssembler* masm = &assembler; |
309 masm->set_allow_stub_calls(false); | |
310 EntryCode(masm); | 307 EntryCode(masm); |
311 Label exit; | 308 Label exit; |
312 | 309 |
313 __ movq(rax, Immediate(1)); // Test number. | 310 __ movq(rax, Immediate(1)); // Test number. |
314 __ movl(rcx, Immediate(0)); | 311 __ movl(rcx, Immediate(0)); |
315 __ Integer32ToSmi(rcx, rcx); | 312 __ Integer32ToSmi(rcx, rcx); |
316 __ Set(rdx, reinterpret_cast<intptr_t>(Smi::FromInt(0))); | 313 __ Set(rdx, reinterpret_cast<intptr_t>(Smi::FromInt(0))); |
317 __ cmpq(rcx, rdx); | 314 __ cmpq(rcx, rdx); |
318 __ j(not_equal, &exit); | 315 __ j(not_equal, &exit); |
319 | 316 |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 size_t actual_size; | 425 size_t actual_size; |
429 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 426 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
430 &actual_size, | 427 &actual_size, |
431 true)); | 428 true)); |
432 CHECK(buffer); | 429 CHECK(buffer); |
433 Isolate* isolate = CcTest::i_isolate(); | 430 Isolate* isolate = CcTest::i_isolate(); |
434 HandleScope handles(isolate); | 431 HandleScope handles(isolate); |
435 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 432 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
436 | 433 |
437 MacroAssembler* masm = &assembler; | 434 MacroAssembler* masm = &assembler; |
438 masm->set_allow_stub_calls(false); | |
439 EntryCode(masm); | 435 EntryCode(masm); |
440 Label exit; | 436 Label exit; |
441 | 437 |
442 int64_t twice_max = static_cast<int64_t>(Smi::kMaxValue) * 2; | 438 int64_t twice_max = static_cast<int64_t>(Smi::kMaxValue) * 2; |
443 | 439 |
444 TestI64PlusConstantToSmi(masm, &exit, 0x10, 0, 0); | 440 TestI64PlusConstantToSmi(masm, &exit, 0x10, 0, 0); |
445 TestI64PlusConstantToSmi(masm, &exit, 0x20, 0, 1); | 441 TestI64PlusConstantToSmi(masm, &exit, 0x20, 0, 1); |
446 TestI64PlusConstantToSmi(masm, &exit, 0x30, 1, 0); | 442 TestI64PlusConstantToSmi(masm, &exit, 0x30, 1, 0); |
447 TestI64PlusConstantToSmi(masm, &exit, 0x40, Smi::kMaxValue - 5, 5); | 443 TestI64PlusConstantToSmi(masm, &exit, 0x40, Smi::kMaxValue - 5, 5); |
448 TestI64PlusConstantToSmi(masm, &exit, 0x50, Smi::kMinValue + 5, 5); | 444 TestI64PlusConstantToSmi(masm, &exit, 0x50, Smi::kMinValue + 5, 5); |
(...skipping 24 matching lines...) Expand all Loading... |
473 size_t actual_size; | 469 size_t actual_size; |
474 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 470 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
475 &actual_size, | 471 &actual_size, |
476 true)); | 472 true)); |
477 CHECK(buffer); | 473 CHECK(buffer); |
478 Isolate* isolate = CcTest::i_isolate(); | 474 Isolate* isolate = CcTest::i_isolate(); |
479 HandleScope handles(isolate); | 475 HandleScope handles(isolate); |
480 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 476 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
481 | 477 |
482 MacroAssembler* masm = &assembler; | 478 MacroAssembler* masm = &assembler; |
483 masm->set_allow_stub_calls(false); | |
484 EntryCode(masm); | 479 EntryCode(masm); |
485 Label exit; | 480 Label exit; |
486 Condition cond; | 481 Condition cond; |
487 | 482 |
488 __ movl(rax, Immediate(1)); // Test number. | 483 __ movl(rax, Immediate(1)); // Test number. |
489 | 484 |
490 // CheckSmi | 485 // CheckSmi |
491 | 486 |
492 __ movl(rcx, Immediate(0)); | 487 __ movl(rcx, Immediate(0)); |
493 __ Integer32ToSmi(rcx, rcx); | 488 __ Integer32ToSmi(rcx, rcx); |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
722 byte* buffer = | 717 byte* buffer = |
723 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 718 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
724 &actual_size, | 719 &actual_size, |
725 true)); | 720 true)); |
726 CHECK(buffer); | 721 CHECK(buffer); |
727 Isolate* isolate = CcTest::i_isolate(); | 722 Isolate* isolate = CcTest::i_isolate(); |
728 HandleScope handles(isolate); | 723 HandleScope handles(isolate); |
729 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 724 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
730 | 725 |
731 MacroAssembler* masm = &assembler; | 726 MacroAssembler* masm = &assembler; |
732 masm->set_allow_stub_calls(false); | |
733 EntryCode(masm); | 727 EntryCode(masm); |
734 Label exit; | 728 Label exit; |
735 | 729 |
736 TestSmiNeg(masm, &exit, 0x10, 0); | 730 TestSmiNeg(masm, &exit, 0x10, 0); |
737 TestSmiNeg(masm, &exit, 0x20, 1); | 731 TestSmiNeg(masm, &exit, 0x20, 1); |
738 TestSmiNeg(masm, &exit, 0x30, -1); | 732 TestSmiNeg(masm, &exit, 0x30, -1); |
739 TestSmiNeg(masm, &exit, 0x40, 127); | 733 TestSmiNeg(masm, &exit, 0x40, 127); |
740 TestSmiNeg(masm, &exit, 0x50, 65535); | 734 TestSmiNeg(masm, &exit, 0x50, 65535); |
741 TestSmiNeg(masm, &exit, 0x60, Smi::kMinValue); | 735 TestSmiNeg(masm, &exit, 0x60, Smi::kMinValue); |
742 TestSmiNeg(masm, &exit, 0x70, Smi::kMaxValue); | 736 TestSmiNeg(masm, &exit, 0x70, Smi::kMaxValue); |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
930 __ j(equal, exit); | 924 __ j(equal, exit); |
931 } | 925 } |
932 } | 926 } |
933 | 927 |
934 | 928 |
935 TEST(SmiAdd) { | 929 TEST(SmiAdd) { |
936 i::V8::Initialize(NULL); | 930 i::V8::Initialize(NULL); |
937 // Allocate an executable page of memory. | 931 // Allocate an executable page of memory. |
938 size_t actual_size; | 932 size_t actual_size; |
939 byte* buffer = | 933 byte* buffer = |
940 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 934 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 3, |
941 &actual_size, | 935 &actual_size, |
942 true)); | 936 true)); |
943 CHECK(buffer); | 937 CHECK(buffer); |
944 Isolate* isolate = CcTest::i_isolate(); | 938 Isolate* isolate = CcTest::i_isolate(); |
945 HandleScope handles(isolate); | 939 HandleScope handles(isolate); |
946 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 940 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
947 | 941 |
948 MacroAssembler* masm = &assembler; | 942 MacroAssembler* masm = &assembler; |
949 masm->set_allow_stub_calls(false); | |
950 EntryCode(masm); | 943 EntryCode(masm); |
951 Label exit; | 944 Label exit; |
952 | 945 |
953 // No-overflow tests. | 946 // No-overflow tests. |
954 SmiAddTest(masm, &exit, 0x10, 1, 2); | 947 SmiAddTest(masm, &exit, 0x10, 1, 2); |
955 SmiAddTest(masm, &exit, 0x20, 1, -2); | 948 SmiAddTest(masm, &exit, 0x20, 1, -2); |
956 SmiAddTest(masm, &exit, 0x30, -1, 2); | 949 SmiAddTest(masm, &exit, 0x30, -1, 2); |
957 SmiAddTest(masm, &exit, 0x40, -1, -2); | 950 SmiAddTest(masm, &exit, 0x40, -1, -2); |
958 SmiAddTest(masm, &exit, 0x50, 0x1000, 0x2000); | 951 SmiAddTest(masm, &exit, 0x50, 0x1000, 0x2000); |
959 SmiAddTest(masm, &exit, 0x60, Smi::kMinValue, 5); | 952 SmiAddTest(masm, &exit, 0x60, Smi::kMinValue, 5); |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1152 __ j(equal, exit); | 1145 __ j(equal, exit); |
1153 } | 1146 } |
1154 } | 1147 } |
1155 | 1148 |
1156 | 1149 |
1157 TEST(SmiSub) { | 1150 TEST(SmiSub) { |
1158 i::V8::Initialize(NULL); | 1151 i::V8::Initialize(NULL); |
1159 // Allocate an executable page of memory. | 1152 // Allocate an executable page of memory. |
1160 size_t actual_size; | 1153 size_t actual_size; |
1161 byte* buffer = | 1154 byte* buffer = |
1162 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 1155 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 4, |
1163 &actual_size, | 1156 &actual_size, |
1164 true)); | 1157 true)); |
1165 CHECK(buffer); | 1158 CHECK(buffer); |
1166 Isolate* isolate = CcTest::i_isolate(); | 1159 Isolate* isolate = CcTest::i_isolate(); |
1167 HandleScope handles(isolate); | 1160 HandleScope handles(isolate); |
1168 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1161 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
1169 | 1162 |
1170 MacroAssembler* masm = &assembler; | 1163 MacroAssembler* masm = &assembler; |
1171 masm->set_allow_stub_calls(false); | |
1172 EntryCode(masm); | 1164 EntryCode(masm); |
1173 Label exit; | 1165 Label exit; |
1174 | 1166 |
1175 SmiSubTest(masm, &exit, 0x10, 1, 2); | 1167 SmiSubTest(masm, &exit, 0x10, 1, 2); |
1176 SmiSubTest(masm, &exit, 0x20, 1, -2); | 1168 SmiSubTest(masm, &exit, 0x20, 1, -2); |
1177 SmiSubTest(masm, &exit, 0x30, -1, 2); | 1169 SmiSubTest(masm, &exit, 0x30, -1, 2); |
1178 SmiSubTest(masm, &exit, 0x40, -1, -2); | 1170 SmiSubTest(masm, &exit, 0x40, -1, -2); |
1179 SmiSubTest(masm, &exit, 0x50, 0x1000, 0x2000); | 1171 SmiSubTest(masm, &exit, 0x50, 0x1000, 0x2000); |
1180 SmiSubTest(masm, &exit, 0x60, Smi::kMinValue, -5); | 1172 SmiSubTest(masm, &exit, 0x60, Smi::kMinValue, -5); |
1181 SmiSubTest(masm, &exit, 0x70, Smi::kMaxValue, 5); | 1173 SmiSubTest(masm, &exit, 0x70, Smi::kMaxValue, 5); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1252 size_t actual_size; | 1244 size_t actual_size; |
1253 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 1245 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
1254 &actual_size, | 1246 &actual_size, |
1255 true)); | 1247 true)); |
1256 CHECK(buffer); | 1248 CHECK(buffer); |
1257 Isolate* isolate = CcTest::i_isolate(); | 1249 Isolate* isolate = CcTest::i_isolate(); |
1258 HandleScope handles(isolate); | 1250 HandleScope handles(isolate); |
1259 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1251 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
1260 | 1252 |
1261 MacroAssembler* masm = &assembler; | 1253 MacroAssembler* masm = &assembler; |
1262 masm->set_allow_stub_calls(false); | |
1263 EntryCode(masm); | 1254 EntryCode(masm); |
1264 Label exit; | 1255 Label exit; |
1265 | 1256 |
1266 TestSmiMul(masm, &exit, 0x10, 0, 0); | 1257 TestSmiMul(masm, &exit, 0x10, 0, 0); |
1267 TestSmiMul(masm, &exit, 0x20, -1, 0); | 1258 TestSmiMul(masm, &exit, 0x20, -1, 0); |
1268 TestSmiMul(masm, &exit, 0x30, 0, -1); | 1259 TestSmiMul(masm, &exit, 0x30, 0, -1); |
1269 TestSmiMul(masm, &exit, 0x40, -1, -1); | 1260 TestSmiMul(masm, &exit, 0x40, -1, -1); |
1270 TestSmiMul(masm, &exit, 0x50, 0x10000, 0x10000); | 1261 TestSmiMul(masm, &exit, 0x50, 0x10000, 0x10000); |
1271 TestSmiMul(masm, &exit, 0x60, 0x10000, 0xffff); | 1262 TestSmiMul(masm, &exit, 0x60, 0x10000, 0xffff); |
1272 TestSmiMul(masm, &exit, 0x70, 0x10000, 0xffff); | 1263 TestSmiMul(masm, &exit, 0x70, 0x10000, 0xffff); |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1359 byte* buffer = | 1350 byte* buffer = |
1360 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 1351 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, |
1361 &actual_size, | 1352 &actual_size, |
1362 true)); | 1353 true)); |
1363 CHECK(buffer); | 1354 CHECK(buffer); |
1364 Isolate* isolate = CcTest::i_isolate(); | 1355 Isolate* isolate = CcTest::i_isolate(); |
1365 HandleScope handles(isolate); | 1356 HandleScope handles(isolate); |
1366 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1357 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
1367 | 1358 |
1368 MacroAssembler* masm = &assembler; | 1359 MacroAssembler* masm = &assembler; |
1369 masm->set_allow_stub_calls(false); | |
1370 EntryCode(masm); | 1360 EntryCode(masm); |
1371 Label exit; | 1361 Label exit; |
1372 | 1362 |
1373 __ push(r14); | 1363 __ push(r14); |
1374 __ push(r15); | 1364 __ push(r15); |
1375 TestSmiDiv(masm, &exit, 0x10, 1, 1); | 1365 TestSmiDiv(masm, &exit, 0x10, 1, 1); |
1376 TestSmiDiv(masm, &exit, 0x20, 1, 0); | 1366 TestSmiDiv(masm, &exit, 0x20, 1, 0); |
1377 TestSmiDiv(masm, &exit, 0x30, -1, 0); | 1367 TestSmiDiv(masm, &exit, 0x30, -1, 0); |
1378 TestSmiDiv(masm, &exit, 0x40, 0, 1); | 1368 TestSmiDiv(masm, &exit, 0x40, 0, 1); |
1379 TestSmiDiv(masm, &exit, 0x50, 0, -1); | 1369 TestSmiDiv(masm, &exit, 0x50, 0, -1); |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1470 byte* buffer = | 1460 byte* buffer = |
1471 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 1461 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, |
1472 &actual_size, | 1462 &actual_size, |
1473 true)); | 1463 true)); |
1474 CHECK(buffer); | 1464 CHECK(buffer); |
1475 Isolate* isolate = CcTest::i_isolate(); | 1465 Isolate* isolate = CcTest::i_isolate(); |
1476 HandleScope handles(isolate); | 1466 HandleScope handles(isolate); |
1477 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1467 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
1478 | 1468 |
1479 MacroAssembler* masm = &assembler; | 1469 MacroAssembler* masm = &assembler; |
1480 masm->set_allow_stub_calls(false); | |
1481 EntryCode(masm); | 1470 EntryCode(masm); |
1482 Label exit; | 1471 Label exit; |
1483 | 1472 |
1484 __ push(r14); | 1473 __ push(r14); |
1485 __ push(r15); | 1474 __ push(r15); |
1486 TestSmiMod(masm, &exit, 0x10, 1, 1); | 1475 TestSmiMod(masm, &exit, 0x10, 1, 1); |
1487 TestSmiMod(masm, &exit, 0x20, 1, 0); | 1476 TestSmiMod(masm, &exit, 0x20, 1, 0); |
1488 TestSmiMod(masm, &exit, 0x30, -1, 0); | 1477 TestSmiMod(masm, &exit, 0x30, -1, 0); |
1489 TestSmiMod(masm, &exit, 0x40, 0, 1); | 1478 TestSmiMod(masm, &exit, 0x40, 0, 1); |
1490 TestSmiMod(masm, &exit, 0x50, 0, -1); | 1479 TestSmiMod(masm, &exit, 0x50, 0, -1); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1559 __ incq(rax); | 1548 __ incq(rax); |
1560 } | 1549 } |
1561 } | 1550 } |
1562 | 1551 |
1563 | 1552 |
1564 TEST(SmiIndex) { | 1553 TEST(SmiIndex) { |
1565 i::V8::Initialize(NULL); | 1554 i::V8::Initialize(NULL); |
1566 // Allocate an executable page of memory. | 1555 // Allocate an executable page of memory. |
1567 size_t actual_size; | 1556 size_t actual_size; |
1568 byte* buffer = | 1557 byte* buffer = |
1569 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 3, | 1558 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 4, |
1570 &actual_size, | 1559 &actual_size, |
1571 true)); | 1560 true)); |
1572 CHECK(buffer); | 1561 CHECK(buffer); |
1573 Isolate* isolate = CcTest::i_isolate(); | 1562 Isolate* isolate = CcTest::i_isolate(); |
1574 HandleScope handles(isolate); | 1563 HandleScope handles(isolate); |
1575 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1564 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
1576 | 1565 |
1577 MacroAssembler* masm = &assembler; | 1566 MacroAssembler* masm = &assembler; |
1578 masm->set_allow_stub_calls(false); | |
1579 EntryCode(masm); | 1567 EntryCode(masm); |
1580 Label exit; | 1568 Label exit; |
1581 | 1569 |
1582 TestSmiIndex(masm, &exit, 0x10, 0); | 1570 TestSmiIndex(masm, &exit, 0x10, 0); |
1583 TestSmiIndex(masm, &exit, 0x20, 1); | 1571 TestSmiIndex(masm, &exit, 0x20, 1); |
1584 TestSmiIndex(masm, &exit, 0x30, 100); | 1572 TestSmiIndex(masm, &exit, 0x30, 100); |
1585 TestSmiIndex(masm, &exit, 0x40, 1000); | 1573 TestSmiIndex(masm, &exit, 0x40, 1000); |
1586 TestSmiIndex(masm, &exit, 0x50, Smi::kMaxValue); | 1574 TestSmiIndex(masm, &exit, 0x50, Smi::kMaxValue); |
1587 | 1575 |
1588 __ xor_(rax, rax); // Success. | 1576 __ xor_(rax, rax); // Success. |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1629 __ jmp(exit); | 1617 __ jmp(exit); |
1630 __ bind(&fail_ok); | 1618 __ bind(&fail_ok); |
1631 } | 1619 } |
1632 | 1620 |
1633 | 1621 |
1634 TEST(SmiSelectNonSmi) { | 1622 TEST(SmiSelectNonSmi) { |
1635 i::V8::Initialize(NULL); | 1623 i::V8::Initialize(NULL); |
1636 // Allocate an executable page of memory. | 1624 // Allocate an executable page of memory. |
1637 size_t actual_size; | 1625 size_t actual_size; |
1638 byte* buffer = | 1626 byte* buffer = |
1639 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 1627 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, |
1640 &actual_size, | 1628 &actual_size, |
1641 true)); | 1629 true)); |
1642 CHECK(buffer); | 1630 CHECK(buffer); |
1643 Isolate* isolate = CcTest::i_isolate(); | 1631 Isolate* isolate = CcTest::i_isolate(); |
1644 HandleScope handles(isolate); | 1632 HandleScope handles(isolate); |
1645 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1633 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
1646 | 1634 |
1647 MacroAssembler* masm = &assembler; | 1635 MacroAssembler* masm = &assembler; |
1648 masm->set_allow_stub_calls(false); // Avoid inline checks. | |
1649 EntryCode(masm); | 1636 EntryCode(masm); |
1650 Label exit; | 1637 Label exit; |
1651 | 1638 |
1652 TestSelectNonSmi(masm, &exit, 0x10, 0, 0); | 1639 TestSelectNonSmi(masm, &exit, 0x10, 0, 0); |
1653 TestSelectNonSmi(masm, &exit, 0x20, 0, 1); | 1640 TestSelectNonSmi(masm, &exit, 0x20, 0, 1); |
1654 TestSelectNonSmi(masm, &exit, 0x30, 1, 0); | 1641 TestSelectNonSmi(masm, &exit, 0x30, 1, 0); |
1655 TestSelectNonSmi(masm, &exit, 0x40, 0, -1); | 1642 TestSelectNonSmi(masm, &exit, 0x40, 0, -1); |
1656 TestSelectNonSmi(masm, &exit, 0x50, -1, 0); | 1643 TestSelectNonSmi(masm, &exit, 0x50, -1, 0); |
1657 TestSelectNonSmi(masm, &exit, 0x60, -1, -1); | 1644 TestSelectNonSmi(masm, &exit, 0x60, -1, -1); |
1658 TestSelectNonSmi(masm, &exit, 0x70, 1, 1); | 1645 TestSelectNonSmi(masm, &exit, 0x70, 1, 1); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1709 __ cmpq(r8, rcx); | 1696 __ cmpq(r8, rcx); |
1710 __ j(not_equal, exit); | 1697 __ j(not_equal, exit); |
1711 } | 1698 } |
1712 | 1699 |
1713 | 1700 |
1714 TEST(SmiAnd) { | 1701 TEST(SmiAnd) { |
1715 i::V8::Initialize(NULL); | 1702 i::V8::Initialize(NULL); |
1716 // Allocate an executable page of memory. | 1703 // Allocate an executable page of memory. |
1717 size_t actual_size; | 1704 size_t actual_size; |
1718 byte* buffer = | 1705 byte* buffer = |
1719 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 1706 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, |
1720 &actual_size, | 1707 &actual_size, |
1721 true)); | 1708 true)); |
1722 CHECK(buffer); | 1709 CHECK(buffer); |
1723 Isolate* isolate = CcTest::i_isolate(); | 1710 Isolate* isolate = CcTest::i_isolate(); |
1724 HandleScope handles(isolate); | 1711 HandleScope handles(isolate); |
1725 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1712 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
1726 | 1713 |
1727 MacroAssembler* masm = &assembler; | 1714 MacroAssembler* masm = &assembler; |
1728 masm->set_allow_stub_calls(false); | |
1729 EntryCode(masm); | 1715 EntryCode(masm); |
1730 Label exit; | 1716 Label exit; |
1731 | 1717 |
1732 TestSmiAnd(masm, &exit, 0x10, 0, 0); | 1718 TestSmiAnd(masm, &exit, 0x10, 0, 0); |
1733 TestSmiAnd(masm, &exit, 0x20, 0, 1); | 1719 TestSmiAnd(masm, &exit, 0x20, 0, 1); |
1734 TestSmiAnd(masm, &exit, 0x30, 1, 0); | 1720 TestSmiAnd(masm, &exit, 0x30, 1, 0); |
1735 TestSmiAnd(masm, &exit, 0x40, 0, -1); | 1721 TestSmiAnd(masm, &exit, 0x40, 0, -1); |
1736 TestSmiAnd(masm, &exit, 0x50, -1, 0); | 1722 TestSmiAnd(masm, &exit, 0x50, -1, 0); |
1737 TestSmiAnd(masm, &exit, 0x60, -1, -1); | 1723 TestSmiAnd(masm, &exit, 0x60, -1, -1); |
1738 TestSmiAnd(masm, &exit, 0x70, 1, 1); | 1724 TestSmiAnd(masm, &exit, 0x70, 1, 1); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1791 __ cmpq(r8, rcx); | 1777 __ cmpq(r8, rcx); |
1792 __ j(not_equal, exit); | 1778 __ j(not_equal, exit); |
1793 } | 1779 } |
1794 | 1780 |
1795 | 1781 |
1796 TEST(SmiOr) { | 1782 TEST(SmiOr) { |
1797 i::V8::Initialize(NULL); | 1783 i::V8::Initialize(NULL); |
1798 // Allocate an executable page of memory. | 1784 // Allocate an executable page of memory. |
1799 size_t actual_size; | 1785 size_t actual_size; |
1800 byte* buffer = | 1786 byte* buffer = |
1801 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 1787 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, |
1802 &actual_size, | 1788 &actual_size, |
1803 true)); | 1789 true)); |
1804 CHECK(buffer); | 1790 CHECK(buffer); |
1805 Isolate* isolate = CcTest::i_isolate(); | 1791 Isolate* isolate = CcTest::i_isolate(); |
1806 HandleScope handles(isolate); | 1792 HandleScope handles(isolate); |
1807 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1793 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
1808 | 1794 |
1809 MacroAssembler* masm = &assembler; | 1795 MacroAssembler* masm = &assembler; |
1810 masm->set_allow_stub_calls(false); | |
1811 EntryCode(masm); | 1796 EntryCode(masm); |
1812 Label exit; | 1797 Label exit; |
1813 | 1798 |
1814 TestSmiOr(masm, &exit, 0x10, 0, 0); | 1799 TestSmiOr(masm, &exit, 0x10, 0, 0); |
1815 TestSmiOr(masm, &exit, 0x20, 0, 1); | 1800 TestSmiOr(masm, &exit, 0x20, 0, 1); |
1816 TestSmiOr(masm, &exit, 0x30, 1, 0); | 1801 TestSmiOr(masm, &exit, 0x30, 1, 0); |
1817 TestSmiOr(masm, &exit, 0x40, 0, -1); | 1802 TestSmiOr(masm, &exit, 0x40, 0, -1); |
1818 TestSmiOr(masm, &exit, 0x50, -1, 0); | 1803 TestSmiOr(masm, &exit, 0x50, -1, 0); |
1819 TestSmiOr(masm, &exit, 0x60, -1, -1); | 1804 TestSmiOr(masm, &exit, 0x60, -1, -1); |
1820 TestSmiOr(masm, &exit, 0x70, 1, 1); | 1805 TestSmiOr(masm, &exit, 0x70, 1, 1); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1875 __ cmpq(r8, rcx); | 1860 __ cmpq(r8, rcx); |
1876 __ j(not_equal, exit); | 1861 __ j(not_equal, exit); |
1877 } | 1862 } |
1878 | 1863 |
1879 | 1864 |
1880 TEST(SmiXor) { | 1865 TEST(SmiXor) { |
1881 i::V8::Initialize(NULL); | 1866 i::V8::Initialize(NULL); |
1882 // Allocate an executable page of memory. | 1867 // Allocate an executable page of memory. |
1883 size_t actual_size; | 1868 size_t actual_size; |
1884 byte* buffer = | 1869 byte* buffer = |
1885 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 1870 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, |
1886 &actual_size, | 1871 &actual_size, |
1887 true)); | 1872 true)); |
1888 CHECK(buffer); | 1873 CHECK(buffer); |
1889 Isolate* isolate = CcTest::i_isolate(); | 1874 Isolate* isolate = CcTest::i_isolate(); |
1890 HandleScope handles(isolate); | 1875 HandleScope handles(isolate); |
1891 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1876 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
1892 | 1877 |
1893 MacroAssembler* masm = &assembler; | 1878 MacroAssembler* masm = &assembler; |
1894 masm->set_allow_stub_calls(false); | |
1895 EntryCode(masm); | 1879 EntryCode(masm); |
1896 Label exit; | 1880 Label exit; |
1897 | 1881 |
1898 TestSmiXor(masm, &exit, 0x10, 0, 0); | 1882 TestSmiXor(masm, &exit, 0x10, 0, 0); |
1899 TestSmiXor(masm, &exit, 0x20, 0, 1); | 1883 TestSmiXor(masm, &exit, 0x20, 0, 1); |
1900 TestSmiXor(masm, &exit, 0x30, 1, 0); | 1884 TestSmiXor(masm, &exit, 0x30, 1, 0); |
1901 TestSmiXor(masm, &exit, 0x40, 0, -1); | 1885 TestSmiXor(masm, &exit, 0x40, 0, -1); |
1902 TestSmiXor(masm, &exit, 0x50, -1, 0); | 1886 TestSmiXor(masm, &exit, 0x50, -1, 0); |
1903 TestSmiXor(masm, &exit, 0x60, -1, -1); | 1887 TestSmiXor(masm, &exit, 0x60, -1, -1); |
1904 TestSmiXor(masm, &exit, 0x70, 1, 1); | 1888 TestSmiXor(masm, &exit, 0x70, 1, 1); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1952 byte* buffer = | 1936 byte* buffer = |
1953 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 1937 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
1954 &actual_size, | 1938 &actual_size, |
1955 true)); | 1939 true)); |
1956 CHECK(buffer); | 1940 CHECK(buffer); |
1957 Isolate* isolate = CcTest::i_isolate(); | 1941 Isolate* isolate = CcTest::i_isolate(); |
1958 HandleScope handles(isolate); | 1942 HandleScope handles(isolate); |
1959 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1943 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
1960 | 1944 |
1961 MacroAssembler* masm = &assembler; | 1945 MacroAssembler* masm = &assembler; |
1962 masm->set_allow_stub_calls(false); | |
1963 EntryCode(masm); | 1946 EntryCode(masm); |
1964 Label exit; | 1947 Label exit; |
1965 | 1948 |
1966 TestSmiNot(masm, &exit, 0x10, 0); | 1949 TestSmiNot(masm, &exit, 0x10, 0); |
1967 TestSmiNot(masm, &exit, 0x20, 1); | 1950 TestSmiNot(masm, &exit, 0x20, 1); |
1968 TestSmiNot(masm, &exit, 0x30, -1); | 1951 TestSmiNot(masm, &exit, 0x30, -1); |
1969 TestSmiNot(masm, &exit, 0x40, 127); | 1952 TestSmiNot(masm, &exit, 0x40, 127); |
1970 TestSmiNot(masm, &exit, 0x50, 65535); | 1953 TestSmiNot(masm, &exit, 0x50, 65535); |
1971 TestSmiNot(masm, &exit, 0x60, Smi::kMinValue); | 1954 TestSmiNot(masm, &exit, 0x60, Smi::kMinValue); |
1972 TestSmiNot(masm, &exit, 0x70, Smi::kMaxValue); | 1955 TestSmiNot(masm, &exit, 0x70, Smi::kMaxValue); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2040 __ incq(rax); | 2023 __ incq(rax); |
2041 } | 2024 } |
2042 } | 2025 } |
2043 | 2026 |
2044 | 2027 |
2045 TEST(SmiShiftLeft) { | 2028 TEST(SmiShiftLeft) { |
2046 i::V8::Initialize(NULL); | 2029 i::V8::Initialize(NULL); |
2047 // Allocate an executable page of memory. | 2030 // Allocate an executable page of memory. |
2048 size_t actual_size; | 2031 size_t actual_size; |
2049 byte* buffer = | 2032 byte* buffer = |
2050 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 4, | 2033 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 7, |
2051 &actual_size, | 2034 &actual_size, |
2052 true)); | 2035 true)); |
2053 CHECK(buffer); | 2036 CHECK(buffer); |
2054 Isolate* isolate = CcTest::i_isolate(); | 2037 Isolate* isolate = CcTest::i_isolate(); |
2055 HandleScope handles(isolate); | 2038 HandleScope handles(isolate); |
2056 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 2039 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
2057 | 2040 |
2058 MacroAssembler* masm = &assembler; | 2041 MacroAssembler* masm = &assembler; |
2059 masm->set_allow_stub_calls(false); | |
2060 EntryCode(masm); | 2042 EntryCode(masm); |
2061 Label exit; | 2043 Label exit; |
2062 | 2044 |
2063 TestSmiShiftLeft(masm, &exit, 0x10, 0); | 2045 TestSmiShiftLeft(masm, &exit, 0x10, 0); |
2064 TestSmiShiftLeft(masm, &exit, 0x50, 1); | 2046 TestSmiShiftLeft(masm, &exit, 0x50, 1); |
2065 TestSmiShiftLeft(masm, &exit, 0x90, 127); | 2047 TestSmiShiftLeft(masm, &exit, 0x90, 127); |
2066 TestSmiShiftLeft(masm, &exit, 0xD0, 65535); | 2048 TestSmiShiftLeft(masm, &exit, 0xD0, 65535); |
2067 TestSmiShiftLeft(masm, &exit, 0x110, Smi::kMaxValue); | 2049 TestSmiShiftLeft(masm, &exit, 0x110, Smi::kMaxValue); |
2068 TestSmiShiftLeft(masm, &exit, 0x150, Smi::kMinValue); | 2050 TestSmiShiftLeft(masm, &exit, 0x150, Smi::kMinValue); |
2069 TestSmiShiftLeft(masm, &exit, 0x190, -1); | 2051 TestSmiShiftLeft(masm, &exit, 0x190, -1); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2147 } | 2129 } |
2148 } | 2130 } |
2149 } | 2131 } |
2150 | 2132 |
2151 | 2133 |
2152 TEST(SmiShiftLogicalRight) { | 2134 TEST(SmiShiftLogicalRight) { |
2153 i::V8::Initialize(NULL); | 2135 i::V8::Initialize(NULL); |
2154 // Allocate an executable page of memory. | 2136 // Allocate an executable page of memory. |
2155 size_t actual_size; | 2137 size_t actual_size; |
2156 byte* buffer = | 2138 byte* buffer = |
2157 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 3, | 2139 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 5, |
2158 &actual_size, | 2140 &actual_size, |
2159 true)); | 2141 true)); |
2160 CHECK(buffer); | 2142 CHECK(buffer); |
2161 Isolate* isolate = CcTest::i_isolate(); | 2143 Isolate* isolate = CcTest::i_isolate(); |
2162 HandleScope handles(isolate); | 2144 HandleScope handles(isolate); |
2163 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 2145 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
2164 | 2146 |
2165 MacroAssembler* masm = &assembler; | 2147 MacroAssembler* masm = &assembler; |
2166 masm->set_allow_stub_calls(false); | |
2167 EntryCode(masm); | 2148 EntryCode(masm); |
2168 Label exit; | 2149 Label exit; |
2169 | 2150 |
2170 TestSmiShiftLogicalRight(masm, &exit, 0x10, 0); | 2151 TestSmiShiftLogicalRight(masm, &exit, 0x10, 0); |
2171 TestSmiShiftLogicalRight(masm, &exit, 0x30, 1); | 2152 TestSmiShiftLogicalRight(masm, &exit, 0x30, 1); |
2172 TestSmiShiftLogicalRight(masm, &exit, 0x50, 127); | 2153 TestSmiShiftLogicalRight(masm, &exit, 0x50, 127); |
2173 TestSmiShiftLogicalRight(masm, &exit, 0x70, 65535); | 2154 TestSmiShiftLogicalRight(masm, &exit, 0x70, 65535); |
2174 TestSmiShiftLogicalRight(masm, &exit, 0x90, Smi::kMaxValue); | 2155 TestSmiShiftLogicalRight(masm, &exit, 0x90, Smi::kMaxValue); |
2175 TestSmiShiftLogicalRight(masm, &exit, 0xB0, Smi::kMinValue); | 2156 TestSmiShiftLogicalRight(masm, &exit, 0xB0, Smi::kMinValue); |
2176 TestSmiShiftLogicalRight(masm, &exit, 0xD0, -1); | 2157 TestSmiShiftLogicalRight(masm, &exit, 0xD0, -1); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2217 __ incq(rax); | 2198 __ incq(rax); |
2218 } | 2199 } |
2219 } | 2200 } |
2220 | 2201 |
2221 | 2202 |
2222 TEST(SmiShiftArithmeticRight) { | 2203 TEST(SmiShiftArithmeticRight) { |
2223 i::V8::Initialize(NULL); | 2204 i::V8::Initialize(NULL); |
2224 // Allocate an executable page of memory. | 2205 // Allocate an executable page of memory. |
2225 size_t actual_size; | 2206 size_t actual_size; |
2226 byte* buffer = | 2207 byte* buffer = |
2227 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 2208 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 3, |
2228 &actual_size, | 2209 &actual_size, |
2229 true)); | 2210 true)); |
2230 CHECK(buffer); | 2211 CHECK(buffer); |
2231 Isolate* isolate = CcTest::i_isolate(); | 2212 Isolate* isolate = CcTest::i_isolate(); |
2232 HandleScope handles(isolate); | 2213 HandleScope handles(isolate); |
2233 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 2214 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
2234 | 2215 |
2235 MacroAssembler* masm = &assembler; | 2216 MacroAssembler* masm = &assembler; |
2236 masm->set_allow_stub_calls(false); | |
2237 EntryCode(masm); | 2217 EntryCode(masm); |
2238 Label exit; | 2218 Label exit; |
2239 | 2219 |
2240 TestSmiShiftArithmeticRight(masm, &exit, 0x10, 0); | 2220 TestSmiShiftArithmeticRight(masm, &exit, 0x10, 0); |
2241 TestSmiShiftArithmeticRight(masm, &exit, 0x20, 1); | 2221 TestSmiShiftArithmeticRight(masm, &exit, 0x20, 1); |
2242 TestSmiShiftArithmeticRight(masm, &exit, 0x30, 127); | 2222 TestSmiShiftArithmeticRight(masm, &exit, 0x30, 127); |
2243 TestSmiShiftArithmeticRight(masm, &exit, 0x40, 65535); | 2223 TestSmiShiftArithmeticRight(masm, &exit, 0x40, 65535); |
2244 TestSmiShiftArithmeticRight(masm, &exit, 0x50, Smi::kMaxValue); | 2224 TestSmiShiftArithmeticRight(masm, &exit, 0x50, Smi::kMaxValue); |
2245 TestSmiShiftArithmeticRight(masm, &exit, 0x60, Smi::kMinValue); | 2225 TestSmiShiftArithmeticRight(masm, &exit, 0x60, Smi::kMinValue); |
2246 TestSmiShiftArithmeticRight(masm, &exit, 0x70, -1); | 2226 TestSmiShiftArithmeticRight(masm, &exit, 0x70, -1); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2291 byte* buffer = | 2271 byte* buffer = |
2292 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 4, | 2272 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 4, |
2293 &actual_size, | 2273 &actual_size, |
2294 true)); | 2274 true)); |
2295 CHECK(buffer); | 2275 CHECK(buffer); |
2296 Isolate* isolate = CcTest::i_isolate(); | 2276 Isolate* isolate = CcTest::i_isolate(); |
2297 HandleScope handles(isolate); | 2277 HandleScope handles(isolate); |
2298 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 2278 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
2299 | 2279 |
2300 MacroAssembler* masm = &assembler; | 2280 MacroAssembler* masm = &assembler; |
2301 masm->set_allow_stub_calls(false); | |
2302 EntryCode(masm); | 2281 EntryCode(masm); |
2303 Label exit; | 2282 Label exit; |
2304 | 2283 |
2305 TestPositiveSmiPowerUp(masm, &exit, 0x20, 0); | 2284 TestPositiveSmiPowerUp(masm, &exit, 0x20, 0); |
2306 TestPositiveSmiPowerUp(masm, &exit, 0x40, 1); | 2285 TestPositiveSmiPowerUp(masm, &exit, 0x40, 1); |
2307 TestPositiveSmiPowerUp(masm, &exit, 0x60, 127); | 2286 TestPositiveSmiPowerUp(masm, &exit, 0x60, 127); |
2308 TestPositiveSmiPowerUp(masm, &exit, 0x80, 128); | 2287 TestPositiveSmiPowerUp(masm, &exit, 0x80, 128); |
2309 TestPositiveSmiPowerUp(masm, &exit, 0xA0, 255); | 2288 TestPositiveSmiPowerUp(masm, &exit, 0xA0, 255); |
2310 TestPositiveSmiPowerUp(masm, &exit, 0xC0, 256); | 2289 TestPositiveSmiPowerUp(masm, &exit, 0xC0, 256); |
2311 TestPositiveSmiPowerUp(masm, &exit, 0x100, 65535); | 2290 TestPositiveSmiPowerUp(masm, &exit, 0x100, 65535); |
(...skipping 23 matching lines...) Expand all Loading... |
2335 byte* buffer = | 2314 byte* buffer = |
2336 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 2315 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, |
2337 &actual_size, | 2316 &actual_size, |
2338 true)); | 2317 true)); |
2339 CHECK(buffer); | 2318 CHECK(buffer); |
2340 Isolate* isolate = CcTest::i_isolate(); | 2319 Isolate* isolate = CcTest::i_isolate(); |
2341 HandleScope handles(isolate); | 2320 HandleScope handles(isolate); |
2342 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 2321 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
2343 | 2322 |
2344 MacroAssembler* masm = &assembler; | 2323 MacroAssembler* masm = &assembler; |
2345 masm->set_allow_stub_calls(false); | |
2346 Label exit; | 2324 Label exit; |
2347 | 2325 |
2348 EntryCode(masm); | 2326 EntryCode(masm); |
2349 __ push(r13); | 2327 __ push(r13); |
2350 __ push(r14); | 2328 __ push(r14); |
2351 __ push(rbx); | 2329 __ push(rbx); |
2352 __ push(rbp); | 2330 __ push(rbp); |
2353 __ push(Immediate(0x100)); // <-- rbp | 2331 __ push(Immediate(0x100)); // <-- rbp |
2354 __ movq(rbp, rsp); | 2332 __ movq(rbp, rsp); |
2355 __ push(Immediate(0x101)); | 2333 __ push(Immediate(0x101)); |
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2688 // Allocate an executable page of memory. | 2666 // Allocate an executable page of memory. |
2689 size_t actual_size; | 2667 size_t actual_size; |
2690 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 2668 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
2691 &actual_size, | 2669 &actual_size, |
2692 true)); | 2670 true)); |
2693 CHECK(buffer); | 2671 CHECK(buffer); |
2694 Isolate* isolate = CcTest::i_isolate(); | 2672 Isolate* isolate = CcTest::i_isolate(); |
2695 HandleScope handles(isolate); | 2673 HandleScope handles(isolate); |
2696 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 2674 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
2697 MacroAssembler* masm = &assembler; // Create a pointer for the __ macro. | 2675 MacroAssembler* masm = &assembler; // Create a pointer for the __ macro. |
2698 masm->set_allow_stub_calls(false); | |
2699 EntryCode(masm); | 2676 EntryCode(masm); |
2700 __ subq(rsp, Immediate(1 * kPointerSize)); | 2677 __ subq(rsp, Immediate(1 * kPointerSize)); |
2701 Label exit; | 2678 Label exit; |
2702 | 2679 |
2703 // Test 1. | 2680 // Test 1. |
2704 __ movq(rax, Immediate(1)); // Test number. | 2681 __ movq(rax, Immediate(1)); // Test number. |
2705 __ movq(Operand(rsp, 0 * kPointerSize), Immediate(0)); | 2682 __ movq(Operand(rsp, 0 * kPointerSize), Immediate(0)); |
2706 __ movq(rcx, Immediate(-1)); | 2683 __ movq(rcx, Immediate(-1)); |
2707 __ Store(Operand(rsp, 0 * kPointerSize), rcx, Representation::UInteger8()); | 2684 __ Store(Operand(rsp, 0 * kPointerSize), rcx, Representation::UInteger8()); |
2708 __ movq(rcx, Operand(rsp, 0 * kPointerSize)); | 2685 __ movq(rcx, Operand(rsp, 0 * kPointerSize)); |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2827 | 2804 |
2828 CodeDesc desc; | 2805 CodeDesc desc; |
2829 masm->GetCode(&desc); | 2806 masm->GetCode(&desc); |
2830 // Call the function from C++. | 2807 // Call the function from C++. |
2831 int result = FUNCTION_CAST<F0>(buffer)(); | 2808 int result = FUNCTION_CAST<F0>(buffer)(); |
2832 CHECK_EQ(0, result); | 2809 CHECK_EQ(0, result); |
2833 } | 2810 } |
2834 | 2811 |
2835 | 2812 |
2836 #undef __ | 2813 #undef __ |
OLD | NEW |