| Index: test/cctest/compiler/test-code-assembler.cc
|
| diff --git a/test/cctest/compiler/test-code-assembler.cc b/test/cctest/compiler/test-code-assembler.cc
|
| index 7fcf44e26c5461783433be53a8c275330de34b2e..6fe733af8d7fa23e9ff25c7d66712225d727c635 100644
|
| --- a/test/cctest/compiler/test-code-assembler.cc
|
| +++ b/test/cctest/compiler/test-code-assembler.cc
|
| @@ -12,9 +12,11 @@
|
| namespace internal {
|
| namespace compiler {
|
|
|
| +typedef CodeAssemblerTesterImpl<CodeAssembler> CodeAssemblerTester;
|
| +
|
| namespace {
|
|
|
| -Node* SmiTag(CodeAssembler& m, Node* value) {
|
| +Node* SmiTag(CodeAssemblerTester& m, Node* value) {
|
| int32_t constant_value;
|
| if (m.ToInt32Constant(value, constant_value) &&
|
| Smi::IsValid(constant_value)) {
|
| @@ -23,11 +25,11 @@
|
| return m.WordShl(value, m.IntPtrConstant(kSmiShiftSize + kSmiTagSize));
|
| }
|
|
|
| -Node* UndefinedConstant(CodeAssembler& m) {
|
| +Node* UndefinedConstant(CodeAssemblerTester& m) {
|
| return m.LoadRoot(Heap::kUndefinedValueRootIndex);
|
| }
|
|
|
| -Node* LoadObjectField(CodeAssembler& m, Node* object, int offset,
|
| +Node* LoadObjectField(CodeAssemblerTester& m, Node* object, int offset,
|
| MachineType rep = MachineType::AnyTagged()) {
|
| return m.Load(rep, object, m.IntPtrConstant(offset - kHeapObjectTag));
|
| }
|
| @@ -36,23 +38,23 @@
|
|
|
| TEST(SimpleSmiReturn) {
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| - CodeAssemblerTester data(isolate);
|
| - CodeAssembler m(data.state());
|
| + VoidDescriptor descriptor(isolate);
|
| + CodeAssemblerTester m(isolate, descriptor);
|
| m.Return(SmiTag(m, m.Int32Constant(37)));
|
| - Handle<Code> code = data.GenerateCode();
|
| - FunctionTester ft(code);
|
| + Handle<Code> code = m.GenerateCode();
|
| + FunctionTester ft(descriptor, code);
|
| MaybeHandle<Object> result = ft.Call();
|
| CHECK_EQ(37, Handle<Smi>::cast(result.ToHandleChecked())->value());
|
| }
|
|
|
| TEST(SimpleIntPtrReturn) {
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| - CodeAssemblerTester data(isolate);
|
| - CodeAssembler m(data.state());
|
| + VoidDescriptor descriptor(isolate);
|
| + CodeAssemblerTester m(isolate, descriptor);
|
| int test;
|
| m.Return(m.IntPtrConstant(reinterpret_cast<intptr_t>(&test)));
|
| - Handle<Code> code = data.GenerateCode();
|
| - FunctionTester ft(code);
|
| + Handle<Code> code = m.GenerateCode();
|
| + FunctionTester ft(descriptor, code);
|
| MaybeHandle<Object> result = ft.Call();
|
| CHECK_EQ(reinterpret_cast<intptr_t>(&test),
|
| reinterpret_cast<intptr_t>(*result.ToHandleChecked()));
|
| @@ -60,65 +62,65 @@
|
|
|
| TEST(SimpleDoubleReturn) {
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| - CodeAssemblerTester data(isolate);
|
| - CodeAssembler m(data.state());
|
| + VoidDescriptor descriptor(isolate);
|
| + CodeAssemblerTester m(isolate, descriptor);
|
| m.Return(m.NumberConstant(0.5));
|
| - Handle<Code> code = data.GenerateCode();
|
| - FunctionTester ft(code);
|
| + Handle<Code> code = m.GenerateCode();
|
| + FunctionTester ft(descriptor, code);
|
| MaybeHandle<Object> result = ft.Call();
|
| CHECK_EQ(0.5, Handle<HeapNumber>::cast(result.ToHandleChecked())->value());
|
| }
|
|
|
| TEST(SimpleCallRuntime1Arg) {
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| - CodeAssemblerTester data(isolate);
|
| - CodeAssembler m(data.state());
|
| + VoidDescriptor descriptor(isolate);
|
| + CodeAssemblerTester m(isolate, descriptor);
|
| Node* context = m.HeapConstant(Handle<Context>(isolate->native_context()));
|
| Node* b = SmiTag(m, m.Int32Constant(0));
|
| m.Return(m.CallRuntime(Runtime::kNumberToSmi, context, b));
|
| - Handle<Code> code = data.GenerateCode();
|
| - FunctionTester ft(code);
|
| + Handle<Code> code = m.GenerateCode();
|
| + FunctionTester ft(descriptor, code);
|
| MaybeHandle<Object> result = ft.Call();
|
| CHECK_EQ(0, Handle<Smi>::cast(result.ToHandleChecked())->value());
|
| }
|
|
|
| TEST(SimpleTailCallRuntime1Arg) {
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| - CodeAssemblerTester data(isolate);
|
| - CodeAssembler m(data.state());
|
| + VoidDescriptor descriptor(isolate);
|
| + CodeAssemblerTester m(isolate, descriptor);
|
| Node* context = m.HeapConstant(Handle<Context>(isolate->native_context()));
|
| Node* b = SmiTag(m, m.Int32Constant(0));
|
| m.TailCallRuntime(Runtime::kNumberToSmi, context, b);
|
| - Handle<Code> code = data.GenerateCode();
|
| - FunctionTester ft(code);
|
| + Handle<Code> code = m.GenerateCode();
|
| + FunctionTester ft(descriptor, code);
|
| MaybeHandle<Object> result = ft.Call();
|
| CHECK_EQ(0, Handle<Smi>::cast(result.ToHandleChecked())->value());
|
| }
|
|
|
| TEST(SimpleCallRuntime2Arg) {
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| - CodeAssemblerTester data(isolate);
|
| - CodeAssembler m(data.state());
|
| + VoidDescriptor descriptor(isolate);
|
| + CodeAssemblerTester m(isolate, descriptor);
|
| Node* context = m.HeapConstant(Handle<Context>(isolate->native_context()));
|
| Node* a = SmiTag(m, m.Int32Constant(2));
|
| Node* b = SmiTag(m, m.Int32Constant(4));
|
| m.Return(m.CallRuntime(Runtime::kAdd, context, a, b));
|
| - Handle<Code> code = data.GenerateCode();
|
| - FunctionTester ft(code);
|
| + Handle<Code> code = m.GenerateCode();
|
| + FunctionTester ft(descriptor, code);
|
| MaybeHandle<Object> result = ft.Call();
|
| CHECK_EQ(6, Handle<Smi>::cast(result.ToHandleChecked())->value());
|
| }
|
|
|
| TEST(SimpleTailCallRuntime2Arg) {
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| - CodeAssemblerTester data(isolate);
|
| - CodeAssembler m(data.state());
|
| + VoidDescriptor descriptor(isolate);
|
| + CodeAssemblerTester m(isolate, descriptor);
|
| Node* context = m.HeapConstant(Handle<Context>(isolate->native_context()));
|
| Node* a = SmiTag(m, m.Int32Constant(2));
|
| Node* b = SmiTag(m, m.Int32Constant(4));
|
| m.TailCallRuntime(Runtime::kAdd, context, a, b);
|
| - Handle<Code> code = data.GenerateCode();
|
| - FunctionTester ft(code);
|
| + Handle<Code> code = m.GenerateCode();
|
| + FunctionTester ft(descriptor, code);
|
| MaybeHandle<Object> result = ft.Call();
|
| CHECK_EQ(6, Handle<Smi>::cast(result.ToHandleChecked())->value());
|
| }
|
| @@ -142,8 +144,7 @@
|
| TEST(SimpleCallJSFunction0Arg) {
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| const int kNumParams = 1;
|
| - CodeAssemblerTester data(isolate, kNumParams);
|
| - CodeAssembler m(data.state());
|
| + CodeAssemblerTester m(isolate, kNumParams);
|
| {
|
| Node* function = m.Parameter(0);
|
| Node* context = m.Parameter(kNumParams + 2);
|
| @@ -154,7 +155,7 @@
|
| Node* result = m.CallJS(callable, context, function, receiver);
|
| m.Return(result);
|
| }
|
| - Handle<Code> code = data.GenerateCode();
|
| + Handle<Code> code = m.GenerateCode();
|
| FunctionTester ft(code, kNumParams);
|
|
|
| Handle<JSFunction> sum = CreateSumAllArgumentsFunction(ft);
|
| @@ -165,8 +166,7 @@
|
| TEST(SimpleCallJSFunction1Arg) {
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| const int kNumParams = 2;
|
| - CodeAssemblerTester data(isolate, kNumParams);
|
| - CodeAssembler m(data.state());
|
| + CodeAssemblerTester m(isolate, kNumParams);
|
| {
|
| Node* function = m.Parameter(0);
|
| Node* context = m.Parameter(1);
|
| @@ -178,7 +178,7 @@
|
| Node* result = m.CallJS(callable, context, function, receiver, a);
|
| m.Return(result);
|
| }
|
| - Handle<Code> code = data.GenerateCode();
|
| + Handle<Code> code = m.GenerateCode();
|
| FunctionTester ft(code, kNumParams);
|
|
|
| Handle<JSFunction> sum = CreateSumAllArgumentsFunction(ft);
|
| @@ -189,8 +189,7 @@
|
| TEST(SimpleCallJSFunction2Arg) {
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| const int kNumParams = 2;
|
| - CodeAssemblerTester data(isolate, kNumParams);
|
| - CodeAssembler m(data.state());
|
| + CodeAssemblerTester m(isolate, kNumParams);
|
| {
|
| Node* function = m.Parameter(0);
|
| Node* context = m.Parameter(1);
|
| @@ -203,7 +202,7 @@
|
| Node* result = m.CallJS(callable, context, function, receiver, a, b);
|
| m.Return(result);
|
| }
|
| - Handle<Code> code = data.GenerateCode();
|
| + Handle<Code> code = m.GenerateCode();
|
| FunctionTester ft(code, kNumParams);
|
|
|
| Handle<JSFunction> sum = CreateSumAllArgumentsFunction(ft);
|
| @@ -213,8 +212,8 @@
|
|
|
| TEST(VariableMerge1) {
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| - CodeAssemblerTester data(isolate);
|
| - CodeAssembler m(data.state());
|
| + VoidDescriptor descriptor(isolate);
|
| + CodeAssemblerTester m(isolate, descriptor);
|
| CodeStubAssembler::Variable var1(&m, MachineRepresentation::kTagged);
|
| CodeStubAssembler::Label l1(&m), l2(&m), merge(&m);
|
| Node* temp = m.Int32Constant(0);
|
| @@ -232,8 +231,8 @@
|
|
|
| TEST(VariableMerge2) {
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| - CodeAssemblerTester data(isolate);
|
| - CodeAssembler m(data.state());
|
| + VoidDescriptor descriptor(isolate);
|
| + CodeAssemblerTester m(isolate, descriptor);
|
| CodeStubAssembler::Variable var1(&m, MachineRepresentation::kTagged);
|
| CodeStubAssembler::Label l1(&m), l2(&m), merge(&m);
|
| Node* temp = m.Int32Constant(0);
|
| @@ -253,8 +252,8 @@
|
|
|
| TEST(VariableMerge3) {
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| - CodeAssemblerTester data(isolate);
|
| - CodeAssembler m(data.state());
|
| + VoidDescriptor descriptor(isolate);
|
| + CodeAssemblerTester m(isolate, descriptor);
|
| CodeStubAssembler::Variable var1(&m, MachineRepresentation::kTagged);
|
| CodeStubAssembler::Variable var2(&m, MachineRepresentation::kTagged);
|
| CodeStubAssembler::Label l1(&m), l2(&m), merge(&m);
|
| @@ -278,8 +277,8 @@
|
|
|
| TEST(VariableMergeBindFirst) {
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| - CodeAssemblerTester data(isolate);
|
| - CodeAssembler m(data.state());
|
| + VoidDescriptor descriptor(isolate);
|
| + CodeAssemblerTester m(isolate, descriptor);
|
| CodeStubAssembler::Variable var1(&m, MachineRepresentation::kTagged);
|
| CodeStubAssembler::Label l1(&m), l2(&m), merge(&m, &var1), end(&m);
|
| Node* temp = m.Int32Constant(0);
|
| @@ -304,8 +303,8 @@
|
|
|
| TEST(VariableMergeSwitch) {
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| - CodeAssemblerTester data(isolate);
|
| - CodeAssembler m(data.state());
|
| + VoidDescriptor descriptor(isolate);
|
| + CodeAssemblerTester m(isolate, descriptor);
|
| CodeStubAssembler::Variable var1(&m, MachineRepresentation::kTagged);
|
| CodeStubAssembler::Label l1(&m), l2(&m), default_label(&m);
|
| CodeStubAssembler::Label* labels[] = {&l1, &l2};
|
| @@ -326,20 +325,20 @@
|
|
|
| TEST(SplitEdgeBranchMerge) {
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| - CodeAssemblerTester data(isolate);
|
| - CodeAssembler m(data.state());
|
| + VoidDescriptor descriptor(isolate);
|
| + CodeAssemblerTester m(isolate, descriptor);
|
| CodeStubAssembler::Label l1(&m), merge(&m);
|
| m.Branch(m.Int32Constant(1), &l1, &merge);
|
| m.Bind(&l1);
|
| m.Goto(&merge);
|
| m.Bind(&merge);
|
| - USE(data.GenerateCode());
|
| + USE(m.GenerateCode());
|
| }
|
|
|
| TEST(SplitEdgeSwitchMerge) {
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| - CodeAssemblerTester data(isolate);
|
| - CodeAssembler m(data.state());
|
| + VoidDescriptor descriptor(isolate);
|
| + CodeAssemblerTester m(isolate, descriptor);
|
| CodeStubAssembler::Label l1(&m), l2(&m), l3(&m), default_label(&m);
|
| CodeStubAssembler::Label* labels[] = {&l1, &l2};
|
| int32_t values[] = {1, 2};
|
| @@ -351,13 +350,13 @@
|
| m.Bind(&l2);
|
| m.Goto(&default_label);
|
| m.Bind(&default_label);
|
| - USE(data.GenerateCode());
|
| + USE(m.GenerateCode());
|
| }
|
|
|
| TEST(TestToConstant) {
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| - CodeAssemblerTester data(isolate);
|
| - CodeAssembler m(data.state());
|
| + VoidDescriptor descriptor(isolate);
|
| + CodeAssemblerTester m(isolate, descriptor);
|
| int32_t value32;
|
| int64_t value64;
|
| Node* a = m.Int32Constant(5);
|
| @@ -386,8 +385,8 @@
|
| typedef CodeStubAssembler::Label Label;
|
| typedef CodeStubAssembler::Variable Variable;
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| - CodeAssemblerTester data(isolate);
|
| - CodeAssembler m(data.state());
|
| + VoidDescriptor descriptor(isolate);
|
| + CodeAssemblerTester m(isolate, descriptor);
|
| Label block1(&m, Label::kDeferred);
|
| m.Goto(&block1);
|
| m.Bind(&block1);
|
| @@ -403,15 +402,15 @@
|
| m.Goto(&loop);
|
| }
|
| }
|
| - CHECK(!data.GenerateCode().is_null());
|
| + CHECK(!m.GenerateCode().is_null());
|
| }
|
|
|
| TEST(TestOutOfScopeVariable) {
|
| typedef CodeStubAssembler::Label Label;
|
| typedef CodeStubAssembler::Variable Variable;
|
| Isolate* isolate(CcTest::InitIsolateOnce());
|
| - CodeAssemblerTester data(isolate);
|
| - CodeAssembler m(data.state());
|
| + VoidDescriptor descriptor(isolate);
|
| + CodeAssemblerTester m(isolate, descriptor);
|
| Label block1(&m);
|
| Label block2(&m);
|
| Label block3(&m);
|
| @@ -432,7 +431,7 @@
|
| m.Goto(&block1);
|
| }
|
| m.Bind(&block1);
|
| - CHECK(!data.GenerateCode().is_null());
|
| + CHECK(!m.GenerateCode().is_null());
|
| }
|
|
|
| } // namespace compiler
|
|
|