Index: test/cctest/test-macro-assembler-x64.cc |
diff --git a/test/cctest/test-macro-assembler-x64.cc b/test/cctest/test-macro-assembler-x64.cc |
index 78bc723a7eab28cb928602f34a0c2b223e394a1c..65d46c6f1685bf65964bde75e0fb1d3bd962c494 100644 |
--- a/test/cctest/test-macro-assembler-x64.cc |
+++ b/test/cctest/test-macro-assembler-x64.cc |
@@ -35,49 +35,50 @@ |
#include "serialize.h" |
#include "cctest.h" |
-using v8::internal::Assembler; |
-using v8::internal::CodeDesc; |
-using v8::internal::Condition; |
-using v8::internal::FUNCTION_CAST; |
-using v8::internal::HandleScope; |
-using v8::internal::Immediate; |
-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::rcx; |
-using v8::internal::rdi; |
-using v8::internal::rdx; |
-using v8::internal::rsi; |
-using v8::internal::rsp; |
-using v8::internal::times_pointer_size; |
+namespace i = v8::internal; |
+using i::Assembler; |
+using i::CodeDesc; |
+using i::Condition; |
+using i::FUNCTION_CAST; |
+using i::HandleScope; |
+using i::Immediate; |
+using i::Isolate; |
+using i::Label; |
+using i::MacroAssembler; |
+using i::OS; |
+using i::Operand; |
+using i::RelocInfo; |
+using i::Smi; |
+using i::SmiIndex; |
+using i::byte; |
+using i::carry; |
+using i::greater; |
+using i::greater_equal; |
+using i::kIntSize; |
+using i::kPointerSize; |
+using i::kSmiTagMask; |
+using i::kSmiValueSize; |
+using i::less_equal; |
+using i::negative; |
+using i::not_carry; |
+using i::not_equal; |
+using i::not_zero; |
+using i::positive; |
+using i::r11; |
+using i::r13; |
+using i::r14; |
+using i::r15; |
+using i::r8; |
+using i::r9; |
+using i::rax; |
+using i::rbp; |
+using i::rbx; |
+using i::rcx; |
+using i::rdi; |
+using i::rdx; |
+using i::rsi; |
+using i::rsp; |
+using i::times_pointer_size; |
// Test the x64 assembler by compiling some simple functions into |
// a buffer and executing them. These tests do not initialize the |
@@ -95,8 +96,8 @@ typedef int (*F0)(); |
static void EntryCode(MacroAssembler* masm) { |
// Smi constant register is callee save. |
- __ push(v8::internal::kSmiConstantRegister); |
- __ push(v8::internal::kRootRegister); |
+ __ push(i::kSmiConstantRegister); |
+ __ push(i::kRootRegister); |
__ InitializeSmiConstantRegister(); |
__ InitializeRootRegister(); |
} |
@@ -105,11 +106,11 @@ static void EntryCode(MacroAssembler* masm) { |
static void ExitCode(MacroAssembler* masm) { |
// Return -1 if kSmiConstantRegister was clobbered during the test. |
__ Move(rdx, Smi::FromInt(1)); |
- __ cmpq(rdx, v8::internal::kSmiConstantRegister); |
+ __ cmpq(rdx, i::kSmiConstantRegister); |
__ movq(rdx, Immediate(-1)); |
__ cmovq(not_equal, rax, rdx); |
- __ pop(v8::internal::kRootRegister); |
- __ pop(v8::internal::kSmiConstantRegister); |
+ __ pop(i::kRootRegister); |
+ __ pop(i::kSmiConstantRegister); |
} |
@@ -150,7 +151,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); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
@@ -238,7 +239,7 @@ 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); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = |
@@ -290,7 +291,7 @@ TEST(SmiCompare) { |
TEST(Integer32ToSmi) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
@@ -419,7 +420,7 @@ void TestI64PlusConstantToSmi(MacroAssembler* masm, |
TEST(Integer64PlusConstantToSmi) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
@@ -464,7 +465,7 @@ TEST(Integer64PlusConstantToSmi) { |
TEST(SmiCheck) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
@@ -712,7 +713,7 @@ void TestSmiNeg(MacroAssembler* masm, Label* exit, int id, int x) { |
TEST(SmiNeg) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = |
@@ -803,7 +804,7 @@ static void SmiAddTest(MacroAssembler* masm, |
TEST(SmiAdd) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
@@ -873,15 +874,22 @@ static void SmiSubTest(MacroAssembler* masm, |
__ cmpq(rcx, r8); |
__ j(not_equal, exit); |
+ i::SmiExecutionMode mode = static_cast<i::SmiExecutionMode>( |
+ i::SMI_NEED_RESERVE_SOURCES | i::SMI_BAILOUT_ON_OVERFLOW); |
__ Move(rcx, Smi::FromInt(first)); |
- |
__ incq(rax); // Test 4. |
- __ SmiSubConstant(r9, rcx, Smi::FromInt(second), exit); |
- __ cmpq(r9, r8); |
+ __ SmiSubConstant(rcx, rcx, Smi::FromInt(second), mode, exit); |
+ __ cmpq(rcx, r8); |
__ j(not_equal, exit); |
+ mode = static_cast<i::SmiExecutionMode>( |
+ i::SMI_NEED_RESERVE_SOURCES | i::SMI_BAILOUT_ON_NO_OVERFLOW); |
+ __ Move(rcx, Smi::FromInt(first)); |
+ Label done; |
__ incq(rax); // Test 5. |
- __ SmiSubConstant(rcx, rcx, Smi::FromInt(second), exit); |
+ __ SmiSubConstant(rcx, rcx, Smi::FromInt(second), mode, &done); |
+ __ jmp(exit); |
+ __ bind(&done); |
__ cmpq(rcx, r8); |
__ j(not_equal, exit); |
} |
@@ -921,21 +929,12 @@ static void SmiSubOverflowTest(MacroAssembler* masm, |
} |
__ movq(rcx, r11); |
+ i::SmiExecutionMode mode = static_cast<i::SmiExecutionMode>( |
+ i::SMI_NEED_RESERVE_SOURCES | i::SMI_BAILOUT_ON_OVERFLOW); |
{ |
Label overflow_ok; |
__ incq(rax); |
- __ SmiSubConstant(r9, rcx, Smi::FromInt(y_min), &overflow_ok); |
- __ jmp(exit); |
- __ bind(&overflow_ok); |
- __ incq(rax); |
- __ cmpq(rcx, r11); |
- __ j(not_equal, exit); |
- } |
- |
- { |
- Label overflow_ok; |
- __ incq(rax); |
- __ SmiSubConstant(rcx, rcx, Smi::FromInt(y_min), &overflow_ok); |
+ __ SmiSubConstant(rcx, rcx, Smi::FromInt(y_min), mode, &overflow_ok); |
__ jmp(exit); |
__ bind(&overflow_ok); |
__ incq(rax); |
@@ -971,18 +970,7 @@ static void SmiSubOverflowTest(MacroAssembler* masm, |
{ |
Label overflow_ok; |
__ incq(rax); |
- __ SmiSubConstant(r9, rcx, Smi::FromInt(y_max), &overflow_ok); |
- __ jmp(exit); |
- __ bind(&overflow_ok); |
- __ incq(rax); |
- __ cmpq(rcx, r11); |
- __ j(not_equal, exit); |
- } |
- |
- { |
- Label overflow_ok; |
- __ incq(rax); |
- __ SmiSubConstant(rcx, rcx, Smi::FromInt(y_max), &overflow_ok); |
+ __ SmiSubConstant(rcx, rcx, Smi::FromInt(y_max), mode, &overflow_ok); |
__ jmp(exit); |
__ bind(&overflow_ok); |
__ incq(rax); |
@@ -993,7 +981,7 @@ static void SmiSubOverflowTest(MacroAssembler* masm, |
TEST(SmiSub) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = |
@@ -1085,7 +1073,7 @@ void TestSmiMul(MacroAssembler* masm, Label* exit, int id, int x, int y) { |
TEST(SmiMul) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = static_cast<byte*>(OS::Allocate(Assembler::kMinimalBufferSize, |
@@ -1191,7 +1179,7 @@ void TestSmiDiv(MacroAssembler* masm, Label* exit, int id, int x, int y) { |
TEST(SmiDiv) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = |
@@ -1302,7 +1290,7 @@ void TestSmiMod(MacroAssembler* masm, Label* exit, int id, int x, int y) { |
TEST(SmiMod) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = |
@@ -1400,7 +1388,7 @@ void TestSmiIndex(MacroAssembler* masm, Label* exit, int id, int x) { |
TEST(SmiIndex) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = |
@@ -1470,7 +1458,7 @@ void TestSelectNonSmi(MacroAssembler* masm, Label* exit, int id, int x, int y) { |
TEST(SmiSelectNonSmi) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = |
@@ -1550,7 +1538,7 @@ void TestSmiAnd(MacroAssembler* masm, Label* exit, int id, int x, int y) { |
TEST(SmiAnd) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = |
@@ -1632,7 +1620,7 @@ void TestSmiOr(MacroAssembler* masm, Label* exit, int id, int x, int y) { |
TEST(SmiOr) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = |
@@ -1716,7 +1704,7 @@ void TestSmiXor(MacroAssembler* masm, Label* exit, int id, int x, int y) { |
TEST(SmiXor) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = |
@@ -1784,7 +1772,7 @@ void TestSmiNot(MacroAssembler* masm, Label* exit, int id, int x) { |
TEST(SmiNot) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = |
@@ -1881,7 +1869,7 @@ void TestSmiShiftLeft(MacroAssembler* masm, Label* exit, int id, int x) { |
TEST(SmiShiftLeft) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = |
@@ -1988,7 +1976,7 @@ void TestSmiShiftLogicalRight(MacroAssembler* masm, |
TEST(SmiShiftLogicalRight) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = |
@@ -2058,7 +2046,7 @@ void TestSmiShiftArithmeticRight(MacroAssembler* masm, |
TEST(SmiShiftArithmeticRight) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = |
@@ -2123,7 +2111,7 @@ void TestPositiveSmiPowerUp(MacroAssembler* masm, Label* exit, int id, int x) { |
TEST(PositiveSmiTimesPowerOfTwoToInteger64) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
// Allocate an executable page of memory. |
size_t actual_size; |
byte* buffer = |
@@ -2164,7 +2152,7 @@ TEST(PositiveSmiTimesPowerOfTwoToInteger64) { |
TEST(OperandOffset) { |
- v8::internal::V8::Initialize(NULL); |
+ i::V8::Initialize(NULL); |
int data[256]; |
for (int i = 0; i < 256; i++) { data[i] = i * 0x01010101; } |