[vm/nnbd] Finish migration of vm/cc tests to NNBD
Also, vm/cc tests are enabled on NNBD bots. Issue: https://github.com/dart-lang/sdk/issues/41314 Change-Id: Iddfa68de3de041436a009dd3426431211471b4dc Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/149780 Commit-Queue: Alexander Markov <alexmarkov@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com>
This commit is contained in:
committed by
commit-bot@chromium.org
parent
6ab36f85b0
commit
1d14868685
@@ -386,12 +386,7 @@ dart_2/data_uri*test: Skip # Data uri's not supported by dart2js or the analyzer
|
||||
|
||||
[ $compiler == dartk || $compiler == dartkb ]
|
||||
cc/DartAPI_New: Fail # Issue #33041
|
||||
cc/DartGeneratedArrayLiteralMessages: Crash # Issue 32190
|
||||
cc/FullSnapshot1: Crash # Issue 32190
|
||||
cc/IsolateReload_LibraryLookup: Fail, Crash # Issue 32190
|
||||
cc/MismatchedSnapshotKinds: Fail, Crash, OK # Script snapshots not supported in Dart 2
|
||||
cc/ScriptSnapshot1: Fail, Crash, OK # Script snapshots not supported in Dart 2
|
||||
cc/ScriptSnapshotsUpdateSubclasses: Fail, Crash, OK # Script snapshots not supported in Dart 2
|
||||
dart/redirection_type_shuffling_test/00: RuntimeError, Pass
|
||||
dart/redirection_type_shuffling_test/none: RuntimeError
|
||||
dart_2/redirection_type_shuffling_test/00: RuntimeError, Pass
|
||||
|
||||
@@ -45,20 +45,36 @@ ISOLATE_UNIT_TEST_CASE(IRTest_TypedDataAOT_Inlining) {
|
||||
LoadIndexedInstr* load_indexed = nullptr;
|
||||
|
||||
ILMatcher cursor(flow_graph, entry);
|
||||
RELEASE_ASSERT(cursor.TryMatch({
|
||||
kMoveGlob,
|
||||
{kMatchAndMoveCheckNull, &check_null},
|
||||
{kMatchAndMoveLoadField, &load_field},
|
||||
kMoveGlob,
|
||||
kMatchAndMoveBranchTrue,
|
||||
kMoveGlob,
|
||||
{kMatchAndMoveGenericCheckBound, &bounds_check},
|
||||
{kMatchAndMoveLoadUntagged, &load_untagged},
|
||||
kMoveParallelMoves,
|
||||
{kMatchAndMoveLoadIndexed, &load_indexed},
|
||||
kMoveGlob,
|
||||
kMatchReturn,
|
||||
}));
|
||||
if (Isolate::Current()->null_safety()) {
|
||||
RELEASE_ASSERT(cursor.TryMatch({
|
||||
kMoveGlob,
|
||||
{kMatchAndMoveLoadField, &load_field},
|
||||
kMoveGlob,
|
||||
kMatchAndMoveBranchTrue,
|
||||
kMoveGlob,
|
||||
{kMatchAndMoveGenericCheckBound, &bounds_check},
|
||||
{kMatchAndMoveLoadUntagged, &load_untagged},
|
||||
kMoveParallelMoves,
|
||||
{kMatchAndMoveLoadIndexed, &load_indexed},
|
||||
kMoveGlob,
|
||||
kMatchReturn,
|
||||
}));
|
||||
} else {
|
||||
RELEASE_ASSERT(cursor.TryMatch({
|
||||
kMoveGlob,
|
||||
{kMatchAndMoveCheckNull, &check_null},
|
||||
{kMatchAndMoveLoadField, &load_field},
|
||||
kMoveGlob,
|
||||
kMatchAndMoveBranchTrue,
|
||||
kMoveGlob,
|
||||
{kMatchAndMoveGenericCheckBound, &bounds_check},
|
||||
{kMatchAndMoveLoadUntagged, &load_untagged},
|
||||
kMoveParallelMoves,
|
||||
{kMatchAndMoveLoadIndexed, &load_indexed},
|
||||
kMoveGlob,
|
||||
kMatchReturn,
|
||||
}));
|
||||
}
|
||||
|
||||
EXPECT(load_field->InputAt(0)->definition()->IsParameter());
|
||||
EXPECT(bounds_check->InputAt(0)->definition() == load_field);
|
||||
@@ -141,51 +157,6 @@ ISOLATE_UNIT_TEST_CASE(IRTest_TypedDataAOT_FunctionalGetSet) {
|
||||
}
|
||||
)";
|
||||
|
||||
std::initializer_list<MatchCode> expected_il = {
|
||||
// Before loop
|
||||
kMoveGlob,
|
||||
kMatchAndMoveCheckNull,
|
||||
kMatchAndMoveLoadField,
|
||||
kMoveGlob,
|
||||
kMatchAndMoveBranchTrue,
|
||||
|
||||
// Loop
|
||||
kMoveGlob,
|
||||
// Load 1
|
||||
kMatchAndMoveGenericCheckBound,
|
||||
kMoveGlob,
|
||||
kMatchAndMoveLoadUntagged,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveLoadIndexed,
|
||||
kMoveGlob,
|
||||
// Load 2
|
||||
kMatchAndMoveGenericCheckBound,
|
||||
kMoveGlob,
|
||||
kMatchAndMoveLoadUntagged,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveLoadIndexed,
|
||||
kMoveGlob,
|
||||
// Store 1
|
||||
kMatchAndMoveGenericCheckBound,
|
||||
kMoveGlob,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveLoadUntagged,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveStoreIndexed,
|
||||
kMoveGlob,
|
||||
// Store 2
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveLoadUntagged,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveStoreIndexed,
|
||||
kMoveGlob,
|
||||
|
||||
// Exit the loop.
|
||||
kMatchAndMoveBranchFalse,
|
||||
kMoveGlob,
|
||||
kMatchReturn,
|
||||
};
|
||||
|
||||
char script_buffer[1024];
|
||||
char uri_buffer[1024];
|
||||
char function_name[1024];
|
||||
@@ -209,7 +180,96 @@ ISOLATE_UNIT_TEST_CASE(IRTest_TypedDataAOT_FunctionalGetSet) {
|
||||
|
||||
// Ensure the IL matches what we expect.
|
||||
ILMatcher cursor(flow_graph, entry);
|
||||
EXPECT(cursor.TryMatch(expected_il));
|
||||
if (Isolate::Current()->null_safety()) {
|
||||
EXPECT(cursor.TryMatch({
|
||||
// Before loop
|
||||
kMoveGlob,
|
||||
kMatchAndMoveLoadField,
|
||||
kMoveGlob,
|
||||
kMatchAndMoveBranchTrue,
|
||||
|
||||
// Loop
|
||||
kMoveGlob,
|
||||
// Load 1
|
||||
kMatchAndMoveGenericCheckBound,
|
||||
kMoveGlob,
|
||||
kMatchAndMoveLoadUntagged,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveLoadIndexed,
|
||||
kMoveGlob,
|
||||
// Load 2
|
||||
kMatchAndMoveGenericCheckBound,
|
||||
kMoveGlob,
|
||||
kMatchAndMoveLoadUntagged,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveLoadIndexed,
|
||||
kMoveGlob,
|
||||
// Store 1
|
||||
kMatchAndMoveGenericCheckBound,
|
||||
kMoveGlob,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveLoadUntagged,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveStoreIndexed,
|
||||
kMoveGlob,
|
||||
// Store 2
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveLoadUntagged,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveStoreIndexed,
|
||||
kMoveGlob,
|
||||
|
||||
// Exit the loop.
|
||||
kMatchAndMoveBranchFalse,
|
||||
kMoveGlob,
|
||||
kMatchReturn,
|
||||
}));
|
||||
} else {
|
||||
EXPECT(cursor.TryMatch({
|
||||
// Before loop
|
||||
kMoveGlob,
|
||||
kMatchAndMoveCheckNull,
|
||||
kMatchAndMoveLoadField,
|
||||
kMoveGlob,
|
||||
kMatchAndMoveBranchTrue,
|
||||
|
||||
// Loop
|
||||
kMoveGlob,
|
||||
// Load 1
|
||||
kMatchAndMoveGenericCheckBound,
|
||||
kMoveGlob,
|
||||
kMatchAndMoveLoadUntagged,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveLoadIndexed,
|
||||
kMoveGlob,
|
||||
// Load 2
|
||||
kMatchAndMoveGenericCheckBound,
|
||||
kMoveGlob,
|
||||
kMatchAndMoveLoadUntagged,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveLoadIndexed,
|
||||
kMoveGlob,
|
||||
// Store 1
|
||||
kMatchAndMoveGenericCheckBound,
|
||||
kMoveGlob,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveLoadUntagged,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveStoreIndexed,
|
||||
kMoveGlob,
|
||||
// Store 2
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveLoadUntagged,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveStoreIndexed,
|
||||
kMoveGlob,
|
||||
|
||||
// Exit the loop.
|
||||
kMatchAndMoveBranchFalse,
|
||||
kMoveGlob,
|
||||
kMatchReturn,
|
||||
}));
|
||||
}
|
||||
};
|
||||
|
||||
check_il("Uint8List");
|
||||
@@ -235,40 +295,6 @@ ISOLATE_UNIT_TEST_CASE(IRTest_TypedDataAOT_FunctionalIndexError) {
|
||||
}
|
||||
)";
|
||||
|
||||
std::initializer_list<MatchCode> expected_il = {
|
||||
// Receiver null check
|
||||
kMoveGlob,
|
||||
kMatchAndMoveCheckNull,
|
||||
|
||||
// Index null check
|
||||
kMoveGlob,
|
||||
kMatchAndMoveCheckNull,
|
||||
|
||||
// Value null check
|
||||
kMoveGlob,
|
||||
kMatchAndMoveCheckNull,
|
||||
|
||||
// LoadField length
|
||||
kMoveGlob,
|
||||
kMatchAndMoveLoadField,
|
||||
|
||||
// Bounds check
|
||||
kMoveGlob,
|
||||
kMatchAndMoveGenericCheckBound,
|
||||
|
||||
// Store value.
|
||||
kMoveGlob,
|
||||
kMatchAndMoveLoadUntagged,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveOptionalUnbox,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveStoreIndexed,
|
||||
|
||||
// Return
|
||||
kMoveGlob,
|
||||
kMatchReturn,
|
||||
};
|
||||
|
||||
char script_buffer[1024];
|
||||
char uri_buffer[1024];
|
||||
char function_name[1024];
|
||||
@@ -299,7 +325,63 @@ ISOLATE_UNIT_TEST_CASE(IRTest_TypedDataAOT_FunctionalIndexError) {
|
||||
|
||||
// Ensure the IL matches what we expect.
|
||||
ILMatcher cursor(flow_graph, entry, /*trace=*/true);
|
||||
EXPECT(cursor.TryMatch(expected_il));
|
||||
if (Isolate::Current()->null_safety()) {
|
||||
EXPECT(cursor.TryMatch({
|
||||
// LoadField length
|
||||
kMoveGlob,
|
||||
kMatchAndMoveLoadField,
|
||||
|
||||
// Bounds check
|
||||
kMoveGlob,
|
||||
kMatchAndMoveGenericCheckBound,
|
||||
|
||||
// Store value.
|
||||
kMoveGlob,
|
||||
kMatchAndMoveLoadUntagged,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveOptionalUnbox,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveStoreIndexed,
|
||||
|
||||
// Return
|
||||
kMoveGlob,
|
||||
kMatchReturn,
|
||||
}));
|
||||
} else {
|
||||
EXPECT(cursor.TryMatch({
|
||||
// Receiver null check
|
||||
kMoveGlob,
|
||||
kMatchAndMoveCheckNull,
|
||||
|
||||
// Index null check
|
||||
kMoveGlob,
|
||||
kMatchAndMoveCheckNull,
|
||||
|
||||
// Value null check
|
||||
kMoveGlob,
|
||||
kMatchAndMoveCheckNull,
|
||||
|
||||
// LoadField length
|
||||
kMoveGlob,
|
||||
kMatchAndMoveLoadField,
|
||||
|
||||
// Bounds check
|
||||
kMoveGlob,
|
||||
kMatchAndMoveGenericCheckBound,
|
||||
|
||||
// Store value.
|
||||
kMoveGlob,
|
||||
kMatchAndMoveLoadUntagged,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveOptionalUnbox,
|
||||
kMoveParallelMoves,
|
||||
kMatchAndMoveStoreIndexed,
|
||||
|
||||
// Return
|
||||
kMoveGlob,
|
||||
kMatchReturn,
|
||||
}));
|
||||
}
|
||||
|
||||
// Compile the graph and attach the code.
|
||||
pipeline.CompileGraphAndAttachFunction();
|
||||
@@ -348,7 +430,11 @@ ISOLATE_UNIT_TEST_CASE(IRTest_TypedDataAOT_FunctionalIndexError) {
|
||||
TypedData::Handle(TypedData::New(kTypedDataInt8ArrayCid, 16));
|
||||
const auto& int_value = Integer::Handle(Integer::New(42));
|
||||
const auto& float_value = Double::Handle(Double::New(4.2));
|
||||
for (intptr_t stage = 0; stage <= kLastStage; ++stage) {
|
||||
// With null safety nulls cannot be passed as non-nullable arguments, so
|
||||
// skip all error stages and only run the last stage.
|
||||
const intptr_t first_stage =
|
||||
Isolate::Current()->null_safety() ? kLastStage : 0;
|
||||
for (intptr_t stage = first_stage; stage <= kLastStage; ++stage) {
|
||||
run_test("Uint8List", "int", int8_list, int_value, stage);
|
||||
run_test("Int8List", "int", uint8_list, int_value, stage);
|
||||
run_test("Uint8ClampedList", "int", uint8c_list, int_value, stage);
|
||||
|
||||
@@ -5691,6 +5691,7 @@ bool Class::RequireLegacyErasureOfConstants(Zone* zone) const {
|
||||
type = type_arguments.TypeAt(from_index + i);
|
||||
if (!type.IsLegacy() && !type.IsVoidType() && !type.IsDynamicType() &&
|
||||
!type.IsNullType()) {
|
||||
set.Release();
|
||||
return true;
|
||||
}
|
||||
// It is not possible for a legacy type to have non-legacy type
|
||||
|
||||
@@ -444,13 +444,21 @@ ISOLATE_UNIT_TEST_CASE(TTS_GenericSubtypeRangeCheck) {
|
||||
|
||||
const auto& type_dynamic = Type::Handle(Type::DynamicType());
|
||||
auto& type_int = Type::Handle(Type::IntType());
|
||||
type_int = type_int.ToNullability(Nullability::kLegacy, Heap::kNew);
|
||||
if (!TestCase::IsNNBD()) {
|
||||
type_int = type_int.ToNullability(Nullability::kLegacy, Heap::kNew);
|
||||
}
|
||||
auto& type_string = Type::Handle(Type::StringType());
|
||||
type_string = type_string.ToNullability(Nullability::kLegacy, Heap::kNew);
|
||||
if (!TestCase::IsNNBD()) {
|
||||
type_string = type_string.ToNullability(Nullability::kLegacy, Heap::kNew);
|
||||
}
|
||||
auto& type_object = Type::Handle(Type::ObjectType());
|
||||
type_object = type_object.ToNullability(Nullability::kLegacy, Heap::kNew);
|
||||
type_object = type_object.ToNullability(
|
||||
TestCase::IsNNBD() ? Nullability::kNullable : Nullability::kLegacy,
|
||||
Heap::kNew);
|
||||
auto& type_a1 = Type::Handle(class_a1.DeclarationType());
|
||||
type_a1 = type_a1.ToNullability(Nullability::kLegacy, Heap::kNew);
|
||||
if (!TestCase::IsNNBD()) {
|
||||
type_a1 = type_a1.ToNullability(Nullability::kLegacy, Heap::kNew);
|
||||
}
|
||||
FinalizeAndCanonicalize(class_null, &type_a1);
|
||||
|
||||
const auto& tav_null = TypeArguments::Handle(TypeArguments::null());
|
||||
|
||||
@@ -1473,7 +1473,7 @@
|
||||
"language",
|
||||
"lib",
|
||||
"standalone/io",
|
||||
"vm/dart"
|
||||
"vm"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1485,7 +1485,7 @@
|
||||
"language",
|
||||
"lib",
|
||||
"standalone/io",
|
||||
"vm/dart"
|
||||
"vm"
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -1850,7 +1850,7 @@
|
||||
"lib",
|
||||
"co19",
|
||||
"standalone/io",
|
||||
"vm/dart"
|
||||
"vm"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1863,7 +1863,7 @@
|
||||
"lib",
|
||||
"co19",
|
||||
"standalone/io",
|
||||
"vm/dart"
|
||||
"vm"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user