VM: Save one bool when serializing library prefixes.

When loading a snapshot all library prefixes should be considered not
loaded. This makes code running from a JIT snapshot throw the correct
error when using a deferred prefix before it is loaded.

Also, update test status and avoid skipping tests.

BUG=
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2416963003 .
This commit is contained in:
Florian Schneider 2016-10-13 13:36:19 -07:00
parent 318e842389
commit 701b91eb31
3 changed files with 58 additions and 15 deletions

View file

@ -2783,7 +2783,6 @@ class LibraryPrefixSerializationCluster : public SerializationCluster {
}
s->Write<uint16_t>(prefix->ptr()->num_imports_);
s->Write<bool>(prefix->ptr()->is_deferred_load_);
s->Write<bool>(prefix->ptr()->is_loaded_);
}
}
@ -2825,7 +2824,7 @@ class LibraryPrefixDeserializationCluster : public DeserializationCluster {
}
prefix->ptr()->num_imports_ = d->Read<uint16_t>();
prefix->ptr()->is_deferred_load_ = d->Read<bool>();
prefix->ptr()->is_loaded_ = d->Read<bool>();
prefix->ptr()->is_loaded_ = false;
}
}
};

View file

@ -1189,7 +1189,7 @@ RawLibraryPrefix* LibraryPrefix::ReadFrom(SnapshotReader* reader,
reader->Read<int16_t>());
prefix.StoreNonPointer(&prefix.raw_ptr()->is_deferred_load_,
reader->Read<bool>());
prefix.StoreNonPointer(&prefix.raw_ptr()->is_loaded_, reader->Read<bool>());
prefix.StoreNonPointer(&prefix.raw_ptr()->is_loaded_, false);
// Set all the object fields.
READ_OBJECT_FIELDS(prefix,
@ -1220,7 +1220,6 @@ void RawLibraryPrefix::WriteTo(SnapshotWriter* writer,
// Write out all non object fields.
writer->Write<int16_t>(ptr()->num_imports_);
writer->Write<bool>(ptr()->is_deferred_load_);
writer->Write<bool>(ptr()->is_loaded_);
// Write out all the object pointer fields.
SnapshotWriterVisitor visitor(writer, kAsReference);

View file

@ -179,17 +179,62 @@ super_call4_test: SkipByDesign
super_getter_setter_test: SkipByDesign
vm/reflect_core_vm_test: SkipByDesign
[ $noopt || $compiler == precompiler || $compiler == dart2app || $compiler == dart2appjit || $mode == product ]
# Deferred loading happens eagerly
regress_23408_test: Skip
deferred_inheritance_constraints_test: Skip
deferred_global_test: Skip
deferred_load_constants_test: Skip
tearoff_basic_test: Skip
deferred_static_seperate_test: Skip
deferred_constraints_type_annotation_test/new_before_load: Skip
regress_22443_test: Skip
deferred_not_loaded_check_test: Skip
[ $noopt ]
# Deferred loading happens eagerly. Issue #27587
regress_23408_test: Fail
deferred_inheritance_constraints_test/redirecting_constructor: Fail
deferred_global_test: Fail
deferred_load_constants_test/02: Fail
deferred_load_constants_test/03: Fail
deferred_load_constants_test/05: Fail
tearoff_basic_test: Fail
regress_22443_test: Fail
deferred_not_loaded_check_test: Fail
[ $mode == product ]
# Deferred loading happens eagerly. Issue #27587
regress_23408_test: Fail
deferred_inheritance_constraints_test/redirecting_constructor: Fail
deferred_load_constants_test/02: Fail
deferred_load_constants_test/03: Fail
deferred_load_constants_test/05: Fail
tearoff_basic_test: Fail
deferred_not_loaded_check_test: Fail
[ $compiler == dart2appjit ]
# Deferred loading happens eagerly. Issue #27587
regress_23408_test: Fail
deferred_inheritance_constraints_test/redirecting_constructor: Fail
deferred_load_constants_test/none: Fail
deferred_load_constants_test/02: Fail
deferred_load_constants_test/03: Fail
deferred_load_constants_test/05: Fail
tearoff_basic_test: Fail
deferred_static_seperate_test: Fail
deferred_constraints_type_annotation_test/new_before_load: Fail
regress_22443_test: Fail
deferred_not_loaded_check_test: Fail
[ $compiler == dart2app ]
# Deferred loading happens eagerly. Issue #27587
regress_23408_test: Fail
deferred_inheritance_constraints_test/redirecting_constructor: Fail
deferred_load_constants_test/02: Fail
deferred_load_constants_test/03: Fail
deferred_load_constants_test/05: Fail
tearoff_basic_test: Fail
deferred_not_loaded_check_test: Fail
[ $compiler == precompiler ]
# Deferred loading happens eagerly. Issue #27587
regress_23408_test: Fail
deferred_inheritance_constraints_test/redirecting_constructor: Fail
deferred_global_test: Fail
deferred_load_constants_test/02: Fail
deferred_load_constants_test/03: Fail
deferred_load_constants_test/05: Fail
tearoff_basic_test: Fail
deferred_not_loaded_check_test: Fail
[ $compiler == precompiler || $compiler == dart2app || $compiler == dart2appjit ]
ct_const2_test: Skip # Incompatible flag: --compile_all