| 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 17 matching lines...) Expand all Loading... |
| 28 #include <stdlib.h> | 28 #include <stdlib.h> |
| 29 | 29 |
| 30 #include "v8.h" | 30 #include "v8.h" |
| 31 | 31 |
| 32 #include "macro-assembler.h" | 32 #include "macro-assembler.h" |
| 33 #include "factory.h" | 33 #include "factory.h" |
| 34 #include "platform.h" | 34 #include "platform.h" |
| 35 #include "serialize.h" | 35 #include "serialize.h" |
| 36 #include "cctest.h" | 36 #include "cctest.h" |
| 37 | 37 |
| 38 using v8::internal::Assembler; | 38 using namespace v8::internal; |
| 39 using v8::internal::CodeDesc; | |
| 40 using v8::internal::Condition; | |
| 41 using v8::internal::FUNCTION_CAST; | |
| 42 using v8::internal::HandleScope; | |
| 43 using v8::internal::Immediate; | |
| 44 using v8::internal::Isolate; | |
| 45 using v8::internal::Label; | |
| 46 using v8::internal::MacroAssembler; | |
| 47 using v8::internal::OS; | |
| 48 using v8::internal::Operand; | |
| 49 using v8::internal::RelocInfo; | |
| 50 using v8::internal::Smi; | |
| 51 using v8::internal::SmiIndex; | |
| 52 using v8::internal::byte; | |
| 53 using v8::internal::carry; | |
| 54 using v8::internal::greater; | |
| 55 using v8::internal::greater_equal; | |
| 56 using v8::internal::kIntSize; | |
| 57 using v8::internal::kPointerSize; | |
| 58 using v8::internal::kSmiTagMask; | |
| 59 using v8::internal::kSmiValueSize; | |
| 60 using v8::internal::less_equal; | |
| 61 using v8::internal::negative; | |
| 62 using v8::internal::not_carry; | |
| 63 using v8::internal::not_equal; | |
| 64 using v8::internal::not_zero; | |
| 65 using v8::internal::positive; | |
| 66 using v8::internal::r11; | |
| 67 using v8::internal::r13; | |
| 68 using v8::internal::r14; | |
| 69 using v8::internal::r15; | |
| 70 using v8::internal::r8; | |
| 71 using v8::internal::r9; | |
| 72 using v8::internal::rax; | |
| 73 using v8::internal::rbp; | |
| 74 using v8::internal::rbx; | |
| 75 using v8::internal::rcx; | |
| 76 using v8::internal::rdi; | |
| 77 using v8::internal::rdx; | |
| 78 using v8::internal::rsi; | |
| 79 using v8::internal::rsp; | |
| 80 using v8::internal::times_pointer_size; | |
| 81 | 39 |
| 82 // Test the x64 assembler by compiling some simple functions into | 40 // Test the x64 assembler by compiling some simple functions into |
| 83 // a buffer and executing them. These tests do not initialize the | 41 // a buffer and executing them. These tests do not initialize the |
| 84 // V8 library, create a context, or use any V8 objects. | 42 // V8 library, create a context, or use any V8 objects. |
| 85 // The AMD64 calling convention is used, with the first five arguments | 43 // The AMD64 calling convention is used, with the first five arguments |
| 86 // in RSI, RDI, RDX, RCX, R8, and R9, and floating point arguments in | 44 // in RSI, RDI, RDX, RCX, R8, and R9, and floating point arguments in |
| 87 // the XMM registers. The return value is in RAX. | 45 // the XMM registers. The return value is in RAX. |
| 88 // This calling convention is used on Linux, with GCC, and on Mac OS, | 46 // This calling convention is used on Linux, with GCC, and on Mac OS, |
| 89 // with GCC. A different convention is used on 64-bit windows. | 47 // with GCC. A different convention is used on 64-bit windows. |
| 90 | 48 |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 __ cmpq(rcx, rdx); | 104 __ cmpq(rcx, rdx); |
| 147 __ j(not_equal, exit); | 105 __ j(not_equal, exit); |
| 148 } | 106 } |
| 149 | 107 |
| 150 | 108 |
| 151 // Test that we can move a Smi value literally into a register. | 109 // Test that we can move a Smi value literally into a register. |
| 152 TEST(SmiMove) { | 110 TEST(SmiMove) { |
| 153 v8::internal::V8::Initialize(NULL); | 111 v8::internal::V8::Initialize(NULL); |
| 154 // Allocate an executable page of memory. | 112 // Allocate an executable page of memory. |
| 155 size_t actual_size; | 113 size_t actual_size; |
| 156 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 114 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 157 &actual_size, | 115 Assembler::kMinimalBufferSize, |
| 158 true)); | 116 &actual_size, |
| 117 VirtualMemory::EXECUTABLE)); |
| 159 CHECK(buffer); | 118 CHECK(buffer); |
| 160 Isolate* isolate = Isolate::Current(); | 119 Isolate* isolate = Isolate::Current(); |
| 161 HandleScope handles(isolate); | 120 HandleScope handles(isolate); |
| 162 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 121 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 163 MacroAssembler* masm = &assembler; // Create a pointer for the __ macro. | 122 MacroAssembler* masm = &assembler; // Create a pointer for the __ macro. |
| 164 masm->set_allow_stub_calls(false); | 123 masm->set_allow_stub_calls(false); |
| 165 EntryCode(masm); | 124 EntryCode(masm); |
| 166 Label exit; | 125 Label exit; |
| 167 | 126 |
| 168 TestMoveSmi(masm, &exit, 1, Smi::FromInt(0)); | 127 TestMoveSmi(masm, &exit, 1, Smi::FromInt(0)); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 __ j(not_equal, exit); | 193 __ j(not_equal, exit); |
| 235 } | 194 } |
| 236 } | 195 } |
| 237 | 196 |
| 238 | 197 |
| 239 // Test that we can compare smis for equality (and more). | 198 // Test that we can compare smis for equality (and more). |
| 240 TEST(SmiCompare) { | 199 TEST(SmiCompare) { |
| 241 v8::internal::V8::Initialize(NULL); | 200 v8::internal::V8::Initialize(NULL); |
| 242 // Allocate an executable page of memory. | 201 // Allocate an executable page of memory. |
| 243 size_t actual_size; | 202 size_t actual_size; |
| 244 byte* buffer = | 203 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 245 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 204 Assembler::kMinimalBufferSize * 2, |
| 246 &actual_size, | 205 &actual_size, |
| 247 true)); | 206 VirtualMemory::EXECUTABLE)); |
| 248 CHECK(buffer); | 207 CHECK(buffer); |
| 249 Isolate* isolate = Isolate::Current(); | 208 Isolate* isolate = Isolate::Current(); |
| 250 HandleScope handles(isolate); | 209 HandleScope handles(isolate); |
| 251 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 210 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 252 | 211 |
| 253 MacroAssembler* masm = &assembler; | 212 MacroAssembler* masm = &assembler; |
| 254 masm->set_allow_stub_calls(false); | 213 masm->set_allow_stub_calls(false); |
| 255 EntryCode(masm); | 214 EntryCode(masm); |
| 256 Label exit; | 215 Label exit; |
| 257 | 216 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 286 int result = FUNCTION_CAST<F0>(buffer)(); | 245 int result = FUNCTION_CAST<F0>(buffer)(); |
| 287 CHECK_EQ(0, result); | 246 CHECK_EQ(0, result); |
| 288 } | 247 } |
| 289 | 248 |
| 290 | 249 |
| 291 | 250 |
| 292 TEST(Integer32ToSmi) { | 251 TEST(Integer32ToSmi) { |
| 293 v8::internal::V8::Initialize(NULL); | 252 v8::internal::V8::Initialize(NULL); |
| 294 // Allocate an executable page of memory. | 253 // Allocate an executable page of memory. |
| 295 size_t actual_size; | 254 size_t actual_size; |
| 296 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 255 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 297 &actual_size, | 256 Assembler::kMinimalBufferSize, |
| 298 true)); | 257 &actual_size, |
| 258 VirtualMemory::EXECUTABLE)); |
| 299 CHECK(buffer); | 259 CHECK(buffer); |
| 300 Isolate* isolate = Isolate::Current(); | 260 Isolate* isolate = Isolate::Current(); |
| 301 HandleScope handles(isolate); | 261 HandleScope handles(isolate); |
| 302 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 262 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 303 | 263 |
| 304 MacroAssembler* masm = &assembler; | 264 MacroAssembler* masm = &assembler; |
| 305 masm->set_allow_stub_calls(false); | 265 masm->set_allow_stub_calls(false); |
| 306 EntryCode(masm); | 266 EntryCode(masm); |
| 307 Label exit; | 267 Label exit; |
| 308 | 268 |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 415 __ Integer64PlusConstantToSmi(rcx, rcx, y); | 375 __ Integer64PlusConstantToSmi(rcx, rcx, y); |
| 416 __ cmpq(rcx, r8); | 376 __ cmpq(rcx, r8); |
| 417 __ j(not_equal, exit); | 377 __ j(not_equal, exit); |
| 418 } | 378 } |
| 419 | 379 |
| 420 | 380 |
| 421 TEST(Integer64PlusConstantToSmi) { | 381 TEST(Integer64PlusConstantToSmi) { |
| 422 v8::internal::V8::Initialize(NULL); | 382 v8::internal::V8::Initialize(NULL); |
| 423 // Allocate an executable page of memory. | 383 // Allocate an executable page of memory. |
| 424 size_t actual_size; | 384 size_t actual_size; |
| 425 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 385 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 426 &actual_size, | 386 Assembler::kMinimalBufferSize, |
| 427 true)); | 387 &actual_size, |
| 388 VirtualMemory::EXECUTABLE)); |
| 428 CHECK(buffer); | 389 CHECK(buffer); |
| 429 Isolate* isolate = Isolate::Current(); | 390 Isolate* isolate = Isolate::Current(); |
| 430 HandleScope handles(isolate); | 391 HandleScope handles(isolate); |
| 431 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 392 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 432 | 393 |
| 433 MacroAssembler* masm = &assembler; | 394 MacroAssembler* masm = &assembler; |
| 434 masm->set_allow_stub_calls(false); | 395 masm->set_allow_stub_calls(false); |
| 435 EntryCode(masm); | 396 EntryCode(masm); |
| 436 Label exit; | 397 Label exit; |
| 437 | 398 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 460 // Call the function from C++. | 421 // Call the function from C++. |
| 461 int result = FUNCTION_CAST<F0>(buffer)(); | 422 int result = FUNCTION_CAST<F0>(buffer)(); |
| 462 CHECK_EQ(0, result); | 423 CHECK_EQ(0, result); |
| 463 } | 424 } |
| 464 | 425 |
| 465 | 426 |
| 466 TEST(SmiCheck) { | 427 TEST(SmiCheck) { |
| 467 v8::internal::V8::Initialize(NULL); | 428 v8::internal::V8::Initialize(NULL); |
| 468 // Allocate an executable page of memory. | 429 // Allocate an executable page of memory. |
| 469 size_t actual_size; | 430 size_t actual_size; |
| 470 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 431 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 471 &actual_size, | 432 Assembler::kMinimalBufferSize, |
| 472 true)); | 433 &actual_size, |
| 434 VirtualMemory::EXECUTABLE)); |
| 473 CHECK(buffer); | 435 CHECK(buffer); |
| 474 Isolate* isolate = Isolate::Current(); | 436 Isolate* isolate = Isolate::Current(); |
| 475 HandleScope handles(isolate); | 437 HandleScope handles(isolate); |
| 476 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 438 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 477 | 439 |
| 478 MacroAssembler* masm = &assembler; | 440 MacroAssembler* masm = &assembler; |
| 479 masm->set_allow_stub_calls(false); | 441 masm->set_allow_stub_calls(false); |
| 480 EntryCode(masm); | 442 EntryCode(masm); |
| 481 Label exit; | 443 Label exit; |
| 482 Condition cond; | 444 Condition cond; |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 708 __ cmpq(rcx, r8); | 670 __ cmpq(rcx, r8); |
| 709 __ j(not_equal, exit); | 671 __ j(not_equal, exit); |
| 710 } | 672 } |
| 711 } | 673 } |
| 712 | 674 |
| 713 | 675 |
| 714 TEST(SmiNeg) { | 676 TEST(SmiNeg) { |
| 715 v8::internal::V8::Initialize(NULL); | 677 v8::internal::V8::Initialize(NULL); |
| 716 // Allocate an executable page of memory. | 678 // Allocate an executable page of memory. |
| 717 size_t actual_size; | 679 size_t actual_size; |
| 718 byte* buffer = | 680 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 719 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 681 Assembler::kMinimalBufferSize, |
| 720 &actual_size, | 682 &actual_size, |
| 721 true)); | 683 VirtualMemory::EXECUTABLE)); |
| 722 CHECK(buffer); | 684 CHECK(buffer); |
| 723 Isolate* isolate = Isolate::Current(); | 685 Isolate* isolate = Isolate::Current(); |
| 724 HandleScope handles(isolate); | 686 HandleScope handles(isolate); |
| 725 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 687 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 726 | 688 |
| 727 MacroAssembler* masm = &assembler; | 689 MacroAssembler* masm = &assembler; |
| 728 masm->set_allow_stub_calls(false); | 690 masm->set_allow_stub_calls(false); |
| 729 EntryCode(masm); | 691 EntryCode(masm); |
| 730 Label exit; | 692 Label exit; |
| 731 | 693 |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 799 __ SmiAddConstant(rcx, rcx, Smi::FromInt(second), exit); | 761 __ SmiAddConstant(rcx, rcx, Smi::FromInt(second), exit); |
| 800 __ cmpq(rcx, r8); | 762 __ cmpq(rcx, r8); |
| 801 __ j(not_equal, exit); | 763 __ j(not_equal, exit); |
| 802 } | 764 } |
| 803 | 765 |
| 804 | 766 |
| 805 TEST(SmiAdd) { | 767 TEST(SmiAdd) { |
| 806 v8::internal::V8::Initialize(NULL); | 768 v8::internal::V8::Initialize(NULL); |
| 807 // Allocate an executable page of memory. | 769 // Allocate an executable page of memory. |
| 808 size_t actual_size; | 770 size_t actual_size; |
| 809 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 771 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 810 &actual_size, | 772 Assembler::kMinimalBufferSize, |
| 811 true)); | 773 &actual_size, |
| 774 VirtualMemory::EXECUTABLE)); |
| 812 CHECK(buffer); | 775 CHECK(buffer); |
| 813 Isolate* isolate = Isolate::Current(); | 776 Isolate* isolate = Isolate::Current(); |
| 814 HandleScope handles(isolate); | 777 HandleScope handles(isolate); |
| 815 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 778 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 816 | 779 |
| 817 MacroAssembler* masm = &assembler; | 780 MacroAssembler* masm = &assembler; |
| 818 masm->set_allow_stub_calls(false); | 781 masm->set_allow_stub_calls(false); |
| 819 EntryCode(masm); | 782 EntryCode(masm); |
| 820 Label exit; | 783 Label exit; |
| 821 | 784 |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 989 __ cmpq(rcx, r11); | 952 __ cmpq(rcx, r11); |
| 990 __ j(not_equal, exit); | 953 __ j(not_equal, exit); |
| 991 } | 954 } |
| 992 } | 955 } |
| 993 | 956 |
| 994 | 957 |
| 995 TEST(SmiSub) { | 958 TEST(SmiSub) { |
| 996 v8::internal::V8::Initialize(NULL); | 959 v8::internal::V8::Initialize(NULL); |
| 997 // Allocate an executable page of memory. | 960 // Allocate an executable page of memory. |
| 998 size_t actual_size; | 961 size_t actual_size; |
| 999 byte* buffer = | 962 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 1000 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 963 Assembler::kMinimalBufferSize * 2, |
| 1001 &actual_size, | 964 &actual_size, |
| 1002 true)); | 965 VirtualMemory::EXECUTABLE)); |
| 1003 CHECK(buffer); | 966 CHECK(buffer); |
| 1004 Isolate* isolate = Isolate::Current(); | 967 Isolate* isolate = Isolate::Current(); |
| 1005 HandleScope handles(isolate); | 968 HandleScope handles(isolate); |
| 1006 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 969 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 1007 | 970 |
| 1008 MacroAssembler* masm = &assembler; | 971 MacroAssembler* masm = &assembler; |
| 1009 masm->set_allow_stub_calls(false); | 972 masm->set_allow_stub_calls(false); |
| 1010 EntryCode(masm); | 973 EntryCode(masm); |
| 1011 Label exit; | 974 Label exit; |
| 1012 | 975 |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1081 // __ cmpq(r11, rcx); | 1044 // __ cmpq(r11, rcx); |
| 1082 // __ j(not_equal, exit); | 1045 // __ j(not_equal, exit); |
| 1083 } | 1046 } |
| 1084 } | 1047 } |
| 1085 | 1048 |
| 1086 | 1049 |
| 1087 TEST(SmiMul) { | 1050 TEST(SmiMul) { |
| 1088 v8::internal::V8::Initialize(NULL); | 1051 v8::internal::V8::Initialize(NULL); |
| 1089 // Allocate an executable page of memory. | 1052 // Allocate an executable page of memory. |
| 1090 size_t actual_size; | 1053 size_t actual_size; |
| 1091 byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 1054 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 1092 &actual_size, | 1055 Assembler::kMinimalBufferSize, |
| 1093 true)); | 1056 &actual_size, |
| 1057 VirtualMemory::EXECUTABLE)); |
| 1094 CHECK(buffer); | 1058 CHECK(buffer); |
| 1095 Isolate* isolate = Isolate::Current(); | 1059 Isolate* isolate = Isolate::Current(); |
| 1096 HandleScope handles(isolate); | 1060 HandleScope handles(isolate); |
| 1097 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1061 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 1098 | 1062 |
| 1099 MacroAssembler* masm = &assembler; | 1063 MacroAssembler* masm = &assembler; |
| 1100 masm->set_allow_stub_calls(false); | 1064 masm->set_allow_stub_calls(false); |
| 1101 EntryCode(masm); | 1065 EntryCode(masm); |
| 1102 Label exit; | 1066 Label exit; |
| 1103 | 1067 |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1187 __ cmpq(rcx, r11); | 1151 __ cmpq(rcx, r11); |
| 1188 __ j(not_equal, exit); | 1152 __ j(not_equal, exit); |
| 1189 } | 1153 } |
| 1190 } | 1154 } |
| 1191 | 1155 |
| 1192 | 1156 |
| 1193 TEST(SmiDiv) { | 1157 TEST(SmiDiv) { |
| 1194 v8::internal::V8::Initialize(NULL); | 1158 v8::internal::V8::Initialize(NULL); |
| 1195 // Allocate an executable page of memory. | 1159 // Allocate an executable page of memory. |
| 1196 size_t actual_size; | 1160 size_t actual_size; |
| 1197 byte* buffer = | 1161 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 1198 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 1162 Assembler::kMinimalBufferSize * 2, |
| 1199 &actual_size, | 1163 &actual_size, |
| 1200 true)); | 1164 VirtualMemory::EXECUTABLE)); |
| 1201 CHECK(buffer); | 1165 CHECK(buffer); |
| 1202 Isolate* isolate = Isolate::Current(); | 1166 Isolate* isolate = Isolate::Current(); |
| 1203 HandleScope handles(isolate); | 1167 HandleScope handles(isolate); |
| 1204 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1168 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 1205 | 1169 |
| 1206 MacroAssembler* masm = &assembler; | 1170 MacroAssembler* masm = &assembler; |
| 1207 masm->set_allow_stub_calls(false); | 1171 masm->set_allow_stub_calls(false); |
| 1208 EntryCode(masm); | 1172 EntryCode(masm); |
| 1209 Label exit; | 1173 Label exit; |
| 1210 | 1174 |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1298 __ cmpq(rcx, r11); | 1262 __ cmpq(rcx, r11); |
| 1299 __ j(not_equal, exit); | 1263 __ j(not_equal, exit); |
| 1300 } | 1264 } |
| 1301 } | 1265 } |
| 1302 | 1266 |
| 1303 | 1267 |
| 1304 TEST(SmiMod) { | 1268 TEST(SmiMod) { |
| 1305 v8::internal::V8::Initialize(NULL); | 1269 v8::internal::V8::Initialize(NULL); |
| 1306 // Allocate an executable page of memory. | 1270 // Allocate an executable page of memory. |
| 1307 size_t actual_size; | 1271 size_t actual_size; |
| 1308 byte* buffer = | 1272 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 1309 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 1273 Assembler::kMinimalBufferSize * 2, |
| 1310 &actual_size, | 1274 &actual_size, |
| 1311 true)); | 1275 VirtualMemory::EXECUTABLE)); |
| 1312 CHECK(buffer); | 1276 CHECK(buffer); |
| 1313 Isolate* isolate = Isolate::Current(); | 1277 Isolate* isolate = Isolate::Current(); |
| 1314 HandleScope handles(isolate); | 1278 HandleScope handles(isolate); |
| 1315 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1279 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 1316 | 1280 |
| 1317 MacroAssembler* masm = &assembler; | 1281 MacroAssembler* masm = &assembler; |
| 1318 masm->set_allow_stub_calls(false); | 1282 masm->set_allow_stub_calls(false); |
| 1319 EntryCode(masm); | 1283 EntryCode(masm); |
| 1320 Label exit; | 1284 Label exit; |
| 1321 | 1285 |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1396 __ j(not_equal, exit); | 1360 __ j(not_equal, exit); |
| 1397 __ incq(rax); | 1361 __ incq(rax); |
| 1398 } | 1362 } |
| 1399 } | 1363 } |
| 1400 | 1364 |
| 1401 | 1365 |
| 1402 TEST(SmiIndex) { | 1366 TEST(SmiIndex) { |
| 1403 v8::internal::V8::Initialize(NULL); | 1367 v8::internal::V8::Initialize(NULL); |
| 1404 // Allocate an executable page of memory. | 1368 // Allocate an executable page of memory. |
| 1405 size_t actual_size; | 1369 size_t actual_size; |
| 1406 byte* buffer = | 1370 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 1407 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 3, | 1371 Assembler::kMinimalBufferSize * 3, |
| 1408 &actual_size, | 1372 &actual_size, |
| 1409 true)); | 1373 VirtualMemory::EXECUTABLE)); |
| 1410 CHECK(buffer); | 1374 CHECK(buffer); |
| 1411 Isolate* isolate = Isolate::Current(); | 1375 Isolate* isolate = Isolate::Current(); |
| 1412 HandleScope handles(isolate); | 1376 HandleScope handles(isolate); |
| 1413 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1377 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 1414 | 1378 |
| 1415 MacroAssembler* masm = &assembler; | 1379 MacroAssembler* masm = &assembler; |
| 1416 masm->set_allow_stub_calls(false); | 1380 masm->set_allow_stub_calls(false); |
| 1417 EntryCode(masm); | 1381 EntryCode(masm); |
| 1418 Label exit; | 1382 Label exit; |
| 1419 | 1383 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1466 __ SelectNonSmi(r9, rcx, rdx, &fail_ok); | 1430 __ SelectNonSmi(r9, rcx, rdx, &fail_ok); |
| 1467 __ jmp(exit); | 1431 __ jmp(exit); |
| 1468 __ bind(&fail_ok); | 1432 __ bind(&fail_ok); |
| 1469 } | 1433 } |
| 1470 | 1434 |
| 1471 | 1435 |
| 1472 TEST(SmiSelectNonSmi) { | 1436 TEST(SmiSelectNonSmi) { |
| 1473 v8::internal::V8::Initialize(NULL); | 1437 v8::internal::V8::Initialize(NULL); |
| 1474 // Allocate an executable page of memory. | 1438 // Allocate an executable page of memory. |
| 1475 size_t actual_size; | 1439 size_t actual_size; |
| 1476 byte* buffer = | 1440 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 1477 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 1441 Assembler::kMinimalBufferSize, |
| 1478 &actual_size, | 1442 &actual_size, |
| 1479 true)); | 1443 VirtualMemory::EXECUTABLE)); |
| 1480 CHECK(buffer); | 1444 CHECK(buffer); |
| 1481 Isolate* isolate = Isolate::Current(); | 1445 Isolate* isolate = Isolate::Current(); |
| 1482 HandleScope handles(isolate); | 1446 HandleScope handles(isolate); |
| 1483 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1447 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 1484 | 1448 |
| 1485 MacroAssembler* masm = &assembler; | 1449 MacroAssembler* masm = &assembler; |
| 1486 masm->set_allow_stub_calls(false); // Avoid inline checks. | 1450 masm->set_allow_stub_calls(false); // Avoid inline checks. |
| 1487 EntryCode(masm); | 1451 EntryCode(masm); |
| 1488 Label exit; | 1452 Label exit; |
| 1489 | 1453 |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1546 __ SmiAndConstant(rcx, rcx, Smi::FromInt(y)); | 1510 __ SmiAndConstant(rcx, rcx, Smi::FromInt(y)); |
| 1547 __ cmpq(r8, rcx); | 1511 __ cmpq(r8, rcx); |
| 1548 __ j(not_equal, exit); | 1512 __ j(not_equal, exit); |
| 1549 } | 1513 } |
| 1550 | 1514 |
| 1551 | 1515 |
| 1552 TEST(SmiAnd) { | 1516 TEST(SmiAnd) { |
| 1553 v8::internal::V8::Initialize(NULL); | 1517 v8::internal::V8::Initialize(NULL); |
| 1554 // Allocate an executable page of memory. | 1518 // Allocate an executable page of memory. |
| 1555 size_t actual_size; | 1519 size_t actual_size; |
| 1556 byte* buffer = | 1520 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 1557 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 1521 Assembler::kMinimalBufferSize, |
| 1558 &actual_size, | 1522 &actual_size, |
| 1559 true)); | 1523 VirtualMemory::EXECUTABLE)); |
| 1560 CHECK(buffer); | 1524 CHECK(buffer); |
| 1561 Isolate* isolate = Isolate::Current(); | 1525 Isolate* isolate = Isolate::Current(); |
| 1562 HandleScope handles(isolate); | 1526 HandleScope handles(isolate); |
| 1563 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1527 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 1564 | 1528 |
| 1565 MacroAssembler* masm = &assembler; | 1529 MacroAssembler* masm = &assembler; |
| 1566 masm->set_allow_stub_calls(false); | 1530 masm->set_allow_stub_calls(false); |
| 1567 EntryCode(masm); | 1531 EntryCode(masm); |
| 1568 Label exit; | 1532 Label exit; |
| 1569 | 1533 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1628 __ SmiOrConstant(rcx, rcx, Smi::FromInt(y)); | 1592 __ SmiOrConstant(rcx, rcx, Smi::FromInt(y)); |
| 1629 __ cmpq(r8, rcx); | 1593 __ cmpq(r8, rcx); |
| 1630 __ j(not_equal, exit); | 1594 __ j(not_equal, exit); |
| 1631 } | 1595 } |
| 1632 | 1596 |
| 1633 | 1597 |
| 1634 TEST(SmiOr) { | 1598 TEST(SmiOr) { |
| 1635 v8::internal::V8::Initialize(NULL); | 1599 v8::internal::V8::Initialize(NULL); |
| 1636 // Allocate an executable page of memory. | 1600 // Allocate an executable page of memory. |
| 1637 size_t actual_size; | 1601 size_t actual_size; |
| 1638 byte* buffer = | 1602 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 1639 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 1603 Assembler::kMinimalBufferSize, |
| 1640 &actual_size, | 1604 &actual_size, |
| 1641 true)); | 1605 VirtualMemory::EXECUTABLE)); |
| 1642 CHECK(buffer); | 1606 CHECK(buffer); |
| 1643 Isolate* isolate = Isolate::Current(); | 1607 Isolate* isolate = Isolate::Current(); |
| 1644 HandleScope handles(isolate); | 1608 HandleScope handles(isolate); |
| 1645 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1609 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 1646 | 1610 |
| 1647 MacroAssembler* masm = &assembler; | 1611 MacroAssembler* masm = &assembler; |
| 1648 masm->set_allow_stub_calls(false); | 1612 masm->set_allow_stub_calls(false); |
| 1649 EntryCode(masm); | 1613 EntryCode(masm); |
| 1650 Label exit; | 1614 Label exit; |
| 1651 | 1615 |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1712 __ SmiXorConstant(rcx, rcx, Smi::FromInt(y)); | 1676 __ SmiXorConstant(rcx, rcx, Smi::FromInt(y)); |
| 1713 __ cmpq(r8, rcx); | 1677 __ cmpq(r8, rcx); |
| 1714 __ j(not_equal, exit); | 1678 __ j(not_equal, exit); |
| 1715 } | 1679 } |
| 1716 | 1680 |
| 1717 | 1681 |
| 1718 TEST(SmiXor) { | 1682 TEST(SmiXor) { |
| 1719 v8::internal::V8::Initialize(NULL); | 1683 v8::internal::V8::Initialize(NULL); |
| 1720 // Allocate an executable page of memory. | 1684 // Allocate an executable page of memory. |
| 1721 size_t actual_size; | 1685 size_t actual_size; |
| 1722 byte* buffer = | 1686 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 1723 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 1687 Assembler::kMinimalBufferSize, |
| 1724 &actual_size, | 1688 &actual_size, |
| 1725 true)); | 1689 VirtualMemory::EXECUTABLE)); |
| 1726 CHECK(buffer); | 1690 CHECK(buffer); |
| 1727 Isolate* isolate = Isolate::Current(); | 1691 Isolate* isolate = Isolate::Current(); |
| 1728 HandleScope handles(isolate); | 1692 HandleScope handles(isolate); |
| 1729 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1693 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 1730 | 1694 |
| 1731 MacroAssembler* masm = &assembler; | 1695 MacroAssembler* masm = &assembler; |
| 1732 masm->set_allow_stub_calls(false); | 1696 masm->set_allow_stub_calls(false); |
| 1733 EntryCode(masm); | 1697 EntryCode(masm); |
| 1734 Label exit; | 1698 Label exit; |
| 1735 | 1699 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1780 __ SmiNot(rcx, rcx); | 1744 __ SmiNot(rcx, rcx); |
| 1781 __ cmpq(rcx, r8); | 1745 __ cmpq(rcx, r8); |
| 1782 __ j(not_equal, exit); | 1746 __ j(not_equal, exit); |
| 1783 } | 1747 } |
| 1784 | 1748 |
| 1785 | 1749 |
| 1786 TEST(SmiNot) { | 1750 TEST(SmiNot) { |
| 1787 v8::internal::V8::Initialize(NULL); | 1751 v8::internal::V8::Initialize(NULL); |
| 1788 // Allocate an executable page of memory. | 1752 // Allocate an executable page of memory. |
| 1789 size_t actual_size; | 1753 size_t actual_size; |
| 1790 byte* buffer = | 1754 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 1791 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, | 1755 Assembler::kMinimalBufferSize, |
| 1792 &actual_size, | 1756 &actual_size, |
| 1793 true)); | 1757 VirtualMemory::EXECUTABLE)); |
| 1794 CHECK(buffer); | 1758 CHECK(buffer); |
| 1795 Isolate* isolate = Isolate::Current(); | 1759 Isolate* isolate = Isolate::Current(); |
| 1796 HandleScope handles(isolate); | 1760 HandleScope handles(isolate); |
| 1797 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1761 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 1798 | 1762 |
| 1799 MacroAssembler* masm = &assembler; | 1763 MacroAssembler* masm = &assembler; |
| 1800 masm->set_allow_stub_calls(false); | 1764 masm->set_allow_stub_calls(false); |
| 1801 EntryCode(masm); | 1765 EntryCode(masm); |
| 1802 Label exit; | 1766 Label exit; |
| 1803 | 1767 |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1877 | 1841 |
| 1878 __ incq(rax); | 1842 __ incq(rax); |
| 1879 } | 1843 } |
| 1880 } | 1844 } |
| 1881 | 1845 |
| 1882 | 1846 |
| 1883 TEST(SmiShiftLeft) { | 1847 TEST(SmiShiftLeft) { |
| 1884 v8::internal::V8::Initialize(NULL); | 1848 v8::internal::V8::Initialize(NULL); |
| 1885 // Allocate an executable page of memory. | 1849 // Allocate an executable page of memory. |
| 1886 size_t actual_size; | 1850 size_t actual_size; |
| 1887 byte* buffer = | 1851 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 1888 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 4, | 1852 Assembler::kMinimalBufferSize * 4, |
| 1889 &actual_size, | 1853 &actual_size, |
| 1890 true)); | 1854 VirtualMemory::EXECUTABLE)); |
| 1891 CHECK(buffer); | 1855 CHECK(buffer); |
| 1892 Isolate* isolate = Isolate::Current(); | 1856 Isolate* isolate = Isolate::Current(); |
| 1893 HandleScope handles(isolate); | 1857 HandleScope handles(isolate); |
| 1894 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1858 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 1895 | 1859 |
| 1896 MacroAssembler* masm = &assembler; | 1860 MacroAssembler* masm = &assembler; |
| 1897 masm->set_allow_stub_calls(false); | 1861 masm->set_allow_stub_calls(false); |
| 1898 EntryCode(masm); | 1862 EntryCode(masm); |
| 1899 Label exit; | 1863 Label exit; |
| 1900 | 1864 |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1984 __ addq(rax, Immediate(3)); | 1948 __ addq(rax, Immediate(3)); |
| 1985 } | 1949 } |
| 1986 } | 1950 } |
| 1987 } | 1951 } |
| 1988 | 1952 |
| 1989 | 1953 |
| 1990 TEST(SmiShiftLogicalRight) { | 1954 TEST(SmiShiftLogicalRight) { |
| 1991 v8::internal::V8::Initialize(NULL); | 1955 v8::internal::V8::Initialize(NULL); |
| 1992 // Allocate an executable page of memory. | 1956 // Allocate an executable page of memory. |
| 1993 size_t actual_size; | 1957 size_t actual_size; |
| 1994 byte* buffer = | 1958 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 1995 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 3, | 1959 Assembler::kMinimalBufferSize * 3, |
| 1996 &actual_size, | 1960 &actual_size, |
| 1997 true)); | 1961 VirtualMemory::EXECUTABLE)); |
| 1998 CHECK(buffer); | 1962 CHECK(buffer); |
| 1999 Isolate* isolate = Isolate::Current(); | 1963 Isolate* isolate = Isolate::Current(); |
| 2000 HandleScope handles(isolate); | 1964 HandleScope handles(isolate); |
| 2001 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 1965 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 2002 | 1966 |
| 2003 MacroAssembler* masm = &assembler; | 1967 MacroAssembler* masm = &assembler; |
| 2004 masm->set_allow_stub_calls(false); | 1968 masm->set_allow_stub_calls(false); |
| 2005 EntryCode(masm); | 1969 EntryCode(masm); |
| 2006 Label exit; | 1970 Label exit; |
| 2007 | 1971 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2054 | 2018 |
| 2055 __ incq(rax); | 2019 __ incq(rax); |
| 2056 } | 2020 } |
| 2057 } | 2021 } |
| 2058 | 2022 |
| 2059 | 2023 |
| 2060 TEST(SmiShiftArithmeticRight) { | 2024 TEST(SmiShiftArithmeticRight) { |
| 2061 v8::internal::V8::Initialize(NULL); | 2025 v8::internal::V8::Initialize(NULL); |
| 2062 // Allocate an executable page of memory. | 2026 // Allocate an executable page of memory. |
| 2063 size_t actual_size; | 2027 size_t actual_size; |
| 2064 byte* buffer = | 2028 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 2065 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 2029 Assembler::kMinimalBufferSize * 2, |
| 2066 &actual_size, | 2030 &actual_size, |
| 2067 true)); | 2031 VirtualMemory::EXECUTABLE)); |
| 2068 CHECK(buffer); | 2032 CHECK(buffer); |
| 2069 Isolate* isolate = Isolate::Current(); | 2033 Isolate* isolate = Isolate::Current(); |
| 2070 HandleScope handles(isolate); | 2034 HandleScope handles(isolate); |
| 2071 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 2035 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 2072 | 2036 |
| 2073 MacroAssembler* masm = &assembler; | 2037 MacroAssembler* masm = &assembler; |
| 2074 masm->set_allow_stub_calls(false); | 2038 masm->set_allow_stub_calls(false); |
| 2075 EntryCode(masm); | 2039 EntryCode(masm); |
| 2076 Label exit; | 2040 Label exit; |
| 2077 | 2041 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2119 __ j(not_equal, exit); | 2083 __ j(not_equal, exit); |
| 2120 __ incq(rax); | 2084 __ incq(rax); |
| 2121 } | 2085 } |
| 2122 } | 2086 } |
| 2123 | 2087 |
| 2124 | 2088 |
| 2125 TEST(PositiveSmiTimesPowerOfTwoToInteger64) { | 2089 TEST(PositiveSmiTimesPowerOfTwoToInteger64) { |
| 2126 v8::internal::V8::Initialize(NULL); | 2090 v8::internal::V8::Initialize(NULL); |
| 2127 // Allocate an executable page of memory. | 2091 // Allocate an executable page of memory. |
| 2128 size_t actual_size; | 2092 size_t actual_size; |
| 2129 byte* buffer = | 2093 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 2130 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 4, | 2094 Assembler::kMinimalBufferSize * 4, |
| 2131 &actual_size, | 2095 &actual_size, |
| 2132 true)); | 2096 VirtualMemory::EXECUTABLE)); |
| 2133 CHECK(buffer); | 2097 CHECK(buffer); |
| 2134 Isolate* isolate = Isolate::Current(); | 2098 Isolate* isolate = Isolate::Current(); |
| 2135 HandleScope handles(isolate); | 2099 HandleScope handles(isolate); |
| 2136 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 2100 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 2137 | 2101 |
| 2138 MacroAssembler* masm = &assembler; | 2102 MacroAssembler* masm = &assembler; |
| 2139 masm->set_allow_stub_calls(false); | 2103 masm->set_allow_stub_calls(false); |
| 2140 EntryCode(masm); | 2104 EntryCode(masm); |
| 2141 Label exit; | 2105 Label exit; |
| 2142 | 2106 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 2163 } | 2127 } |
| 2164 | 2128 |
| 2165 | 2129 |
| 2166 TEST(OperandOffset) { | 2130 TEST(OperandOffset) { |
| 2167 v8::internal::V8::Initialize(NULL); | 2131 v8::internal::V8::Initialize(NULL); |
| 2168 int data[256]; | 2132 int data[256]; |
| 2169 for (int i = 0; i < 256; i++) { data[i] = i * 0x01010101; } | 2133 for (int i = 0; i < 256; i++) { data[i] = i * 0x01010101; } |
| 2170 | 2134 |
| 2171 // Allocate an executable page of memory. | 2135 // Allocate an executable page of memory. |
| 2172 size_t actual_size; | 2136 size_t actual_size; |
| 2173 byte* buffer = | 2137 byte* buffer = static_cast<byte*>(VirtualMemory::AllocateRegion( |
| 2174 static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, | 2138 Assembler::kMinimalBufferSize * 2, |
| 2175 &actual_size, | 2139 &actual_size, |
| 2176 true)); | 2140 VirtualMemory::EXECUTABLE)); |
| 2177 CHECK(buffer); | 2141 CHECK(buffer); |
| 2178 Isolate* isolate = Isolate::Current(); | 2142 Isolate* isolate = Isolate::Current(); |
| 2179 HandleScope handles(isolate); | 2143 HandleScope handles(isolate); |
| 2180 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); | 2144 MacroAssembler assembler(isolate, buffer, static_cast<int>(actual_size)); |
| 2181 | 2145 |
| 2182 MacroAssembler* masm = &assembler; | 2146 MacroAssembler* masm = &assembler; |
| 2183 masm->set_allow_stub_calls(false); | 2147 masm->set_allow_stub_calls(false); |
| 2184 Label exit; | 2148 Label exit; |
| 2185 | 2149 |
| 2186 EntryCode(masm); | 2150 EntryCode(masm); |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2515 CodeDesc desc; | 2479 CodeDesc desc; |
| 2516 masm->GetCode(&desc); | 2480 masm->GetCode(&desc); |
| 2517 // Call the function from C++. | 2481 // Call the function from C++. |
| 2518 int result = FUNCTION_CAST<F0>(buffer)(); | 2482 int result = FUNCTION_CAST<F0>(buffer)(); |
| 2519 CHECK_EQ(0, result); | 2483 CHECK_EQ(0, result); |
| 2520 } | 2484 } |
| 2521 | 2485 |
| 2522 | 2486 |
| 2523 | 2487 |
| 2524 #undef __ | 2488 #undef __ |
| OLD | NEW |