diff options
Diffstat (limited to 'deps/v8/test/cctest/compiler/test-code-assembler.cc')
-rw-r--r-- | deps/v8/test/cctest/compiler/test-code-assembler.cc | 124 |
1 files changed, 59 insertions, 65 deletions
diff --git a/deps/v8/test/cctest/compiler/test-code-assembler.cc b/deps/v8/test/cctest/compiler/test-code-assembler.cc index 9e6318ee88..56628ffde4 100644 --- a/deps/v8/test/cctest/compiler/test-code-assembler.cc +++ b/deps/v8/test/cctest/compiler/test-code-assembler.cc @@ -18,38 +18,33 @@ namespace compiler { namespace { -using Label = CodeAssemblerLabel; using Variable = CodeAssemblerVariable; -Node* SmiTag(CodeAssembler& m, // NOLINT(runtime/references) - Node* value) { +Node* SmiTag(CodeAssembler* m, Node* value) { int32_t constant_value; - if (m.ToInt32Constant(value, &constant_value) && + if (m->ToInt32Constant(value, &constant_value) && Smi::IsValid(constant_value)) { - return m.SmiConstant(Smi::FromInt(constant_value)); + return m->SmiConstant(Smi::FromInt(constant_value)); } - return m.WordShl(value, m.IntPtrConstant(kSmiShiftSize + kSmiTagSize)); + return m->WordShl(value, m->IntPtrConstant(kSmiShiftSize + kSmiTagSize)); } -Node* UndefinedConstant(CodeAssembler& m) { // NOLINT(runtime/references) - return m.LoadRoot(RootIndex::kUndefinedValue); +Node* UndefinedConstant(CodeAssembler* m) { + return m->LoadRoot(RootIndex::kUndefinedValue); } -Node* SmiFromInt32(CodeAssembler& m, // NOLINT(runtime/references) - Node* value) { - value = m.ChangeInt32ToIntPtr(value); - return m.BitcastWordToTaggedSigned( - m.WordShl(value, kSmiShiftSize + kSmiTagSize)); +Node* SmiFromInt32(CodeAssembler* m, Node* value) { + value = m->ChangeInt32ToIntPtr(value); + return m->BitcastWordToTaggedSigned( + m->WordShl(value, kSmiShiftSize + kSmiTagSize)); } -Node* LoadObjectField(CodeAssembler& m, // NOLINT(runtime/references) - Node* object, int offset, +Node* LoadObjectField(CodeAssembler* m, Node* object, int offset, MachineType type = MachineType::AnyTagged()) { - return m.Load(type, object, m.IntPtrConstant(offset - kHeapObjectTag)); + return m->Load(type, object, m->IntPtrConstant(offset - kHeapObjectTag)); } -Node* LoadMap(CodeAssembler& m, // NOLINT(runtime/references) - Node* object) { +Node* LoadMap(CodeAssembler* m, Node* object) { return LoadObjectField(m, object, JSObject::kMapOffset); } @@ -59,7 +54,7 @@ TEST(SimpleSmiReturn) { Isolate* isolate(CcTest::InitIsolateOnce()); CodeAssemblerTester asm_tester(isolate); CodeAssembler m(asm_tester.state()); - m.Return(SmiTag(m, m.Int32Constant(37))); + m.Return(SmiTag(&m, m.Int32Constant(37))); FunctionTester ft(asm_tester.GenerateCode()); CHECK_EQ(37, ft.CallChecked<Smi>()->value()); } @@ -91,7 +86,7 @@ TEST(SimpleCallRuntime1Arg) { CodeAssembler m(asm_tester.state()); TNode<Context> context = m.HeapConstant(Handle<Context>(isolate->native_context())); - Node* b = SmiTag(m, m.Int32Constant(0)); + Node* b = SmiTag(&m, m.Int32Constant(0)); m.Return(m.CallRuntime(Runtime::kIsSmi, context, b)); FunctionTester ft(asm_tester.GenerateCode()); CHECK(ft.CallChecked<Oddball>().is_identical_to( @@ -104,7 +99,7 @@ TEST(SimpleTailCallRuntime1Arg) { CodeAssembler m(asm_tester.state()); TNode<Context> context = m.HeapConstant(Handle<Context>(isolate->native_context())); - Node* b = SmiTag(m, m.Int32Constant(0)); + Node* b = SmiTag(&m, m.Int32Constant(0)); m.TailCallRuntime(Runtime::kIsSmi, context, b); FunctionTester ft(asm_tester.GenerateCode()); CHECK(ft.CallChecked<Oddball>().is_identical_to( @@ -117,8 +112,8 @@ TEST(SimpleCallRuntime2Arg) { CodeAssembler m(asm_tester.state()); TNode<Context> context = m.HeapConstant(Handle<Context>(isolate->native_context())); - Node* a = SmiTag(m, m.Int32Constant(2)); - Node* b = SmiTag(m, m.Int32Constant(4)); + Node* a = SmiTag(&m, m.Int32Constant(2)); + Node* b = SmiTag(&m, m.Int32Constant(4)); m.Return(m.CallRuntime(Runtime::kAdd, context, a, b)); FunctionTester ft(asm_tester.GenerateCode()); CHECK_EQ(6, ft.CallChecked<Smi>()->value()); @@ -130,8 +125,8 @@ TEST(SimpleTailCallRuntime2Arg) { CodeAssembler m(asm_tester.state()); TNode<Context> context = m.HeapConstant(Handle<Context>(isolate->native_context())); - Node* a = SmiTag(m, m.Int32Constant(2)); - Node* b = SmiTag(m, m.Int32Constant(4)); + Node* a = SmiTag(&m, m.Int32Constant(2)); + Node* b = SmiTag(&m, m.Int32Constant(4)); m.TailCallRuntime(Runtime::kAdd, context, a, b); FunctionTester ft(asm_tester.GenerateCode()); CHECK_EQ(6, ft.CallChecked<Smi>()->value()); @@ -139,8 +134,7 @@ TEST(SimpleTailCallRuntime2Arg) { namespace { -Handle<JSFunction> CreateSumAllArgumentsFunction( - FunctionTester& ft) { // NOLINT(runtime/references) +Handle<JSFunction> CreateSumAllArgumentsFunction(FunctionTester* ft) { const char* source = "(function() {\n" " var sum = 0 + this;\n" @@ -149,7 +143,7 @@ Handle<JSFunction> CreateSumAllArgumentsFunction( " }\n" " return sum;\n" "})"; - return ft.NewFunction(source); + return ft->NewFunction(source); } } // namespace @@ -163,7 +157,7 @@ TEST(SimpleCallJSFunction0Arg) { Node* function = m.Parameter(0); Node* context = m.Parameter(kNumParams + 2); - Node* receiver = SmiTag(m, m.Int32Constant(42)); + Node* receiver = SmiTag(&m, m.Int32Constant(42)); Callable callable = CodeFactory::Call(isolate); Node* result = m.CallJS(callable, context, function, receiver); @@ -171,7 +165,7 @@ TEST(SimpleCallJSFunction0Arg) { } FunctionTester ft(asm_tester.GenerateCode(), kNumParams); - Handle<JSFunction> sum = CreateSumAllArgumentsFunction(ft); + Handle<JSFunction> sum = CreateSumAllArgumentsFunction(&ft); MaybeHandle<Object> result = ft.Call(sum); CHECK_EQ(Smi::FromInt(42), *result.ToHandleChecked()); } @@ -185,8 +179,8 @@ TEST(SimpleCallJSFunction1Arg) { Node* function = m.Parameter(0); Node* context = m.Parameter(1); - Node* receiver = SmiTag(m, m.Int32Constant(42)); - Node* a = SmiTag(m, m.Int32Constant(13)); + Node* receiver = SmiTag(&m, m.Int32Constant(42)); + Node* a = SmiTag(&m, m.Int32Constant(13)); Callable callable = CodeFactory::Call(isolate); Node* result = m.CallJS(callable, context, function, receiver, a); @@ -194,7 +188,7 @@ TEST(SimpleCallJSFunction1Arg) { } FunctionTester ft(asm_tester.GenerateCode(), kNumParams); - Handle<JSFunction> sum = CreateSumAllArgumentsFunction(ft); + Handle<JSFunction> sum = CreateSumAllArgumentsFunction(&ft); MaybeHandle<Object> result = ft.Call(sum); CHECK_EQ(Smi::FromInt(55), *result.ToHandleChecked()); } @@ -208,9 +202,9 @@ TEST(SimpleCallJSFunction2Arg) { Node* function = m.Parameter(0); Node* context = m.Parameter(1); - Node* receiver = SmiTag(m, m.Int32Constant(42)); - Node* a = SmiTag(m, m.Int32Constant(13)); - Node* b = SmiTag(m, m.Int32Constant(153)); + Node* receiver = SmiTag(&m, m.Int32Constant(42)); + Node* a = SmiTag(&m, m.Int32Constant(13)); + Node* b = SmiTag(&m, m.Int32Constant(153)); Callable callable = CodeFactory::Call(isolate); Node* result = m.CallJS(callable, context, function, receiver, a, b); @@ -218,7 +212,7 @@ TEST(SimpleCallJSFunction2Arg) { } FunctionTester ft(asm_tester.GenerateCode(), kNumParams); - Handle<JSFunction> sum = CreateSumAllArgumentsFunction(ft); + Handle<JSFunction> sum = CreateSumAllArgumentsFunction(&ft); MaybeHandle<Object> result = ft.Call(sum); CHECK_EQ(Smi::FromInt(208), *result.ToHandleChecked()); } @@ -228,7 +222,7 @@ TEST(VariableMerge1) { CodeAssemblerTester asm_tester(isolate); CodeAssembler m(asm_tester.state()); Variable var1(&m, MachineRepresentation::kTagged); - Label l1(&m), l2(&m), merge(&m); + CodeAssemblerLabel l1(&m), l2(&m), merge(&m); TNode<Int32T> temp = m.Int32Constant(0); var1.Bind(temp); m.Branch(m.Int32Constant(1), &l1, &l2); @@ -247,7 +241,7 @@ TEST(VariableMerge2) { CodeAssemblerTester asm_tester(isolate); CodeAssembler m(asm_tester.state()); Variable var1(&m, MachineRepresentation::kTagged); - Label l1(&m), l2(&m), merge(&m); + CodeAssemblerLabel l1(&m), l2(&m), merge(&m); TNode<Int32T> temp = m.Int32Constant(0); var1.Bind(temp); m.Branch(m.Int32Constant(1), &l1, &l2); @@ -269,7 +263,7 @@ TEST(VariableMerge3) { CodeAssembler m(asm_tester.state()); Variable var1(&m, MachineRepresentation::kTagged); Variable var2(&m, MachineRepresentation::kTagged); - Label l1(&m), l2(&m), merge(&m); + CodeAssemblerLabel l1(&m), l2(&m), merge(&m); TNode<Int32T> temp = m.Int32Constant(0); var1.Bind(temp); var2.Bind(temp); @@ -293,7 +287,7 @@ TEST(VariableMergeBindFirst) { CodeAssemblerTester asm_tester(isolate); CodeAssembler m(asm_tester.state()); Variable var1(&m, MachineRepresentation::kTagged); - Label l1(&m), l2(&m), merge(&m, &var1), end(&m); + CodeAssemblerLabel l1(&m), l2(&m), merge(&m, &var1), end(&m); TNode<Int32T> temp = m.Int32Constant(0); var1.Bind(temp); m.Branch(m.Int32Constant(1), &l1, &l2); @@ -319,8 +313,8 @@ TEST(VariableMergeSwitch) { CodeAssemblerTester asm_tester(isolate); CodeAssembler m(asm_tester.state()); Variable var1(&m, MachineRepresentation::kTagged); - Label l1(&m), l2(&m), default_label(&m); - Label* labels[] = {&l1, &l2}; + CodeAssemblerLabel l1(&m), l2(&m), default_label(&m); + CodeAssemblerLabel* labels[] = {&l1, &l2}; int32_t values[] = {1, 2}; TNode<Smi> temp1 = m.SmiConstant(0); var1.Bind(temp1); @@ -345,7 +339,7 @@ TEST(SplitEdgeBranchMerge) { Isolate* isolate(CcTest::InitIsolateOnce()); CodeAssemblerTester asm_tester(isolate); CodeAssembler m(asm_tester.state()); - Label l1(&m), merge(&m); + CodeAssemblerLabel l1(&m), merge(&m); m.Branch(m.Int32Constant(1), &l1, &merge); m.Bind(&l1); m.Goto(&merge); @@ -357,8 +351,8 @@ TEST(SplitEdgeSwitchMerge) { Isolate* isolate(CcTest::InitIsolateOnce()); CodeAssemblerTester asm_tester(isolate); CodeAssembler m(asm_tester.state()); - Label l1(&m), l2(&m), l3(&m), default_label(&m); - Label* labels[] = {&l1, &l2}; + CodeAssemblerLabel l1(&m), l2(&m), l3(&m), default_label(&m); + CodeAssemblerLabel* labels[] = {&l1, &l2}; int32_t values[] = {1, 2}; m.Branch(m.Int32Constant(1), &l3, &l1); m.Bind(&l3); @@ -389,11 +383,11 @@ TEST(TestToConstant) { CHECK(m.ToInt32Constant(a, &value32)); CHECK(m.ToInt64Constant(a, &value64)); - a = UndefinedConstant(m); + a = UndefinedConstant(&m); CHECK(!m.ToInt32Constant(a, &value32)); CHECK(!m.ToInt64Constant(a, &value64)); - a = UndefinedConstant(m); + a = UndefinedConstant(&m); CHECK(!m.ToInt32Constant(a, &value32)); CHECK(!m.ToInt64Constant(a, &value64)); } @@ -402,17 +396,17 @@ TEST(DeferredCodePhiHints) { Isolate* isolate(CcTest::InitIsolateOnce()); CodeAssemblerTester asm_tester(isolate); CodeAssembler m(asm_tester.state()); - Label block1(&m, Label::kDeferred); + CodeAssemblerLabel block1(&m, CodeAssemblerLabel::kDeferred); m.Goto(&block1); m.Bind(&block1); { Variable var_object(&m, MachineRepresentation::kTagged); - Label loop(&m, &var_object); + CodeAssemblerLabel loop(&m, &var_object); var_object.Bind(m.SmiConstant(0)); m.Goto(&loop); m.Bind(&loop); { - Node* map = LoadMap(m, var_object.value()); + Node* map = LoadMap(&m, var_object.value()); var_object.Bind(map); m.Goto(&loop); } @@ -424,10 +418,10 @@ TEST(TestOutOfScopeVariable) { Isolate* isolate(CcTest::InitIsolateOnce()); CodeAssemblerTester asm_tester(isolate); CodeAssembler m(asm_tester.state()); - Label block1(&m); - Label block2(&m); - Label block3(&m); - Label block4(&m); + CodeAssemblerLabel block1(&m); + CodeAssemblerLabel block2(&m); + CodeAssemblerLabel block3(&m); + CodeAssemblerLabel block4(&m); m.Branch(m.WordEqual(m.UncheckedCast<IntPtrT>(m.Parameter(0)), m.IntPtrConstant(0)), &block1, &block4); @@ -463,7 +457,7 @@ TEST(GotoIfException) { m.HeapConstant(isolate->factory()->to_string_tag_symbol()); Variable exception(&m, MachineRepresentation::kTagged); - Label exception_handler(&m); + CodeAssemblerLabel exception_handler(&m); Callable to_string = Builtins::CallableFor(isolate, Builtins::kToString); TNode<Object> string = m.CallStub(to_string, context, to_string_tag); m.GotoIfException(string, &exception_handler, &exception); @@ -498,9 +492,9 @@ TEST(GotoIfExceptionMultiple) { Node* second_value = m.Parameter(1); Node* third_value = m.Parameter(2); - Label exception_handler1(&m); - Label exception_handler2(&m); - Label exception_handler3(&m); + CodeAssemblerLabel exception_handler1(&m); + CodeAssemblerLabel exception_handler2(&m); + CodeAssemblerLabel exception_handler3(&m); Variable return_value(&m, MachineRepresentation::kWord32); Variable error(&m, MachineRepresentation::kTagged); @@ -515,20 +509,20 @@ TEST(GotoIfExceptionMultiple) { // try { ToString(param2); return 7 } catch (e) { ... } m.Bind(&exception_handler1); return_value.Bind(m.Int32Constant(7)); - error.Bind(UndefinedConstant(m)); + error.Bind(UndefinedConstant(&m)); string = m.CallStub(to_string, context, second_value); m.GotoIfException(string, &exception_handler2, &error); - m.Return(SmiFromInt32(m, return_value.value())); + m.Return(SmiFromInt32(&m, return_value.value())); // try { ToString(param3); return 7 & ~2; } catch (e) { return e; } m.Bind(&exception_handler2); // Return returnValue & ~2 - error.Bind(UndefinedConstant(m)); + error.Bind(UndefinedConstant(&m)); string = m.CallStub(to_string, context, third_value); m.GotoIfException(string, &exception_handler3, &error); m.Return(SmiFromInt32( - m, m.Word32And(return_value.value(), - m.Word32Xor(m.Int32Constant(2), m.Int32Constant(-1))))); + &m, m.Word32And(return_value.value(), + m.Word32Xor(m.Int32Constant(2), m.Int32Constant(-1))))); m.Bind(&exception_handler3); m.Return(error.value()); @@ -578,7 +572,7 @@ TEST(ExceptionHandler) { CodeAssembler m(asm_tester.state()); CodeAssembler::TVariable<Object> var(m.SmiConstant(0), &m); - Label exception(&m, {&var}, Label::kDeferred); + CodeAssemblerLabel exception(&m, {&var}, CodeAssemblerLabel::kDeferred); { CodeAssemblerScopedExceptionHandler handler(&m, &exception, &var); TNode<Context> context = |