Skip to content

Commit

Permalink
[vm] Enable new kernel AST invocation nodes for the VM, take 2
Browse files Browse the repository at this point in the history
This change was already reviewed at
https://dart-review.googlesource.com/c/sdk/+/197586.

Bugfix is in the separate change:
https://dart-review.googlesource.com/c/sdk/+/199365.

TEST=ci

Issue: dart-lang#45340
Change-Id: I4311909e4893af53e88895512f03d3ef84c6bc5f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/199366
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
  • Loading branch information
alexmarkov authored and commit-bot@chromium.org committed May 20, 2021
1 parent dfcb88f commit 88021fd
Show file tree
Hide file tree
Showing 2,281 changed files with 24,852 additions and 24,601 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import "org-dartlang-testcase:///main_lib.dart";

static method main() → dynamic {
core::List<dynamic> list = <dynamic>[];
if(list.{core::Iterable::isNotEmpty}) {
new mai::Class::•().{mai::Class::method}((null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::Enum);
if(list.{core::Iterable::isNotEmpty}{core::bool}) {
new mai::Class::•().{mai::Class::method}((null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::Enum){(mai::Enum) → core::int};
}
}

Expand All @@ -25,14 +25,14 @@ class Enum extends core::Object /*isEnum*/ {
: mai::Enum::index = index, mai::Enum::_name = _name, super core::Object::•()
;
method toString() → core::String
return this.{mai::Enum::_name};
return this.{mai::Enum::_name}{core::String};
}
class Class extends core::Object {
synthetic constructor •() → mai::Class
: super core::Object::•()
;
method method(mai::Enum e) → core::int
return e.{mai::Enum::index};
return e.{mai::Enum::index}{core::int};
}

constants {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import "org-dartlang-testcase:///main_lib.dart";

static method main() → dynamic {
core::List<dynamic> list = core::_GrowableList::•<dynamic>(0);
if(list.{core::Iterable::isNotEmpty}) {
if(list.{core::Iterable::isNotEmpty}{core::bool}) {
let dynamic #t1 = new mai::Class::•() in let dynamic #t2 = _in::unsafeCast<dynamic>(null) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::Enum in throw "Attempt to execute code removed by Dart AOT compiler (TFA)";
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import "org-dartlang-testcase:///main_lib.dart";

static method main() → dynamic {
core::List<dynamic> list = <dynamic>[];
if(list.{core::Iterable::isNotEmpty}) {
new mai::Class::•().{mai::Class::method}((null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::Enum);
if(list.{core::Iterable::isNotEmpty}{core::bool}) {
new mai::Class::•().{mai::Class::method}((null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::Enum){(mai::Enum) → core::int};
}
}

Expand All @@ -25,14 +25,14 @@ class Enum extends core::Object /*isEnum*/ {
: mai::Enum::index = index, mai::Enum::_name = _name, super core::Object::•()
;
method toString() → core::String
return this.{mai::Enum::_name};
return this.{mai::Enum::_name}{core::String};
}
class Class extends core::Object {
synthetic constructor •() → mai::Class
: super core::Object::•()
;
method method(mai::Enum e) → core::int
return e.{mai::Enum::index};
return e.{mai::Enum::index}{core::int};
}

constants {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ class Enum extends core::Object /*isEnum*/ {
: self2::Enum::index = index, self2::Enum::_name = _name, super core::Object::•()
;
method toString() → core::String
return this.{self2::Enum::_name};
return this.{self2::Enum::_name}{core::String};
}
class Class extends core::Object {
synthetic constructor •() → self2::Class
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import "org-dartlang-testcase:///main_lib.dart";

static method main() → dynamic {
core::List<dynamic> list = core::_GrowableList::•<dynamic>(0);
if(list.{core::Iterable::isNotEmpty}) {
new mai::Class::•().{mai::Class::method}(_in::unsafeCast<mai::Enum>(_in::unsafeCast<dynamic>(null)));
if(list.{core::Iterable::isNotEmpty}{core::bool}) {
new mai::Class::•().{mai::Class::method}(_in::unsafeCast<mai::Enum>(_in::unsafeCast<dynamic>(null))){(mai::Enum) → core::int};
}
}

Expand All @@ -25,7 +25,7 @@ class Class extends core::Object {
: super core::Object::•()
;
method method(mai::Enum e) → core::int
return e.{mai::Enum::index};
return e.{mai::Enum::index}{core::int};
}


Expand Down
16 changes: 8 additions & 8 deletions pkg/front_end/testcases/aot/tree_shake/main.dart.strong.expect
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class UnusedEnum extends core::Object /*isEnum*/ {
: self::UnusedEnum::index = index, self::UnusedEnum::_name = _name, super core::Object::•()
;
method toString() → core::String
return this.{self::UnusedEnum::_name};
return this.{self::UnusedEnum::_name}{core::String};
}
class UsedEnum extends core::Object /*isEnum*/ {
final field core::int index;
Expand All @@ -27,7 +27,7 @@ class UsedEnum extends core::Object /*isEnum*/ {
: self::UsedEnum::index = index, self::UsedEnum::_name = _name, super core::Object::•()
;
method toString() → core::String
return this.{self::UsedEnum::_name};
return this.{self::UsedEnum::_name}{core::String};
}
class UnusedInterface extends core::Object {
field core::int? usedInterfaceField;
Expand All @@ -49,17 +49,17 @@ class UnusedClass extends core::Object {
;
}
static method usedMethod(self::UnusedInterface c) → dynamic {
c.{self::UnusedInterface::usedInterfaceField} = c.{self::UnusedInterface::usedInterfaceField};
c.{self::UnusedInterface::usedInterfaceField} = c.{self::UnusedInterface::usedInterfaceField}{core::int?};
}
static method unusedMethod() → dynamic {}
static method main() → dynamic {
self::usedMethod(let final self::UsedClass #t1 = new self::UsedClass::•() in block {
#t1.{self::UsedClass::usedField};
#t1.{self::UsedClass::usedField}{core::int?};
} =>#t1);
#C11;
core::List<self::UnusedEnum> list = <self::UnusedEnum>[];
if(list.{core::Iterable::isNotEmpty}) {
new mai::ConstClass::•().{mai::ConstClass::method}((null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::ConstEnum);
if(list.{core::Iterable::isNotEmpty}{core::bool}) {
new mai::ConstClass::•().{mai::ConstClass::method}((null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::ConstEnum){(mai::ConstEnum) → core::int};
}
}

Expand All @@ -76,14 +76,14 @@ class ConstEnum extends core::Object /*isEnum*/ {
: mai::ConstEnum::index = index, mai::ConstEnum::_name = _name, super core::Object::•()
;
method toString() → core::String
return this.{mai::ConstEnum::_name};
return this.{mai::ConstEnum::_name}{core::String};
}
class ConstClass extends core::Object {
synthetic constructor •() → mai::ConstClass
: super core::Object::•()
;
method method(mai::ConstEnum e) → core::int
return e.{mai::ConstEnum::index};
return e.{mai::ConstEnum::index}{core::int};
}

constants {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class UsedEnum extends core::Object /*isEnum*/ {
final field core::int index;
final field core::String _name;
method toString() → core::String
return this.{self::UsedEnum::_name};
return this.{self::UsedEnum::_name}{core::String};
}
abstract class UnusedInterface extends core::Object {
abstract get /*isLegacy*/ usedInterfaceField() → core::int?;
Expand All @@ -26,15 +26,15 @@ class UsedClass extends core::Object implements self::UnusedInterface {
;
}
static method usedMethod(self::UnusedInterface c) → dynamic {
c.{self::UnusedInterface::usedInterfaceField} = c.{self::UnusedInterface::usedInterfaceField};
c.{self::UnusedInterface::usedInterfaceField} = c.{self::UnusedInterface::usedInterfaceField}{core::int?};
}
static method main() → dynamic {
self::usedMethod(let final self::UsedClass #t1 = new self::UsedClass::•() in block {
#t1.{self::UsedClass::usedField};
#t1.{self::UsedClass::usedField}{core::int?};
} =>#t1);
#C3;
core::List<self::UnusedEnum> list = core::_GrowableList::•<self::UnusedEnum>(0);
if(list.{core::Iterable::isNotEmpty}) {
if(list.{core::Iterable::isNotEmpty}{core::bool}) {
let dynamic #t2 = new mai::ConstClass::•() in let dynamic #t3 = _in::unsafeCast<dynamic>(null) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::ConstEnum in throw "Attempt to execute code removed by Dart AOT compiler (TFA)";
}
}
Expand Down
16 changes: 8 additions & 8 deletions pkg/front_end/testcases/aot/tree_shake/main.dart.weak.expect
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class UnusedEnum extends core::Object /*isEnum*/ {
: self::UnusedEnum::index = index, self::UnusedEnum::_name = _name, super core::Object::•()
;
method toString() → core::String
return this.{self::UnusedEnum::_name};
return this.{self::UnusedEnum::_name}{core::String};
}
class UsedEnum extends core::Object /*isEnum*/ {
final field core::int index;
Expand All @@ -27,7 +27,7 @@ class UsedEnum extends core::Object /*isEnum*/ {
: self::UsedEnum::index = index, self::UsedEnum::_name = _name, super core::Object::•()
;
method toString() → core::String
return this.{self::UsedEnum::_name};
return this.{self::UsedEnum::_name}{core::String};
}
class UnusedInterface extends core::Object {
field core::int? usedInterfaceField;
Expand All @@ -49,17 +49,17 @@ class UnusedClass extends core::Object {
;
}
static method usedMethod(self::UnusedInterface c) → dynamic {
c.{self::UnusedInterface::usedInterfaceField} = c.{self::UnusedInterface::usedInterfaceField};
c.{self::UnusedInterface::usedInterfaceField} = c.{self::UnusedInterface::usedInterfaceField}{core::int?};
}
static method unusedMethod() → dynamic {}
static method main() → dynamic {
self::usedMethod(let final self::UsedClass #t1 = new self::UsedClass::•() in block {
#t1.{self::UsedClass::usedField};
#t1.{self::UsedClass::usedField}{core::int?};
} =>#t1);
#C11;
core::List<self::UnusedEnum> list = <self::UnusedEnum>[];
if(list.{core::Iterable::isNotEmpty}) {
new mai::ConstClass::•().{mai::ConstClass::method}((null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::ConstEnum);
if(list.{core::Iterable::isNotEmpty}{core::bool}) {
new mai::ConstClass::•().{mai::ConstClass::method}((null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} mai::ConstEnum){(mai::ConstEnum) → core::int};
}
}

Expand All @@ -76,14 +76,14 @@ class ConstEnum extends core::Object /*isEnum*/ {
: mai::ConstEnum::index = index, mai::ConstEnum::_name = _name, super core::Object::•()
;
method toString() → core::String
return this.{mai::ConstEnum::_name};
return this.{mai::ConstEnum::_name}{core::String};
}
class ConstClass extends core::Object {
synthetic constructor •() → mai::ConstClass
: super core::Object::•()
;
method method(mai::ConstEnum e) → core::int
return e.{mai::ConstEnum::index};
return e.{mai::ConstEnum::index}{core::int};
}

constants {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class UnusedEnum extends core::Object /*isEnum*/ {
: self::UnusedEnum::index = index, self::UnusedEnum::_name = _name, super core::Object::•()
;
method toString() → core::String
return this.{self::UnusedEnum::_name};
return this.{self::UnusedEnum::_name}{core::String};
}
class UsedEnum extends core::Object /*isEnum*/ {
final field core::int index;
Expand All @@ -26,7 +26,7 @@ class UsedEnum extends core::Object /*isEnum*/ {
: self::UsedEnum::index = index, self::UsedEnum::_name = _name, super core::Object::•()
;
method toString() → core::String
return this.{self::UsedEnum::_name};
return this.{self::UsedEnum::_name}{core::String};
}
class UnusedInterface extends core::Object {
field core::int? usedInterfaceField;
Expand Down Expand Up @@ -64,7 +64,7 @@ class ConstEnum extends core::Object /*isEnum*/ {
: self2::ConstEnum::index = index, self2::ConstEnum::_name = _name, super core::Object::•()
;
method toString() → core::String
return this.{self2::ConstEnum::_name};
return this.{self2::ConstEnum::_name}{core::String};
}
class ConstClass extends core::Object {
synthetic constructor •() → self2::ConstClass
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class UsedEnum extends core::Object /*isEnum*/ {
final field core::int index;
final field core::String _name;
method toString() → core::String
return this.{self::UsedEnum::_name};
return this.{self::UsedEnum::_name}{core::String};
}
abstract class UnusedInterface extends core::Object {
abstract get /*isLegacy*/ usedInterfaceField() → core::int?;
Expand All @@ -26,16 +26,16 @@ class UsedClass extends core::Object implements self::UnusedInterface {
;
}
static method usedMethod(self::UnusedInterface c) → dynamic {
c.{self::UnusedInterface::usedInterfaceField} = c.{self::UnusedInterface::usedInterfaceField};
c.{self::UnusedInterface::usedInterfaceField} = c.{self::UnusedInterface::usedInterfaceField}{core::int?};
}
static method main() → dynamic {
self::usedMethod(let final self::UsedClass #t1 = new self::UsedClass::•() in block {
#t1.{self::UsedClass::usedField};
#t1.{self::UsedClass::usedField}{core::int?};
} =>#t1);
#C3;
core::List<self::UnusedEnum> list = core::_GrowableList::•<self::UnusedEnum>(0);
if(list.{core::Iterable::isNotEmpty}) {
new mai::ConstClass::•().{mai::ConstClass::method}(_in::unsafeCast<mai::ConstEnum>(_in::unsafeCast<dynamic>(null)));
if(list.{core::Iterable::isNotEmpty}{core::bool}) {
new mai::ConstClass::•().{mai::ConstClass::method}(_in::unsafeCast<mai::ConstEnum>(_in::unsafeCast<dynamic>(null))){(mai::ConstEnum) → core::int};
}
}

Expand All @@ -51,7 +51,7 @@ class ConstClass extends core::Object {
: super core::Object::•()
;
method method(mai::ConstEnum e) → core::int
return e.{mai::ConstEnum::index};
return e.{mai::ConstEnum::index}{core::int};
}

constants {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ class Class extends core::Object implements mai::Interface {
;
}
static method method(mai::Interface i) → void {
i.{mai::Interface::field2} = i.{mai::Interface::field1};
i.{mai::Interface::field3} = i.{mai::Interface::field3};
i.{mai::Interface::field2} = i.{mai::Interface::field1}{core::int?};
i.{mai::Interface::field3} = i.{mai::Interface::field3}{core::int?};
}
static method main() → dynamic {
self::method(new self::Class::•());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ class Class extends core::Object implements mai::Interface {
set /*isLegacy*/ field2(core::int? value) → void;
}
static method method(mai::Interface i) → void {
i.{mai::Interface::field2} = i.{mai::Interface::field1};
i.{mai::Interface::field3} = i.{mai::Interface::field3};
i.{mai::Interface::field2} = i.{mai::Interface::field1}{core::int?};
i.{mai::Interface::field3} = i.{mai::Interface::field3}{core::int?};
}
static method main() → dynamic {
self::method(new self::Class::•());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ class Class extends core::Object implements mai::Interface {
;
}
static method method(mai::Interface i) → void {
i.{mai::Interface::field2} = i.{mai::Interface::field1};
i.{mai::Interface::field3} = i.{mai::Interface::field3};
i.{mai::Interface::field2} = i.{mai::Interface::field1}{core::int?};
i.{mai::Interface::field3} = i.{mai::Interface::field3}{core::int?};
}
static method main() → dynamic {
self::method(new self::Class::•());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ class Class extends core::Object implements mai::Interface {
set /*isLegacy*/ field2(core::int? value) → void;
}
static method method(mai::Interface i) → void {
i.{mai::Interface::field2} = i.{mai::Interface::field1};
i.{mai::Interface::field3} = i.{mai::Interface::field3};
i.{mai::Interface::field2} = i.{mai::Interface::field1}{core::int?};
i.{mai::Interface::field3} = i.{mai::Interface::field3}{core::int?};
}
static method main() → dynamic {
self::method(new self::Class::•());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ static const field core::int var1 = #C1;
static const field core::int var2 = #C1;
static method fn() → core::int {
core::int x = 0;
assert(x.{core::num::==}(0), "fail");
assert(x =={core::num::==}{(core::Object) → core::bool} 0, "fail");
return x;
}
static method fn2() → core::int {
core::int x = 0;
assert((() → core::bool {
core::int y = x.{core::num::+}(1);
return y.{core::num::==}(1);
}).call());
core::int y = x.{core::num::+}(1){(core::num) → core::int};
return y =={core::num::==}{(core::Object) → core::bool} 1;
})(){() → core::bool});
return x;
}
static method main() → void {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,15 @@ static const field core::int var1 = #C1;
static const field core::int var2 = #C1;
static method fn() → core::int {
core::int x = 0;
assert(x.{core::num::==}(0), "fail");
assert(x =={core::num::==}{(core::Object) → core::bool} 0, "fail");
return x;
}
static method fn2() → core::int {
core::int x = 0;
assert((() → core::bool {
core::int y = x.{core::num::+}(1);
return y.{core::num::==}(1);
}).call());
core::int y = x.{core::num::+}(1){(core::num) → core::int};
return y =={core::num::==}{(core::Object) → core::bool} 1;
})(){() → core::bool});
return x;
}
static method main() → void {
Expand Down
Loading

0 comments on commit 88021fd

Please sign in to comment.