summaryrefslogtreecommitdiff
path: root/deps/v8/test/cctest/test-assembler-x64.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/cctest/test-assembler-x64.cc')
-rw-r--r--deps/v8/test/cctest/test-assembler-x64.cc215
1 files changed, 101 insertions, 114 deletions
diff --git a/deps/v8/test/cctest/test-assembler-x64.cc b/deps/v8/test/cctest/test-assembler-x64.cc
index a340322bd6..ae23af9f87 100644
--- a/deps/v8/test/cctest/test-assembler-x64.cc
+++ b/deps/v8/test/cctest/test-assembler-x64.cc
@@ -73,9 +73,8 @@ static const Register arg2 = rsi;
TEST(AssemblerX64ReturnOperation) {
CcTest::InitializeVM();
- size_t allocated;
- byte* buffer = AllocateAssemblerBuffer(&allocated);
- Assembler masm(AssemblerOptions{}, buffer, static_cast<int>(allocated));
+ auto buffer = AllocateAssemblerBuffer();
+ Assembler masm(AssemblerOptions{}, buffer->CreateView());
// Assemble a simple function that copies argument 2 and returns it.
__ movq(rax, arg2);
@@ -84,9 +83,9 @@ TEST(AssemblerX64ReturnOperation) {
CodeDesc desc;
masm.GetCode(CcTest::i_isolate(), &desc);
- MakeAssemblerBufferExecutable(buffer, allocated);
+ buffer->MakeExecutable();
// Call the function from C++.
- auto f = GeneratedCode<F2>::FromBuffer(CcTest::i_isolate(), buffer);
+ auto f = GeneratedCode<F2>::FromBuffer(CcTest::i_isolate(), buffer->start());
int result = f.Call(3, 2);
CHECK_EQ(2, result);
}
@@ -94,9 +93,8 @@ TEST(AssemblerX64ReturnOperation) {
TEST(AssemblerX64StackOperations) {
CcTest::InitializeVM();
- size_t allocated;
- byte* buffer = AllocateAssemblerBuffer(&allocated);
- Assembler masm(AssemblerOptions{}, buffer, static_cast<int>(allocated));
+ auto buffer = AllocateAssemblerBuffer();
+ Assembler masm(AssemblerOptions{}, buffer->CreateView());
// Assemble a simple function that copies argument 2 and returns it.
// We compile without stack frame pointers, so the gdb debugger shows
@@ -115,9 +113,9 @@ TEST(AssemblerX64StackOperations) {
CodeDesc desc;
masm.GetCode(CcTest::i_isolate(), &desc);
- MakeAssemblerBufferExecutable(buffer, allocated);
+ buffer->MakeExecutable();
// Call the function from C++.
- auto f = GeneratedCode<F2>::FromBuffer(CcTest::i_isolate(), buffer);
+ auto f = GeneratedCode<F2>::FromBuffer(CcTest::i_isolate(), buffer->start());
int result = f.Call(3, 2);
CHECK_EQ(2, result);
}
@@ -125,9 +123,8 @@ TEST(AssemblerX64StackOperations) {
TEST(AssemblerX64ArithmeticOperations) {
CcTest::InitializeVM();
- size_t allocated;
- byte* buffer = AllocateAssemblerBuffer(&allocated);
- Assembler masm(AssemblerOptions{}, buffer, static_cast<int>(allocated));
+ auto buffer = AllocateAssemblerBuffer();
+ Assembler masm(AssemblerOptions{}, buffer->CreateView());
// Assemble a simple function that adds arguments returning the sum.
__ movq(rax, arg2);
@@ -136,9 +133,9 @@ TEST(AssemblerX64ArithmeticOperations) {
CodeDesc desc;
masm.GetCode(CcTest::i_isolate(), &desc);
- MakeAssemblerBufferExecutable(buffer, allocated);
+ buffer->MakeExecutable();
// Call the function from C++.
- auto f = GeneratedCode<F2>::FromBuffer(CcTest::i_isolate(), buffer);
+ auto f = GeneratedCode<F2>::FromBuffer(CcTest::i_isolate(), buffer->start());
int result = f.Call(3, 2);
CHECK_EQ(5, result);
}
@@ -146,9 +143,8 @@ TEST(AssemblerX64ArithmeticOperations) {
TEST(AssemblerX64CmpbOperation) {
CcTest::InitializeVM();
- size_t allocated;
- byte* buffer = AllocateAssemblerBuffer(&allocated);
- Assembler masm(AssemblerOptions{}, buffer, static_cast<int>(allocated));
+ auto buffer = AllocateAssemblerBuffer();
+ Assembler masm(AssemblerOptions{}, buffer->CreateView());
// Assemble a function that compare argument byte returing 1 if equal else 0.
// On Windows, it compares rcx with rdx which does not require REX prefix;
@@ -164,9 +160,9 @@ TEST(AssemblerX64CmpbOperation) {
CodeDesc desc;
masm.GetCode(CcTest::i_isolate(), &desc);
- MakeAssemblerBufferExecutable(buffer, allocated);
+ buffer->MakeExecutable();
// Call the function from C++.
- auto f = GeneratedCode<F2>::FromBuffer(CcTest::i_isolate(), buffer);
+ auto f = GeneratedCode<F2>::FromBuffer(CcTest::i_isolate(), buffer->start());
int result = f.Call(0x1002, 0x2002);
CHECK_EQ(1, result);
result = f.Call(0x1002, 0x2003);
@@ -175,9 +171,8 @@ TEST(AssemblerX64CmpbOperation) {
TEST(AssemblerX64ImulOperation) {
CcTest::InitializeVM();
- size_t allocated;
- byte* buffer = AllocateAssemblerBuffer(&allocated);
- Assembler masm(AssemblerOptions{}, buffer, static_cast<int>(allocated));
+ auto buffer = AllocateAssemblerBuffer();
+ Assembler masm(AssemblerOptions{}, buffer->CreateView());
// Assemble a simple function that multiplies arguments returning the high
// word.
@@ -188,9 +183,9 @@ TEST(AssemblerX64ImulOperation) {
CodeDesc desc;
masm.GetCode(CcTest::i_isolate(), &desc);
- MakeAssemblerBufferExecutable(buffer, allocated);
+ buffer->MakeExecutable();
// Call the function from C++.
- auto f = GeneratedCode<F2>::FromBuffer(CcTest::i_isolate(), buffer);
+ auto f = GeneratedCode<F2>::FromBuffer(CcTest::i_isolate(), buffer->start());
int result = f.Call(3, 2);
CHECK_EQ(0, result);
result = f.Call(0x100000000l, 0x100000000l);
@@ -202,9 +197,8 @@ TEST(AssemblerX64ImulOperation) {
TEST(AssemblerX64testbwqOperation) {
CcTest::InitializeVM();
v8::HandleScope scope(CcTest::isolate());
- size_t allocated;
- byte* buffer = AllocateAssemblerBuffer(&allocated);
- Assembler masm(AssemblerOptions{}, buffer, static_cast<int>(allocated));
+ auto buffer = AllocateAssemblerBuffer();
+ Assembler masm(AssemblerOptions{}, buffer->CreateView());
__ pushq(rbx);
__ pushq(rdi);
@@ -359,18 +353,17 @@ TEST(AssemblerX64testbwqOperation) {
CodeDesc desc;
masm.GetCode(CcTest::i_isolate(), &desc);
- MakeAssemblerBufferExecutable(buffer, allocated);
+ buffer->MakeExecutable();
// Call the function from C++.
- auto f = GeneratedCode<F2>::FromBuffer(CcTest::i_isolate(), buffer);
+ auto f = GeneratedCode<F2>::FromBuffer(CcTest::i_isolate(), buffer->start());
int result = f.Call(0, 0);
CHECK_EQ(1, result);
}
TEST(AssemblerX64XchglOperations) {
CcTest::InitializeVM();
- size_t allocated;
- byte* buffer = AllocateAssemblerBuffer(&allocated);
- Assembler masm(AssemblerOptions{}, buffer, static_cast<int>(allocated));
+ auto buffer = AllocateAssemblerBuffer();
+ Assembler masm(AssemblerOptions{}, buffer->CreateView());
__ movq(rax, Operand(arg1, 0));
__ movq(r11, Operand(arg2, 0));
@@ -381,11 +374,11 @@ TEST(AssemblerX64XchglOperations) {
CodeDesc desc;
masm.GetCode(CcTest::i_isolate(), &desc);
- MakeAssemblerBufferExecutable(buffer, allocated);
+ buffer->MakeExecutable();
// Call the function from C++.
uint64_t left = V8_2PART_UINT64_C(0x10000000, 20000000);
uint64_t right = V8_2PART_UINT64_C(0x30000000, 40000000);
- auto f = GeneratedCode<F4>::FromBuffer(CcTest::i_isolate(), buffer);
+ auto f = GeneratedCode<F4>::FromBuffer(CcTest::i_isolate(), buffer->start());
uint64_t result = f.Call(&left, &right);
CHECK_EQ(V8_2PART_UINT64_C(0x00000000, 40000000), left);
CHECK_EQ(V8_2PART_UINT64_C(0x00000000, 20000000), right);
@@ -395,9 +388,8 @@ TEST(AssemblerX64XchglOperations) {
TEST(AssemblerX64OrlOperations) {
CcTest::InitializeVM();
- size_t allocated;
- byte* buffer = AllocateAssemblerBuffer(&allocated);
- Assembler masm(AssemblerOptions{}, buffer, static_cast<int>(allocated));
+ auto buffer = AllocateAssemblerBuffer();
+ Assembler masm(AssemblerOptions{}, buffer->CreateView());
__ movq(rax, Operand(arg2, 0));
__ orl(Operand(arg1, 0), rax);
@@ -405,11 +397,11 @@ TEST(AssemblerX64OrlOperations) {
CodeDesc desc;
masm.GetCode(CcTest::i_isolate(), &desc);
- MakeAssemblerBufferExecutable(buffer, allocated);
+ buffer->MakeExecutable();
// Call the function from C++.
uint64_t left = V8_2PART_UINT64_C(0x10000000, 20000000);
uint64_t right = V8_2PART_UINT64_C(0x30000000, 40000000);
- auto f = GeneratedCode<F4>::FromBuffer(CcTest::i_isolate(), buffer);
+ auto f = GeneratedCode<F4>::FromBuffer(CcTest::i_isolate(), buffer->start());
uint64_t result = f.Call(&left, &right);
CHECK_EQ(V8_2PART_UINT64_C(0x10000000, 60000000), left);
USE(result);
@@ -418,9 +410,8 @@ TEST(AssemblerX64OrlOperations) {
TEST(AssemblerX64RollOperations) {
CcTest::InitializeVM();
- size_t allocated;
- byte* buffer = AllocateAssemblerBuffer(&allocated);
- Assembler masm(AssemblerOptions{}, buffer, static_cast<int>(allocated));
+ auto buffer = AllocateAssemblerBuffer();
+ Assembler masm(AssemblerOptions{}, buffer->CreateView());
__ movq(rax, arg1);
__ roll(rax, Immediate(1));
@@ -428,10 +419,10 @@ TEST(AssemblerX64RollOperations) {
CodeDesc desc;
masm.GetCode(CcTest::i_isolate(), &desc);
- MakeAssemblerBufferExecutable(buffer, allocated);
+ buffer->MakeExecutable();
// Call the function from C++.
uint64_t src = V8_2PART_UINT64_C(0x10000000, C0000000);
- auto f = GeneratedCode<F5>::FromBuffer(CcTest::i_isolate(), buffer);
+ auto f = GeneratedCode<F5>::FromBuffer(CcTest::i_isolate(), buffer->start());
uint64_t result = f.Call(src);
CHECK_EQ(V8_2PART_UINT64_C(0x00000000, 80000001), result);
}
@@ -439,9 +430,8 @@ TEST(AssemblerX64RollOperations) {
TEST(AssemblerX64SublOperations) {
CcTest::InitializeVM();
- size_t allocated;
- byte* buffer = AllocateAssemblerBuffer(&allocated);
- Assembler masm(AssemblerOptions{}, buffer, static_cast<int>(allocated));
+ auto buffer = AllocateAssemblerBuffer();
+ Assembler masm(AssemblerOptions{}, buffer->CreateView());
__ movq(rax, Operand(arg2, 0));
__ subl(Operand(arg1, 0), rax);
@@ -449,11 +439,11 @@ TEST(AssemblerX64SublOperations) {
CodeDesc desc;
masm.GetCode(CcTest::i_isolate(), &desc);
- MakeAssemblerBufferExecutable(buffer, allocated);
+ buffer->MakeExecutable();
// Call the function from C++.
uint64_t left = V8_2PART_UINT64_C(0x10000000, 20000000);
uint64_t right = V8_2PART_UINT64_C(0x30000000, 40000000);
- auto f = GeneratedCode<F4>::FromBuffer(CcTest::i_isolate(), buffer);
+ auto f = GeneratedCode<F4>::FromBuffer(CcTest::i_isolate(), buffer->start());
uint64_t result = f.Call(&left, &right);
CHECK_EQ(V8_2PART_UINT64_C(0x10000000, E0000000), left);
USE(result);
@@ -462,9 +452,8 @@ TEST(AssemblerX64SublOperations) {
TEST(AssemblerX64TestlOperations) {
CcTest::InitializeVM();
- size_t allocated;
- byte* buffer = AllocateAssemblerBuffer(&allocated);
- Assembler masm(AssemblerOptions{}, buffer, static_cast<int>(allocated));
+ auto buffer = AllocateAssemblerBuffer();
+ Assembler masm(AssemblerOptions{}, buffer->CreateView());
// Set rax with the ZF flag of the testl instruction.
Label done;
@@ -478,11 +467,11 @@ TEST(AssemblerX64TestlOperations) {
CodeDesc desc;
masm.GetCode(CcTest::i_isolate(), &desc);
- MakeAssemblerBufferExecutable(buffer, allocated);
+ buffer->MakeExecutable();
// Call the function from C++.
uint64_t left = V8_2PART_UINT64_C(0x10000000, 20000000);
uint64_t right = V8_2PART_UINT64_C(0x30000000, 00000000);
- auto f = GeneratedCode<F4>::FromBuffer(CcTest::i_isolate(), buffer);
+ auto f = GeneratedCode<F4>::FromBuffer(CcTest::i_isolate(), buffer->start());
uint64_t result = f.Call(&left, &right);
CHECK_EQ(1u, result);
}
@@ -490,9 +479,8 @@ TEST(AssemblerX64TestlOperations) {
TEST(AssemblerX64TestwOperations) {
typedef uint16_t(F)(uint16_t * x);
CcTest::InitializeVM();
- size_t allocated;
- byte* buffer = AllocateAssemblerBuffer(&allocated);
- Assembler masm(AssemblerOptions{}, buffer, static_cast<int>(allocated));
+ auto buffer = AllocateAssemblerBuffer();
+ Assembler masm(AssemblerOptions{}, buffer->CreateView());
// Set rax with the ZF flag of the testl instruction.
Label done;
@@ -505,19 +493,18 @@ TEST(AssemblerX64TestwOperations) {
CodeDesc desc;
masm.GetCode(CcTest::i_isolate(), &desc);
- MakeAssemblerBufferExecutable(buffer, allocated);
+ buffer->MakeExecutable();
// Call the function from C++.
uint16_t operand = 0x8000;
- auto f = GeneratedCode<F>::FromBuffer(CcTest::i_isolate(), buffer);
+ auto f = GeneratedCode<F>::FromBuffer(CcTest::i_isolate(), buffer->start());
uint16_t result = f.Call(&operand);
CHECK_EQ(1u, result);
}
TEST(AssemblerX64XorlOperations) {
CcTest::InitializeVM();
- size_t allocated;
- byte* buffer = AllocateAssemblerBuffer(&allocated);
- Assembler masm(AssemblerOptions{}, buffer, static_cast<int>(allocated));
+ auto buffer = AllocateAssemblerBuffer();
+ Assembler masm(AssemblerOptions{}, buffer->CreateView());
__ movq(rax, Operand(arg2, 0));
__ xorl(Operand(arg1, 0), rax);
@@ -525,11 +512,11 @@ TEST(AssemblerX64XorlOperations) {
CodeDesc desc;
masm.GetCode(CcTest::i_isolate(), &desc);
- MakeAssemblerBufferExecutable(buffer, allocated);
+ buffer->MakeExecutable();
// Call the function from C++.
uint64_t left = V8_2PART_UINT64_C(0x10000000, 20000000);
uint64_t right = V8_2PART_UINT64_C(0x30000000, 60000000);
- auto f = GeneratedCode<F4>::FromBuffer(CcTest::i_isolate(), buffer);
+ auto f = GeneratedCode<F4>::FromBuffer(CcTest::i_isolate(), buffer->start());
uint64_t result = f.Call(&left, &right);
CHECK_EQ(V8_2PART_UINT64_C(0x10000000, 40000000), left);
USE(result);
@@ -538,9 +525,8 @@ TEST(AssemblerX64XorlOperations) {
TEST(AssemblerX64MemoryOperands) {
CcTest::InitializeVM();
- size_t allocated;
- byte* buffer = AllocateAssemblerBuffer(&allocated);
- Assembler masm(AssemblerOptions{}, buffer, static_cast<int>(allocated));
+ auto buffer = AllocateAssemblerBuffer();
+ Assembler masm(AssemblerOptions{}, buffer->CreateView());
// Assemble a simple function that copies argument 2 and returns it.
__ pushq(rbp);
@@ -561,9 +547,9 @@ TEST(AssemblerX64MemoryOperands) {
CodeDesc desc;
masm.GetCode(CcTest::i_isolate(), &desc);
- MakeAssemblerBufferExecutable(buffer, allocated);
+ buffer->MakeExecutable();
// Call the function from C++.
- auto f = GeneratedCode<F2>::FromBuffer(CcTest::i_isolate(), buffer);
+ auto f = GeneratedCode<F2>::FromBuffer(CcTest::i_isolate(), buffer->start());
int result = f.Call(3, 2);
CHECK_EQ(3, result);
}
@@ -571,9 +557,8 @@ TEST(AssemblerX64MemoryOperands) {
TEST(AssemblerX64ControlFlow) {
CcTest::InitializeVM();
- size_t allocated;
- byte* buffer = AllocateAssemblerBuffer(&allocated);
- Assembler masm(AssemblerOptions{}, buffer, static_cast<int>(allocated));
+ auto buffer = AllocateAssemblerBuffer();
+ Assembler masm(AssemblerOptions{}, buffer->CreateView());
// Assemble a simple function that copies argument 1 and returns it.
__ pushq(rbp);
@@ -589,9 +574,9 @@ TEST(AssemblerX64ControlFlow) {
CodeDesc desc;
masm.GetCode(CcTest::i_isolate(), &desc);
- MakeAssemblerBufferExecutable(buffer, allocated);
+ buffer->MakeExecutable();
// Call the function from C++.
- auto f = GeneratedCode<F2>::FromBuffer(CcTest::i_isolate(), buffer);
+ auto f = GeneratedCode<F2>::FromBuffer(CcTest::i_isolate(), buffer->start());
int result = f.Call(3, 2);
CHECK_EQ(3, result);
}
@@ -599,9 +584,8 @@ TEST(AssemblerX64ControlFlow) {
TEST(AssemblerX64LoopImmediates) {
CcTest::InitializeVM();
- size_t allocated;
- byte* buffer = AllocateAssemblerBuffer(&allocated);
- Assembler masm(AssemblerOptions{}, buffer, static_cast<int>(allocated));
+ auto buffer = AllocateAssemblerBuffer();
+ Assembler masm(AssemblerOptions{}, buffer->CreateView());
// Assemble two loops using rax as counter, and verify the ending counts.
Label Fail;
@@ -639,9 +623,9 @@ TEST(AssemblerX64LoopImmediates) {
CodeDesc desc;
masm.GetCode(CcTest::i_isolate(), &desc);
- MakeAssemblerBufferExecutable(buffer, allocated);
+ buffer->MakeExecutable();
// Call the function from C++.
- auto f = GeneratedCode<F0>::FromBuffer(CcTest::i_isolate(), buffer);
+ auto f = GeneratedCode<F0>::FromBuffer(CcTest::i_isolate(), buffer->start());
int result = f.Call();
CHECK_EQ(1, result);
}
@@ -694,7 +678,7 @@ TEST(AssemblerX64LabelChaining) {
// Test chaining of label usages within instructions (issue 1644).
CcTest::InitializeVM();
v8::HandleScope scope(CcTest::isolate());
- Assembler masm(AssemblerOptions{}, nullptr, 0);
+ Assembler masm(AssemblerOptions{});
Label target;
__ j(equal, &target);
@@ -709,7 +693,8 @@ TEST(AssemblerMultiByteNop) {
v8::HandleScope scope(CcTest::isolate());
byte buffer[1024];
Isolate* isolate = CcTest::i_isolate();
- Assembler masm(AssemblerOptions{}, buffer, sizeof(buffer));
+ Assembler masm(AssemblerOptions{},
+ ExternalAssemblerBuffer(buffer, sizeof(buffer)));
__ pushq(rbx);
__ pushq(rcx);
__ pushq(rdx);
@@ -780,7 +765,8 @@ void DoSSE2(const v8::FunctionCallbackInfo<v8::Value>& args) {
CHECK_EQ(ELEMENT_COUNT, vec->Length());
Isolate* isolate = CcTest::i_isolate();
- Assembler masm(AssemblerOptions{}, buffer, sizeof(buffer));
+ Assembler masm(AssemblerOptions{},
+ ExternalAssemblerBuffer(buffer, sizeof(buffer)));
// Remove return address from the stack for fix stack frame alignment.
__ popq(rcx);
@@ -869,7 +855,8 @@ TEST(AssemblerX64Extractps) {
v8::HandleScope scope(CcTest::isolate());
byte buffer[256];
Isolate* isolate = CcTest::i_isolate();
- Assembler masm(AssemblerOptions{}, buffer, sizeof(buffer));
+ Assembler masm(AssemblerOptions{},
+ ExternalAssemblerBuffer(buffer, sizeof(buffer)));
{
CpuFeatureScope fscope2(&masm, SSE4_1);
__ extractps(rax, xmm0, 0x1);
@@ -899,8 +886,8 @@ TEST(AssemblerX64SSE) {
Isolate* isolate = reinterpret_cast<Isolate*>(CcTest::isolate());
HandleScope scope(isolate);
v8::internal::byte buffer[256];
- MacroAssembler masm(isolate, buffer, sizeof(buffer),
- v8::internal::CodeObjectRequired::kYes);
+ MacroAssembler masm(isolate, v8::internal::CodeObjectRequired::kYes,
+ ExternalAssemblerBuffer(buffer, sizeof(buffer)));
{
__ shufps(xmm0, xmm0, 0x0); // brocast first argument
__ shufps(xmm1, xmm1, 0x0); // brocast second argument
@@ -933,8 +920,8 @@ TEST(AssemblerX64SSE3) {
Isolate* isolate = reinterpret_cast<Isolate*>(CcTest::isolate());
HandleScope scope(isolate);
v8::internal::byte buffer[256];
- MacroAssembler masm(isolate, buffer, sizeof(buffer),
- v8::internal::CodeObjectRequired::kYes);
+ MacroAssembler masm(isolate, v8::internal::CodeObjectRequired::kYes,
+ ExternalAssemblerBuffer(buffer, sizeof(buffer)));
{
CpuFeatureScope fscope(&masm, SSE3);
__ shufps(xmm0, xmm0, 0x0); // brocast first argument
@@ -965,8 +952,8 @@ TEST(AssemblerX64FMA_sd) {
Isolate* isolate = reinterpret_cast<Isolate*>(CcTest::isolate());
HandleScope scope(isolate);
v8::internal::byte buffer[1024];
- MacroAssembler masm(isolate, buffer, sizeof(buffer),
- v8::internal::CodeObjectRequired::kYes);
+ MacroAssembler masm(isolate, v8::internal::CodeObjectRequired::kYes,
+ ExternalAssemblerBuffer(buffer, sizeof(buffer)));
{
CpuFeatureScope fscope(&masm, FMA3);
Label exit;
@@ -1191,8 +1178,8 @@ TEST(AssemblerX64FMA_ss) {
Isolate* isolate = reinterpret_cast<Isolate*>(CcTest::isolate());
HandleScope scope(isolate);
v8::internal::byte buffer[1024];
- MacroAssembler masm(isolate, buffer, sizeof(buffer),
- v8::internal::CodeObjectRequired::kYes);
+ MacroAssembler masm(isolate, v8::internal::CodeObjectRequired::kYes,
+ ExternalAssemblerBuffer(buffer, sizeof(buffer)));
{
CpuFeatureScope fscope(&masm, FMA3);
Label exit;
@@ -1415,7 +1402,8 @@ TEST(AssemblerX64SSE_ss) {
Isolate* isolate = reinterpret_cast<Isolate*>(CcTest::isolate());
HandleScope scope(isolate);
v8::internal::byte buffer[1024];
- Assembler masm(AssemblerOptions{}, buffer, sizeof(buffer));
+ Assembler masm(AssemblerOptions{},
+ ExternalAssemblerBuffer(buffer, sizeof(buffer)));
{
Label exit;
// arguments in xmm0, xmm1 and xmm2
@@ -1493,7 +1481,8 @@ TEST(AssemblerX64AVX_ss) {
Isolate* isolate = reinterpret_cast<Isolate*>(CcTest::isolate());
HandleScope scope(isolate);
v8::internal::byte buffer[1024];
- Assembler masm(AssemblerOptions{}, buffer, sizeof(buffer));
+ Assembler masm(AssemblerOptions{},
+ ExternalAssemblerBuffer(buffer, sizeof(buffer)));
{
CpuFeatureScope avx_scope(&masm, AVX);
Label exit;
@@ -1578,7 +1567,8 @@ TEST(AssemblerX64AVX_sd) {
Isolate* isolate = reinterpret_cast<Isolate*>(CcTest::isolate());
HandleScope scope(isolate);
v8::internal::byte buffer[1024];
- Assembler masm(AssemblerOptions{}, buffer, sizeof(buffer));
+ Assembler masm(AssemblerOptions{},
+ ExternalAssemblerBuffer(buffer, sizeof(buffer)));
{
CpuFeatureScope avx_scope(&masm, AVX);
Label exit;
@@ -1817,8 +1807,8 @@ TEST(AssemblerX64BMI1) {
Isolate* isolate = reinterpret_cast<Isolate*>(CcTest::isolate());
HandleScope scope(isolate);
v8::internal::byte buffer[1024];
- MacroAssembler masm(isolate, buffer, sizeof(buffer),
- v8::internal::CodeObjectRequired::kYes);
+ MacroAssembler masm(isolate, v8::internal::CodeObjectRequired::kYes,
+ ExternalAssemblerBuffer(buffer, sizeof(buffer)));
{
CpuFeatureScope fscope(&masm, BMI1);
Label exit;
@@ -2007,8 +1997,8 @@ TEST(AssemblerX64LZCNT) {
Isolate* isolate = reinterpret_cast<Isolate*>(CcTest::isolate());
HandleScope scope(isolate);
v8::internal::byte buffer[256];
- MacroAssembler masm(isolate, buffer, sizeof(buffer),
- v8::internal::CodeObjectRequired::kYes);
+ MacroAssembler masm(isolate, v8::internal::CodeObjectRequired::kYes,
+ ExternalAssemblerBuffer(buffer, sizeof(buffer)));
{
CpuFeatureScope fscope(&masm, LZCNT);
Label exit;
@@ -2067,8 +2057,8 @@ TEST(AssemblerX64POPCNT) {
Isolate* isolate = reinterpret_cast<Isolate*>(CcTest::isolate());
HandleScope scope(isolate);
v8::internal::byte buffer[256];
- MacroAssembler masm(isolate, buffer, sizeof(buffer),
- v8::internal::CodeObjectRequired::kYes);
+ MacroAssembler masm(isolate, v8::internal::CodeObjectRequired::kYes,
+ ExternalAssemblerBuffer(buffer, sizeof(buffer)));
{
CpuFeatureScope fscope(&masm, POPCNT);
Label exit;
@@ -2127,8 +2117,8 @@ TEST(AssemblerX64BMI2) {
Isolate* isolate = reinterpret_cast<Isolate*>(CcTest::isolate());
HandleScope scope(isolate);
v8::internal::byte buffer[2048];
- MacroAssembler masm(isolate, buffer, sizeof(buffer),
- v8::internal::CodeObjectRequired::kYes);
+ MacroAssembler masm(isolate, v8::internal::CodeObjectRequired::kYes,
+ ExternalAssemblerBuffer(buffer, sizeof(buffer)));
{
CpuFeatureScope fscope(&masm, BMI2);
Label exit;
@@ -2388,8 +2378,7 @@ TEST(AssemblerX64JumpTables1) {
CcTest::InitializeVM();
Isolate* isolate = reinterpret_cast<Isolate*>(CcTest::isolate());
HandleScope scope(isolate);
- MacroAssembler masm(isolate, nullptr, 0,
- v8::internal::CodeObjectRequired::kYes);
+ MacroAssembler masm(isolate, v8::internal::CodeObjectRequired::kYes);
const int kNumCases = 512;
int values[kNumCases];
@@ -2436,8 +2425,7 @@ TEST(AssemblerX64JumpTables2) {
CcTest::InitializeVM();
Isolate* isolate = reinterpret_cast<Isolate*>(CcTest::isolate());
HandleScope scope(isolate);
- MacroAssembler masm(isolate, nullptr, 0,
- v8::internal::CodeObjectRequired::kYes);
+ MacroAssembler masm(isolate, v8::internal::CodeObjectRequired::kYes);
const int kNumCases = 512;
int values[kNumCases];
@@ -2481,9 +2469,8 @@ TEST(AssemblerX64JumpTables2) {
TEST(AssemblerX64PslldWithXmm15) {
CcTest::InitializeVM();
- size_t allocated;
- byte* buffer = AllocateAssemblerBuffer(&allocated);
- Assembler masm(AssemblerOptions{}, buffer, static_cast<int>(allocated));
+ auto buffer = AllocateAssemblerBuffer();
+ Assembler masm(AssemblerOptions{}, buffer->CreateView());
__ movq(xmm15, arg1);
__ pslld(xmm15, 1);
@@ -2492,8 +2479,8 @@ TEST(AssemblerX64PslldWithXmm15) {
CodeDesc desc;
masm.GetCode(CcTest::i_isolate(), &desc);
- MakeAssemblerBufferExecutable(buffer, allocated);
- auto f = GeneratedCode<F5>::FromBuffer(CcTest::i_isolate(), buffer);
+ buffer->MakeExecutable();
+ auto f = GeneratedCode<F5>::FromBuffer(CcTest::i_isolate(), buffer->start());
uint64_t result = f.Call(uint64_t{0x1122334455667788});
CHECK_EQ(uint64_t{0x22446688AACCEF10}, result);
}
@@ -2506,8 +2493,8 @@ TEST(AssemblerX64vmovups) {
Isolate* isolate = reinterpret_cast<Isolate*>(CcTest::isolate());
HandleScope scope(isolate);
v8::internal::byte buffer[256];
- MacroAssembler masm(isolate, buffer, sizeof(buffer),
- v8::internal::CodeObjectRequired::kYes);
+ MacroAssembler masm(isolate, v8::internal::CodeObjectRequired::kYes,
+ ExternalAssemblerBuffer(buffer, sizeof(buffer)));
{
CpuFeatureScope avx_scope(&masm, AVX);
__ shufps(xmm0, xmm0, 0x0); // brocast first argument