diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2011-06-29 17:26:51 +0200 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2011-06-29 17:26:51 +0200 |
commit | 33af2720f26c2b25bc7f75ce7eb454ff99db6d35 (patch) | |
tree | 9a38f0c96420edf503eebd6325dd8d2d8249f653 /deps/v8/test/cctest/test-macro-assembler-x64.cc | |
parent | 6afdca885adeeeed9eef8cbb01c3d97af0bc084d (diff) | |
download | node-33af2720f26c2b25bc7f75ce7eb454ff99db6d35.tar.gz |
Upgrade V8 to 3.4.8
Diffstat (limited to 'deps/v8/test/cctest/test-macro-assembler-x64.cc')
-rwxr-xr-x | deps/v8/test/cctest/test-macro-assembler-x64.cc | 424 |
1 files changed, 247 insertions, 177 deletions
diff --git a/deps/v8/test/cctest/test-macro-assembler-x64.cc b/deps/v8/test/cctest/test-macro-assembler-x64.cc index 9b1fc46ea..59eeed906 100755 --- a/deps/v8/test/cctest/test-macro-assembler-x64.cc +++ b/deps/v8/test/cctest/test-macro-assembler-x64.cc @@ -35,48 +35,49 @@ #include "serialize.h" #include "cctest.h" -using v8::internal::byte; -using v8::internal::OS; using v8::internal::Assembler; +using v8::internal::CodeDesc; using v8::internal::Condition; -using v8::internal::MacroAssembler; +using v8::internal::FUNCTION_CAST; using v8::internal::HandleScope; -using v8::internal::Operand; using v8::internal::Immediate; -using v8::internal::SmiIndex; +using v8::internal::Isolate; using v8::internal::Label; +using v8::internal::MacroAssembler; +using v8::internal::OS; +using v8::internal::Operand; using v8::internal::RelocInfo; +using v8::internal::Smi; +using v8::internal::SmiIndex; +using v8::internal::byte; +using v8::internal::carry; +using v8::internal::greater; +using v8::internal::greater_equal; +using v8::internal::kIntSize; +using v8::internal::kPointerSize; +using v8::internal::kSmiTagMask; +using v8::internal::kSmiValueSize; +using v8::internal::less_equal; +using v8::internal::negative; +using v8::internal::not_carry; +using v8::internal::not_equal; +using v8::internal::not_zero; +using v8::internal::positive; +using v8::internal::r11; +using v8::internal::r13; +using v8::internal::r14; +using v8::internal::r15; +using v8::internal::r8; +using v8::internal::r9; using v8::internal::rax; +using v8::internal::rbp; using v8::internal::rbx; -using v8::internal::rsi; -using v8::internal::rdi; using v8::internal::rcx; +using v8::internal::rdi; using v8::internal::rdx; -using v8::internal::rbp; +using v8::internal::rsi; using v8::internal::rsp; -using v8::internal::r8; -using v8::internal::r9; -using v8::internal::r11; -using v8::internal::r12; -using v8::internal::r13; -using v8::internal::r14; using v8::internal::times_pointer_size; -using v8::internal::FUNCTION_CAST; -using v8::internal::CodeDesc; -using v8::internal::less_equal; -using v8::internal::not_equal; -using v8::internal::not_zero; -using v8::internal::greater; -using v8::internal::greater_equal; -using v8::internal::carry; -using v8::internal::not_carry; -using v8::internal::negative; -using v8::internal::positive; -using v8::internal::Smi; -using v8::internal::kSmiTagMask; -using v8::internal::kSmiValueSize; -using v8::internal::kPointerSize; -using v8::internal::kIntSize; // Test the x64 assembler by compiling some simple functions into // a buffer and executing them. These tests do not initialize the @@ -95,7 +96,9 @@ typedef int (*F0)(); static void EntryCode(MacroAssembler* masm) { // Smi constant register is callee save. __ push(v8::internal::kSmiConstantRegister); + __ push(v8::internal::kRootRegister); __ InitializeSmiConstantRegister(); + __ InitializeRootRegister(); } @@ -105,6 +108,7 @@ static void ExitCode(MacroAssembler* masm) { __ cmpq(rdx, v8::internal::kSmiConstantRegister); __ movq(rdx, Immediate(-1)); __ cmovq(not_equal, rax, rdx); + __ pop(v8::internal::kRootRegister); __ pop(v8::internal::kSmiConstantRegister); } @@ -146,6 +150,7 @@ static void TestMoveSmi(MacroAssembler* masm, Label* exit, int id, Smi* value) { // Test that we can move a Smi value literally into a register. TEST(SmiMove) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, @@ -153,7 +158,9 @@ TEST(SmiMove) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; // Create a pointer for the __ macro. masm->set_allow_stub_calls(false); EntryCode(masm); @@ -220,7 +227,7 @@ void TestSmiCompare(MacroAssembler* masm, Label* exit, int id, int x, int y) { __ j(less_equal, exit); } } else { - __ SmiCompare(rcx, rcx); + __ cmpq(rcx, rcx); __ movl(rax, Immediate(id + 11)); __ j(not_equal, exit); __ incq(rax); @@ -232,15 +239,18 @@ void TestSmiCompare(MacroAssembler* masm, Label* exit, int id, int x, int y) { // Test that we can compare smis for equality (and more). TEST(SmiCompare) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = - static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, + static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, &actual_size, true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -282,6 +292,7 @@ TEST(SmiCompare) { TEST(Integer32ToSmi) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, @@ -289,7 +300,9 @@ TEST(Integer32ToSmi) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -300,35 +313,35 @@ TEST(Integer32ToSmi) { __ movl(rcx, Immediate(0)); __ Integer32ToSmi(rcx, rcx); __ Set(rdx, reinterpret_cast<intptr_t>(Smi::FromInt(0))); - __ SmiCompare(rcx, rdx); + __ cmpq(rcx, rdx); __ j(not_equal, &exit); __ movq(rax, Immediate(2)); // Test number. __ movl(rcx, Immediate(1024)); __ Integer32ToSmi(rcx, rcx); __ Set(rdx, reinterpret_cast<intptr_t>(Smi::FromInt(1024))); - __ SmiCompare(rcx, rdx); + __ cmpq(rcx, rdx); __ j(not_equal, &exit); __ movq(rax, Immediate(3)); // Test number. __ movl(rcx, Immediate(-1)); __ Integer32ToSmi(rcx, rcx); __ Set(rdx, reinterpret_cast<intptr_t>(Smi::FromInt(-1))); - __ SmiCompare(rcx, rdx); + __ cmpq(rcx, rdx); __ j(not_equal, &exit); __ movq(rax, Immediate(4)); // Test number. __ movl(rcx, Immediate(Smi::kMaxValue)); __ Integer32ToSmi(rcx, rcx); __ Set(rdx, reinterpret_cast<intptr_t>(Smi::FromInt(Smi::kMaxValue))); - __ SmiCompare(rcx, rdx); + __ cmpq(rcx, rdx); __ j(not_equal, &exit); __ movq(rax, Immediate(5)); // Test number. __ movl(rcx, Immediate(Smi::kMinValue)); __ Integer32ToSmi(rcx, rcx); __ Set(rdx, reinterpret_cast<intptr_t>(Smi::FromInt(Smi::kMinValue))); - __ SmiCompare(rcx, rdx); + __ cmpq(rcx, rdx); __ j(not_equal, &exit); // Different target register. @@ -337,35 +350,35 @@ TEST(Integer32ToSmi) { __ movl(rcx, Immediate(0)); __ Integer32ToSmi(r8, rcx); __ Set(rdx, reinterpret_cast<intptr_t>(Smi::FromInt(0))); - __ SmiCompare(r8, rdx); + __ cmpq(r8, rdx); __ j(not_equal, &exit); __ movq(rax, Immediate(7)); // Test number. __ movl(rcx, Immediate(1024)); __ Integer32ToSmi(r8, rcx); __ Set(rdx, reinterpret_cast<intptr_t>(Smi::FromInt(1024))); - __ SmiCompare(r8, rdx); + __ cmpq(r8, rdx); __ j(not_equal, &exit); __ movq(rax, Immediate(8)); // Test number. __ movl(rcx, Immediate(-1)); __ Integer32ToSmi(r8, rcx); __ Set(rdx, reinterpret_cast<intptr_t>(Smi::FromInt(-1))); - __ SmiCompare(r8, rdx); + __ cmpq(r8, rdx); __ j(not_equal, &exit); __ movq(rax, Immediate(9)); // Test number. __ movl(rcx, Immediate(Smi::kMaxValue)); __ Integer32ToSmi(r8, rcx); __ Set(rdx, reinterpret_cast<intptr_t>(Smi::FromInt(Smi::kMaxValue))); - __ SmiCompare(r8, rdx); + __ cmpq(r8, rdx); __ j(not_equal, &exit); __ movq(rax, Immediate(10)); // Test number. __ movl(rcx, Immediate(Smi::kMinValue)); __ Integer32ToSmi(r8, rcx); __ Set(rdx, reinterpret_cast<intptr_t>(Smi::FromInt(Smi::kMinValue))); - __ SmiCompare(r8, rdx); + __ cmpq(r8, rdx); __ j(not_equal, &exit); @@ -394,21 +407,22 @@ void TestI64PlusConstantToSmi(MacroAssembler* masm, __ movq(rcx, x, RelocInfo::NONE); __ movq(r11, rcx); __ Integer64PlusConstantToSmi(rdx, rcx, y); - __ SmiCompare(rdx, r8); + __ cmpq(rdx, r8); __ j(not_equal, exit); __ incq(rax); - __ SmiCompare(r11, rcx); + __ cmpq(r11, rcx); __ j(not_equal, exit); __ incq(rax); __ Integer64PlusConstantToSmi(rcx, rcx, y); - __ SmiCompare(rcx, r8); + __ cmpq(rcx, r8); __ j(not_equal, exit); } TEST(Integer64PlusConstantToSmi) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, @@ -416,7 +430,9 @@ TEST(Integer64PlusConstantToSmi) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -452,6 +468,7 @@ TEST(Integer64PlusConstantToSmi) { TEST(SmiCheck) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, @@ -459,7 +476,9 @@ TEST(SmiCheck) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -660,14 +679,14 @@ void TestSmiNeg(MacroAssembler* masm, Label* exit, int id, int x) { __ SmiNeg(r9, rcx, exit); __ incq(rax); - __ SmiCompare(r11, rcx); + __ cmpq(r11, rcx); __ j(not_equal, exit); __ incq(rax); __ SmiNeg(rcx, rcx, exit); __ incq(rax); - __ SmiCompare(r11, rcx); + __ cmpq(r11, rcx); __ j(not_equal, exit); } else { Label smi_ok, smi_ok2; @@ -679,11 +698,11 @@ void TestSmiNeg(MacroAssembler* masm, Label* exit, int id, int x) { __ jmp(exit); __ bind(&smi_ok); __ incq(rax); - __ SmiCompare(r9, r8); + __ cmpq(r9, r8); __ j(not_equal, exit); __ incq(rax); - __ SmiCompare(r11, rcx); + __ cmpq(r11, rcx); __ j(not_equal, exit); __ incq(rax); @@ -691,13 +710,14 @@ void TestSmiNeg(MacroAssembler* masm, Label* exit, int id, int x) { __ jmp(exit); __ bind(&smi_ok2); __ incq(rax); - __ SmiCompare(rcx, r8); + __ cmpq(rcx, r8); __ j(not_equal, exit); } } TEST(SmiNeg) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = @@ -706,7 +726,9 @@ TEST(SmiNeg) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -751,12 +773,12 @@ static void SmiAddTest(MacroAssembler* masm, __ movl(rax, Immediate(id)); // Test number. __ SmiAdd(r9, rcx, rdx, exit); - __ SmiCompare(r9, r8); + __ cmpq(r9, r8); __ j(not_equal, exit); __ incq(rax); __ SmiAdd(rcx, rcx, rdx, exit); \ - __ SmiCompare(rcx, r8); + __ cmpq(rcx, r8); __ j(not_equal, exit); __ movl(rcx, Immediate(first)); @@ -764,11 +786,11 @@ static void SmiAddTest(MacroAssembler* masm, __ incq(rax); __ SmiAddConstant(r9, rcx, Smi::FromInt(second)); - __ SmiCompare(r9, r8); + __ cmpq(r9, r8); __ j(not_equal, exit); __ SmiAddConstant(rcx, rcx, Smi::FromInt(second)); - __ SmiCompare(rcx, r8); + __ cmpq(rcx, r8); __ j(not_equal, exit); __ movl(rcx, Immediate(first)); @@ -776,16 +798,17 @@ static void SmiAddTest(MacroAssembler* masm, __ incq(rax); __ SmiAddConstant(r9, rcx, Smi::FromInt(second), exit); - __ SmiCompare(r9, r8); + __ cmpq(r9, r8); __ j(not_equal, exit); __ incq(rax); __ SmiAddConstant(rcx, rcx, Smi::FromInt(second), exit); - __ SmiCompare(rcx, r8); + __ cmpq(rcx, r8); __ j(not_equal, exit); } TEST(SmiAdd) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, @@ -793,7 +816,9 @@ TEST(SmiAdd) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -834,36 +859,36 @@ static void SmiSubTest(MacroAssembler* masm, __ movl(rax, Immediate(id)); // Test 0. __ SmiSub(r9, rcx, rdx, exit); - __ SmiCompare(r9, r8); + __ cmpq(r9, r8); __ j(not_equal, exit); __ incq(rax); // Test 1. __ SmiSub(rcx, rcx, rdx, exit); - __ SmiCompare(rcx, r8); + __ cmpq(rcx, r8); __ j(not_equal, exit); __ Move(rcx, Smi::FromInt(first)); __ incq(rax); // Test 2. __ SmiSubConstant(r9, rcx, Smi::FromInt(second)); - __ SmiCompare(r9, r8); + __ cmpq(r9, r8); __ j(not_equal, exit); __ incq(rax); // Test 3. __ SmiSubConstant(rcx, rcx, Smi::FromInt(second)); - __ SmiCompare(rcx, r8); + __ cmpq(rcx, r8); __ j(not_equal, exit); __ Move(rcx, Smi::FromInt(first)); __ incq(rax); // Test 4. __ SmiSubConstant(r9, rcx, Smi::FromInt(second), exit); - __ SmiCompare(r9, r8); + __ cmpq(r9, r8); __ j(not_equal, exit); __ incq(rax); // Test 5. __ SmiSubConstant(rcx, rcx, Smi::FromInt(second), exit); - __ SmiCompare(rcx, r8); + __ cmpq(rcx, r8); __ j(not_equal, exit); } @@ -886,7 +911,7 @@ static void SmiSubOverflowTest(MacroAssembler* masm, __ jmp(exit); __ bind(&overflow_ok); __ incq(rax); - __ SmiCompare(rcx, r11); + __ cmpq(rcx, r11); __ j(not_equal, exit); } @@ -897,7 +922,7 @@ static void SmiSubOverflowTest(MacroAssembler* masm, __ jmp(exit); __ bind(&overflow_ok); __ incq(rax); - __ SmiCompare(rcx, r11); + __ cmpq(rcx, r11); __ j(not_equal, exit); } @@ -909,7 +934,7 @@ static void SmiSubOverflowTest(MacroAssembler* masm, __ jmp(exit); __ bind(&overflow_ok); __ incq(rax); - __ SmiCompare(rcx, r11); + __ cmpq(rcx, r11); __ j(not_equal, exit); } @@ -920,7 +945,7 @@ static void SmiSubOverflowTest(MacroAssembler* masm, __ jmp(exit); __ bind(&overflow_ok); __ incq(rax); - __ SmiCompare(rcx, r11); + __ cmpq(rcx, r11); __ j(not_equal, exit); } @@ -933,7 +958,7 @@ static void SmiSubOverflowTest(MacroAssembler* masm, __ jmp(exit); __ bind(&overflow_ok); __ incq(rax); - __ SmiCompare(rcx, r11); + __ cmpq(rcx, r11); __ j(not_equal, exit); } @@ -944,7 +969,7 @@ static void SmiSubOverflowTest(MacroAssembler* masm, __ jmp(exit); __ bind(&overflow_ok); __ incq(rax); - __ SmiCompare(rcx, r11); + __ cmpq(rcx, r11); __ j(not_equal, exit); } @@ -956,7 +981,7 @@ static void SmiSubOverflowTest(MacroAssembler* masm, __ jmp(exit); __ bind(&overflow_ok); __ incq(rax); - __ SmiCompare(rcx, r11); + __ cmpq(rcx, r11); __ j(not_equal, exit); } @@ -967,13 +992,14 @@ static void SmiSubOverflowTest(MacroAssembler* masm, __ jmp(exit); __ bind(&overflow_ok); __ incq(rax); - __ SmiCompare(rcx, r11); + __ cmpq(rcx, r11); __ j(not_equal, exit); } } TEST(SmiSub) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = @@ -982,7 +1008,9 @@ TEST(SmiSub) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1032,15 +1060,15 @@ void TestSmiMul(MacroAssembler* masm, Label* exit, int id, int x, int y) { __ Move(r8, Smi::FromIntptr(result)); __ SmiMul(r9, rcx, rdx, exit); __ incq(rax); - __ SmiCompare(r11, rcx); + __ cmpq(r11, rcx); __ j(not_equal, exit); __ incq(rax); - __ SmiCompare(r9, r8); + __ cmpq(r9, r8); __ j(not_equal, exit); __ incq(rax); __ SmiMul(rcx, rcx, rdx, exit); - __ SmiCompare(rcx, r8); + __ cmpq(rcx, r8); __ j(not_equal, exit); } else { __ movl(rax, Immediate(id + 8)); @@ -1049,7 +1077,7 @@ void TestSmiMul(MacroAssembler* masm, Label* exit, int id, int x, int y) { __ jmp(exit); __ bind(&overflow_ok); __ incq(rax); - __ SmiCompare(r11, rcx); + __ cmpq(r11, rcx); __ j(not_equal, exit); __ incq(rax); __ SmiMul(rcx, rcx, rdx, &overflow_ok2); @@ -1057,13 +1085,14 @@ void TestSmiMul(MacroAssembler* masm, Label* exit, int id, int x, int y) { __ bind(&overflow_ok2); // 31-bit version doesn't preserve rcx on failure. // __ incq(rax); - // __ SmiCompare(r11, rcx); + // __ cmpq(r11, rcx); // __ j(not_equal, exit); } } TEST(SmiMul) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, @@ -1071,7 +1100,9 @@ TEST(SmiMul) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1120,30 +1151,30 @@ void TestSmiDiv(MacroAssembler* masm, Label* exit, int id, int x, int y) { if (!fraction && !overflow && !negative_zero && !division_by_zero) { // Division succeeds __ movq(rcx, r11); - __ movq(r12, Immediate(id)); + __ movq(r15, Immediate(id)); int result = x / y; __ Move(r8, Smi::FromInt(result)); __ SmiDiv(r9, rcx, r14, exit); // Might have destroyed rcx and r14. - __ incq(r12); - __ SmiCompare(r9, r8); + __ incq(r15); + __ cmpq(r9, r8); __ j(not_equal, exit); - __ incq(r12); + __ incq(r15); __ movq(rcx, r11); __ Move(r14, Smi::FromInt(y)); - __ SmiCompare(rcx, r11); + __ cmpq(rcx, r11); __ j(not_equal, exit); - __ incq(r12); + __ incq(r15); __ SmiDiv(rcx, rcx, r14, exit); - __ incq(r12); - __ SmiCompare(rcx, r8); + __ incq(r15); + __ cmpq(rcx, r8); __ j(not_equal, exit); } else { // Division fails. - __ movq(r12, Immediate(id + 8)); + __ movq(r15, Immediate(id + 8)); Label fail_ok, fail_ok2; __ movq(rcx, r11); @@ -1151,23 +1182,24 @@ void TestSmiDiv(MacroAssembler* masm, Label* exit, int id, int x, int y) { __ jmp(exit); __ bind(&fail_ok); - __ incq(r12); - __ SmiCompare(rcx, r11); + __ incq(r15); + __ cmpq(rcx, r11); __ j(not_equal, exit); - __ incq(r12); + __ incq(r15); __ SmiDiv(rcx, rcx, r14, &fail_ok2); __ jmp(exit); __ bind(&fail_ok2); - __ incq(r12); - __ SmiCompare(rcx, r11); + __ incq(r15); + __ cmpq(rcx, r11); __ j(not_equal, exit); } } TEST(SmiDiv) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = @@ -1176,7 +1208,9 @@ TEST(SmiDiv) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1184,7 +1218,7 @@ TEST(SmiDiv) { Label exit; __ push(r14); - __ push(r12); + __ push(r15); TestSmiDiv(masm, &exit, 0x10, 1, 1); TestSmiDiv(masm, &exit, 0x20, 1, 0); TestSmiDiv(masm, &exit, 0x30, -1, 0); @@ -1206,10 +1240,10 @@ TEST(SmiDiv) { TestSmiDiv(masm, &exit, 0x130, Smi::kMinValue, Smi::kMinValue); TestSmiDiv(masm, &exit, 0x140, Smi::kMinValue, -1); - __ xor_(r12, r12); // Success. + __ xor_(r15, r15); // Success. __ bind(&exit); - __ movq(rax, r12); - __ pop(r12); + __ movq(rax, r15); + __ pop(r15); __ pop(r14); ExitCode(masm); __ ret(0); @@ -1232,51 +1266,52 @@ void TestSmiMod(MacroAssembler* masm, Label* exit, int id, int x, int y) { __ Move(r14, Smi::FromInt(y)); if (!division_overflow && !negative_zero && !division_by_zero) { // Modulo succeeds - __ movq(r12, Immediate(id)); + __ movq(r15, Immediate(id)); int result = x % y; __ Move(r8, Smi::FromInt(result)); __ SmiMod(r9, rcx, r14, exit); - __ incq(r12); - __ SmiCompare(r9, r8); + __ incq(r15); + __ cmpq(r9, r8); __ j(not_equal, exit); - __ incq(r12); - __ SmiCompare(rcx, r11); + __ incq(r15); + __ cmpq(rcx, r11); __ j(not_equal, exit); - __ incq(r12); + __ incq(r15); __ SmiMod(rcx, rcx, r14, exit); - __ incq(r12); - __ SmiCompare(rcx, r8); + __ incq(r15); + __ cmpq(rcx, r8); __ j(not_equal, exit); } else { // Modulo fails. - __ movq(r12, Immediate(id + 8)); + __ movq(r15, Immediate(id + 8)); Label fail_ok, fail_ok2; __ SmiMod(r9, rcx, r14, &fail_ok); __ jmp(exit); __ bind(&fail_ok); - __ incq(r12); - __ SmiCompare(rcx, r11); + __ incq(r15); + __ cmpq(rcx, r11); __ j(not_equal, exit); - __ incq(r12); + __ incq(r15); __ SmiMod(rcx, rcx, r14, &fail_ok2); __ jmp(exit); __ bind(&fail_ok2); - __ incq(r12); - __ SmiCompare(rcx, r11); + __ incq(r15); + __ cmpq(rcx, r11); __ j(not_equal, exit); } } TEST(SmiMod) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = @@ -1285,7 +1320,9 @@ TEST(SmiMod) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1293,7 +1330,7 @@ TEST(SmiMod) { Label exit; __ push(r14); - __ push(r12); + __ push(r15); TestSmiMod(masm, &exit, 0x10, 1, 1); TestSmiMod(masm, &exit, 0x20, 1, 0); TestSmiMod(masm, &exit, 0x30, -1, 0); @@ -1315,10 +1352,10 @@ TEST(SmiMod) { TestSmiMod(masm, &exit, 0x130, Smi::kMinValue, Smi::kMinValue); TestSmiMod(masm, &exit, 0x140, Smi::kMinValue, -1); - __ xor_(r12, r12); // Success. + __ xor_(r15, r15); // Success. __ bind(&exit); - __ movq(rax, r12); - __ pop(r12); + __ movq(rax, r15); + __ pop(r15); __ pop(r14); ExitCode(masm); __ ret(0); @@ -1340,7 +1377,7 @@ void TestSmiIndex(MacroAssembler* masm, Label* exit, int id, int x) { ASSERT(index.reg.is(rcx) || index.reg.is(rdx)); __ shl(index.reg, Immediate(index.scale)); __ Set(r8, static_cast<intptr_t>(x) << i); - __ SmiCompare(index.reg, r8); + __ cmpq(index.reg, r8); __ j(not_equal, exit); __ incq(rax); __ Move(rcx, Smi::FromInt(x)); @@ -1348,7 +1385,7 @@ void TestSmiIndex(MacroAssembler* masm, Label* exit, int id, int x) { ASSERT(index.reg.is(rcx)); __ shl(rcx, Immediate(index.scale)); __ Set(r8, static_cast<intptr_t>(x) << i); - __ SmiCompare(rcx, r8); + __ cmpq(rcx, r8); __ j(not_equal, exit); __ incq(rax); @@ -1357,7 +1394,7 @@ void TestSmiIndex(MacroAssembler* masm, Label* exit, int id, int x) { ASSERT(index.reg.is(rcx) || index.reg.is(rdx)); __ shl(index.reg, Immediate(index.scale)); __ Set(r8, static_cast<intptr_t>(-x) << i); - __ SmiCompare(index.reg, r8); + __ cmpq(index.reg, r8); __ j(not_equal, exit); __ incq(rax); __ Move(rcx, Smi::FromInt(x)); @@ -1365,13 +1402,14 @@ void TestSmiIndex(MacroAssembler* masm, Label* exit, int id, int x) { ASSERT(index.reg.is(rcx)); __ shl(rcx, Immediate(index.scale)); __ Set(r8, static_cast<intptr_t>(-x) << i); - __ SmiCompare(rcx, r8); + __ cmpq(rcx, r8); __ j(not_equal, exit); __ incq(rax); } } TEST(SmiIndex) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = @@ -1380,7 +1418,9 @@ TEST(SmiIndex) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1414,7 +1454,7 @@ void TestSelectNonSmi(MacroAssembler* masm, Label* exit, int id, int x, int y) { __ SelectNonSmi(r9, rcx, rdx, exit); __ incq(rax); - __ SmiCompare(r9, rdx); + __ cmpq(r9, rdx); __ j(not_equal, exit); __ incq(rax); @@ -1424,7 +1464,7 @@ void TestSelectNonSmi(MacroAssembler* masm, Label* exit, int id, int x, int y) { __ SelectNonSmi(r9, rcx, rdx, exit); __ incq(rax); - __ SmiCompare(r9, rcx); + __ cmpq(r9, rcx); __ j(not_equal, exit); __ incq(rax); @@ -1440,6 +1480,7 @@ void TestSelectNonSmi(MacroAssembler* masm, Label* exit, int id, int x, int y) { TEST(SmiSelectNonSmi) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = @@ -1448,7 +1489,9 @@ TEST(SmiSelectNonSmi) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); // Avoid inline checks. @@ -1488,36 +1531,37 @@ void TestSmiAnd(MacroAssembler* masm, Label* exit, int id, int x, int y) { __ Move(rdx, Smi::FromInt(y)); __ Move(r8, Smi::FromInt(result)); __ SmiAnd(r9, rcx, rdx); - __ SmiCompare(r8, r9); + __ cmpq(r8, r9); __ j(not_equal, exit); __ incq(rax); - __ SmiCompare(r11, rcx); + __ cmpq(r11, rcx); __ j(not_equal, exit); __ incq(rax); __ SmiAnd(rcx, rcx, rdx); - __ SmiCompare(r8, rcx); + __ cmpq(r8, rcx); __ j(not_equal, exit); __ movq(rcx, r11); __ incq(rax); __ SmiAndConstant(r9, rcx, Smi::FromInt(y)); - __ SmiCompare(r8, r9); + __ cmpq(r8, r9); __ j(not_equal, exit); __ incq(rax); - __ SmiCompare(r11, rcx); + __ cmpq(r11, rcx); __ j(not_equal, exit); __ incq(rax); __ SmiAndConstant(rcx, rcx, Smi::FromInt(y)); - __ SmiCompare(r8, rcx); + __ cmpq(r8, rcx); __ j(not_equal, exit); } TEST(SmiAnd) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = @@ -1526,7 +1570,9 @@ TEST(SmiAnd) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1568,36 +1614,37 @@ void TestSmiOr(MacroAssembler* masm, Label* exit, int id, int x, int y) { __ Move(rdx, Smi::FromInt(y)); __ Move(r8, Smi::FromInt(result)); __ SmiOr(r9, rcx, rdx); - __ SmiCompare(r8, r9); + __ cmpq(r8, r9); __ j(not_equal, exit); __ incq(rax); - __ SmiCompare(r11, rcx); + __ cmpq(r11, rcx); __ j(not_equal, exit); __ incq(rax); __ SmiOr(rcx, rcx, rdx); - __ SmiCompare(r8, rcx); + __ cmpq(r8, rcx); __ j(not_equal, exit); __ movq(rcx, r11); __ incq(rax); __ SmiOrConstant(r9, rcx, Smi::FromInt(y)); - __ SmiCompare(r8, r9); + __ cmpq(r8, r9); __ j(not_equal, exit); __ incq(rax); - __ SmiCompare(r11, rcx); + __ cmpq(r11, rcx); __ j(not_equal, exit); __ incq(rax); __ SmiOrConstant(rcx, rcx, Smi::FromInt(y)); - __ SmiCompare(r8, rcx); + __ cmpq(r8, rcx); __ j(not_equal, exit); } TEST(SmiOr) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = @@ -1606,7 +1653,9 @@ TEST(SmiOr) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1650,36 +1699,37 @@ void TestSmiXor(MacroAssembler* masm, Label* exit, int id, int x, int y) { __ Move(rdx, Smi::FromInt(y)); __ Move(r8, Smi::FromInt(result)); __ SmiXor(r9, rcx, rdx); - __ SmiCompare(r8, r9); + __ cmpq(r8, r9); __ j(not_equal, exit); __ incq(rax); - __ SmiCompare(r11, rcx); + __ cmpq(r11, rcx); __ j(not_equal, exit); __ incq(rax); __ SmiXor(rcx, rcx, rdx); - __ SmiCompare(r8, rcx); + __ cmpq(r8, rcx); __ j(not_equal, exit); __ movq(rcx, r11); __ incq(rax); __ SmiXorConstant(r9, rcx, Smi::FromInt(y)); - __ SmiCompare(r8, r9); + __ cmpq(r8, r9); __ j(not_equal, exit); __ incq(rax); - __ SmiCompare(r11, rcx); + __ cmpq(r11, rcx); __ j(not_equal, exit); __ incq(rax); __ SmiXorConstant(rcx, rcx, Smi::FromInt(y)); - __ SmiCompare(r8, rcx); + __ cmpq(r8, rcx); __ j(not_equal, exit); } TEST(SmiXor) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = @@ -1688,7 +1738,9 @@ TEST(SmiXor) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1731,21 +1783,22 @@ void TestSmiNot(MacroAssembler* masm, Label* exit, int id, int x) { __ movq(r11, rcx); __ SmiNot(r9, rcx); - __ SmiCompare(r9, r8); + __ cmpq(r9, r8); __ j(not_equal, exit); __ incq(rax); - __ SmiCompare(r11, rcx); + __ cmpq(r11, rcx); __ j(not_equal, exit); __ incq(rax); __ SmiNot(rcx, rcx); - __ SmiCompare(rcx, r8); + __ cmpq(rcx, r8); __ j(not_equal, exit); } TEST(SmiNot) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = @@ -1754,7 +1807,9 @@ TEST(SmiNot) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1797,7 +1852,7 @@ void TestSmiShiftLeft(MacroAssembler* masm, Label* exit, int id, int x) { __ SmiShiftLeftConstant(r9, rcx, shift); __ incq(rax); - __ SmiCompare(r9, r8); + __ cmpq(r9, r8); __ j(not_equal, exit); __ incq(rax); @@ -1805,7 +1860,7 @@ void TestSmiShiftLeft(MacroAssembler* masm, Label* exit, int id, int x) { __ SmiShiftLeftConstant(rcx, rcx, shift); __ incq(rax); - __ SmiCompare(rcx, r8); + __ cmpq(rcx, r8); __ j(not_equal, exit); __ incq(rax); @@ -1814,7 +1869,7 @@ void TestSmiShiftLeft(MacroAssembler* masm, Label* exit, int id, int x) { __ SmiShiftLeft(r9, rdx, rcx); __ incq(rax); - __ SmiCompare(r9, r8); + __ cmpq(r9, r8); __ j(not_equal, exit); __ incq(rax); @@ -1823,7 +1878,7 @@ void TestSmiShiftLeft(MacroAssembler* masm, Label* exit, int id, int x) { __ SmiShiftLeft(r9, rdx, r11); __ incq(rax); - __ SmiCompare(r9, r8); + __ cmpq(r9, r8); __ j(not_equal, exit); __ incq(rax); @@ -1832,7 +1887,7 @@ void TestSmiShiftLeft(MacroAssembler* masm, Label* exit, int id, int x) { __ SmiShiftLeft(rdx, rdx, r11); __ incq(rax); - __ SmiCompare(rdx, r8); + __ cmpq(rdx, r8); __ j(not_equal, exit); __ incq(rax); @@ -1841,6 +1896,7 @@ void TestSmiShiftLeft(MacroAssembler* masm, Label* exit, int id, int x) { TEST(SmiShiftLeft) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = @@ -1849,7 +1905,9 @@ TEST(SmiShiftLeft) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1893,7 +1951,7 @@ void TestSmiShiftLogicalRight(MacroAssembler* masm, __ SmiShiftLogicalRightConstant(r9, rcx, shift, exit); __ incq(rax); - __ SmiCompare(r9, r8); + __ cmpq(r9, r8); __ j(not_equal, exit); __ incq(rax); @@ -1902,7 +1960,7 @@ void TestSmiShiftLogicalRight(MacroAssembler* masm, __ SmiShiftLogicalRight(r9, rdx, rcx, exit); __ incq(rax); - __ SmiCompare(r9, r8); + __ cmpq(r9, r8); __ j(not_equal, exit); __ incq(rax); @@ -1911,7 +1969,7 @@ void TestSmiShiftLogicalRight(MacroAssembler* masm, __ SmiShiftLogicalRight(r9, rdx, r11, exit); __ incq(rax); - __ SmiCompare(r9, r8); + __ cmpq(r9, r8); __ j(not_equal, exit); __ incq(rax); @@ -1925,7 +1983,7 @@ void TestSmiShiftLogicalRight(MacroAssembler* masm, __ bind(&fail_ok); __ incq(rax); - __ SmiCompare(rcx, r11); + __ cmpq(rcx, r11); __ j(not_equal, exit); __ incq(rax); @@ -1936,7 +1994,7 @@ void TestSmiShiftLogicalRight(MacroAssembler* masm, __ bind(&fail_ok3); __ incq(rax); - __ SmiCompare(rcx, r11); + __ cmpq(rcx, r11); __ j(not_equal, exit); __ addq(rax, Immediate(3)); @@ -1946,6 +2004,7 @@ void TestSmiShiftLogicalRight(MacroAssembler* masm, TEST(SmiShiftLogicalRight) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = @@ -1954,7 +2013,9 @@ TEST(SmiShiftLogicalRight) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -1997,7 +2058,7 @@ void TestSmiShiftArithmeticRight(MacroAssembler* masm, __ Move(rcx, Smi::FromInt(x)); __ SmiShiftArithmeticRightConstant(rcx, rcx, shift); - __ SmiCompare(rcx, r8); + __ cmpq(rcx, r8); __ j(not_equal, exit); __ incq(rax); @@ -2005,7 +2066,7 @@ void TestSmiShiftArithmeticRight(MacroAssembler* masm, __ Move(r11, Smi::FromInt(shift)); __ SmiShiftArithmeticRight(rdx, rdx, r11); - __ SmiCompare(rdx, r8); + __ cmpq(rdx, r8); __ j(not_equal, exit); __ incq(rax); @@ -2014,6 +2075,7 @@ void TestSmiShiftArithmeticRight(MacroAssembler* masm, TEST(SmiShiftArithmeticRight) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = @@ -2022,7 +2084,9 @@ TEST(SmiShiftArithmeticRight) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -2062,14 +2126,14 @@ void TestPositiveSmiPowerUp(MacroAssembler* masm, Label* exit, int id, int x) { __ Move(rcx, Smi::FromInt(x)); __ movq(r11, rcx); __ PositiveSmiTimesPowerOfTwoToInteger64(rdx, rcx, power); - __ SmiCompare(rdx, r8); + __ cmpq(rdx, r8); __ j(not_equal, exit); __ incq(rax); - __ SmiCompare(r11, rcx); // rcx unchanged. + __ cmpq(r11, rcx); // rcx unchanged. __ j(not_equal, exit); __ incq(rax); __ PositiveSmiTimesPowerOfTwoToInteger64(rcx, rcx, power); - __ SmiCompare(rdx, r8); + __ cmpq(rdx, r8); __ j(not_equal, exit); __ incq(rax); } @@ -2077,15 +2141,18 @@ void TestPositiveSmiPowerUp(MacroAssembler* masm, Label* exit, int id, int x) { TEST(PositiveSmiTimesPowerOfTwoToInteger64) { + v8::internal::V8::Initialize(NULL); // Allocate an executable page of memory. size_t actual_size; byte* buffer = - static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 2, + static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize * 4, &actual_size, true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -2116,6 +2183,7 @@ TEST(PositiveSmiTimesPowerOfTwoToInteger64) { TEST(OperandOffset) { + v8::internal::V8::Initialize(NULL); int data[256]; for (int i = 0; i < 256; i++) { data[i] = i * 0x01010101; } @@ -2127,7 +2195,9 @@ TEST(OperandOffset) { true)); CHECK(buffer); HandleScope handles; - MacroAssembler assembler(buffer, static_cast<int>(actual_size)); + MacroAssembler assembler(Isolate::Current(), + buffer, + static_cast<int>(actual_size)); MacroAssembler* masm = &assembler; masm->set_allow_stub_calls(false); @@ -2150,7 +2220,7 @@ TEST(OperandOffset) { __ push(Immediate(0x108)); __ push(Immediate(0x109)); // <-- rsp // rbp = rsp[9] - // r12 = rsp[3] + // r15 = rsp[3] // rbx = rsp[5] // r13 = rsp[7] __ lea(r14, Operand(rsp, 3 * kPointerSize)); |