mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 03:07:49 +00:00
Disallow deferred loading when using isolate reloading.
Update status files. BUG= R=rmacnak@google.com Review URL: https://codereview.chromium.org/2144113002 .
This commit is contained in:
parent
05c1eac65d
commit
77b99396e8
|
@ -1299,10 +1299,16 @@ DEFINE_RUNTIME_ENTRY(StackOverflow, 0) {
|
|||
DeoptimizeFunctionsOnStack();
|
||||
}
|
||||
if (do_reload) {
|
||||
#ifndef PRODUCT
|
||||
// Maybe adjust the rate of future reloads.
|
||||
isolate->MaybeIncreaseReloadEveryNStackOverflowChecks();
|
||||
// Issue a reload.
|
||||
NOT_IN_PRODUCT(isolate->ReloadSources();)
|
||||
isolate->ReloadSources();
|
||||
const Error& error = Error::Handle(isolate->sticky_reload_error());
|
||||
if (!error.IsNull()) {
|
||||
FATAL1("*** Isolate reload failed: %s\n", error.ToErrorCString());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
if (FLAG_support_debugger && do_stacktrace) {
|
||||
String& var_name = String::Handle();
|
||||
|
|
|
@ -727,24 +727,47 @@ bool IsolateReloadContext::ValidateReload() {
|
|||
return false;
|
||||
}
|
||||
|
||||
// Already built.
|
||||
ASSERT(class_map_storage_ != Array::null());
|
||||
UnorderedHashMap<ClassMapTraits> map(class_map_storage_);
|
||||
UnorderedHashMap<ClassMapTraits>::Iterator it(&map);
|
||||
Class& cls = Class::Handle();
|
||||
Class& new_cls = Class::Handle();
|
||||
while (it.MoveNext()) {
|
||||
const intptr_t entry = it.Current();
|
||||
new_cls = Class::RawCast(map.GetKey(entry));
|
||||
cls = Class::RawCast(map.GetPayload(entry, 0));
|
||||
if (new_cls.raw() != cls.raw()) {
|
||||
if (!cls.CanReload(new_cls)) {
|
||||
map.Release();
|
||||
return false;
|
||||
// Validate libraries.
|
||||
{
|
||||
ASSERT(library_map_storage_ != Array::null());
|
||||
UnorderedHashMap<LibraryMapTraits> map(library_map_storage_);
|
||||
UnorderedHashMap<LibraryMapTraits>::Iterator it(&map);
|
||||
Library& lib = Library::Handle();
|
||||
Library& new_lib = Library::Handle();
|
||||
while (it.MoveNext()) {
|
||||
const intptr_t entry = it.Current();
|
||||
new_lib = Library::RawCast(map.GetKey(entry));
|
||||
lib = Library::RawCast(map.GetPayload(entry, 0));
|
||||
if (new_lib.raw() != lib.raw()) {
|
||||
if (!lib.CanReload(new_lib)) {
|
||||
map.Release();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
map.Release();
|
||||
}
|
||||
|
||||
// Validate classes.
|
||||
{
|
||||
ASSERT(class_map_storage_ != Array::null());
|
||||
UnorderedHashMap<ClassMapTraits> map(class_map_storage_);
|
||||
UnorderedHashMap<ClassMapTraits>::Iterator it(&map);
|
||||
Class& cls = Class::Handle();
|
||||
Class& new_cls = Class::Handle();
|
||||
while (it.MoveNext()) {
|
||||
const intptr_t entry = it.Current();
|
||||
new_cls = Class::RawCast(map.GetKey(entry));
|
||||
cls = Class::RawCast(map.GetPayload(entry, 0));
|
||||
if (new_cls.raw() != cls.raw()) {
|
||||
if (!cls.CanReload(new_cls)) {
|
||||
map.Release();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
map.Release();
|
||||
}
|
||||
map.Release();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -527,6 +527,22 @@ bool Class::CanReload(const Class& replacement) const {
|
|||
|
||||
|
||||
bool Library::CanReload(const Library& replacement) const {
|
||||
// TODO(26878): If the replacement library uses deferred loading,
|
||||
// reject it. We do not yet support reloading deferred libraries.
|
||||
LibraryPrefix& prefix = LibraryPrefix::Handle();
|
||||
LibraryPrefixIterator it(replacement);
|
||||
while (it.HasNext()) {
|
||||
prefix = it.GetNext();
|
||||
if (prefix.is_deferred_load()) {
|
||||
const String& lib_url = String::Handle(replacement.url());
|
||||
const String& prefix_name = String::Handle(prefix.name());
|
||||
IRC->ReportError(String::Handle(String::NewFormatted(
|
||||
"Reloading support for deferred loading has not yet been implemented:"
|
||||
" library '%s' has deferred import '%s'",
|
||||
lib_url.ToCString(), prefix_name.ToCString())));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -194,7 +194,32 @@ Language/Expressions/Object_Identity/double_t02: RuntimeError # Issue #26374
|
|||
LibTest/typed_data/Float32x4/operator_division_A01_t02: RuntimeError # Issue #26675
|
||||
|
||||
[ $hot_reload ]
|
||||
LibTest/async/DeferredLibrary/DeferredLibrary_A01_t01: SkipByDesign # Requires deferred libraries
|
||||
Language/Expressions/Assignment/prefix_object_t02: Crash # Requires deferred libraries
|
||||
Language/Expressions/Constants/constant_constructor_t03: Crash # Requires deferred libraries
|
||||
Language/Expressions/Constants/identifier_denotes_a_constant_t06: Crash # Requires deferred libraries
|
||||
Language/Expressions/Constants/identifier_denotes_a_constant_t07: Crash # Requires deferred libraries
|
||||
Language/Expressions/Constants/static_constant_t06: Crash # Requires deferred libraries
|
||||
Language/Expressions/Constants/static_constant_t07: Crash # Requires deferred libraries
|
||||
Language/Expressions/Constants/top_level_function_t04: Crash # Requires deferred libraries
|
||||
Language/Expressions/Constants/top_level_function_t05: Crash # Requires deferred libraries
|
||||
Language/Expressions/Instance_Creation/Const/deferred_type_t01: Crash # Requires deferred libraries
|
||||
Language/Expressions/Instance_Creation/Const/deferred_type_t02: Crash # Requires deferred libraries
|
||||
Language/Expressions/Instance_Creation/New/evaluation_t19: Crash # Requires deferred libraries
|
||||
Language/Expressions/Instance_Creation/New/evaluation_t20: Crash # Requires deferred libraries
|
||||
Language/Expressions/Property_Extraction/Ordinary_Member_Closurization/method_identical_t03: SkipByDesign # Relies on closure identity
|
||||
Language/Expressions/Property_Extraction/Anonymous_Constructor_Extraction/deferred_type_t01: Crash # Requires deferred libraries
|
||||
Language/Expressions/Property_Extraction/Named_Constructor_Extraction/deferred_type_t01: Crash # Requires deferred libraries
|
||||
Language/Expressions/Type_Cast/evaluation_t10: Crash # Requires deferred libraries
|
||||
Language/Expressions/Type_Test/evaluation_t10: Crash # Requires deferred libraries
|
||||
Language/Libraries_and_Scripts/Imports/deferred_import_t01: Crash # Requires deferred libraries
|
||||
Language/Libraries_and_Scripts/Imports/deferred_import_t02: Crash # Requires deferred libraries
|
||||
Language/Libraries_and_Scripts/Imports/invalid_uri_deferred_t01: Crash # Requires deferred libraries
|
||||
Language/Libraries_and_Scripts/Imports/invalid_uri_deferred_t02: Crash # Requires deferred libraries
|
||||
Language/Libraries_and_Scripts/Imports/invalid_uri_deferred_t03: Crash # Requires deferred libraries
|
||||
Language/Libraries_and_Scripts/Imports/static_type_t01: Crash # Requires deferred libraries
|
||||
Language/Types/Dynamic_Type_System/deferred_type_error_t01: Crash # Requires deferred libraries
|
||||
Language/Types/Static_Types/deferred_type_t01: Crash # Requires deferred libraries
|
||||
LibTest/async/DeferredLibrary/DeferredLibrary_A01_t01: Crash # Requires deferred libraries
|
||||
LibTest/collection/ListBase/ListBase_class_A01_t01: Pass, Timeout
|
||||
LibTest/collection/ListBase/ListBase_class_A01_t02: Pass, Timeout
|
||||
LibTest/collection/ListMixin/ListMixin_class_A01_t01: Pass, Timeout
|
||||
|
@ -203,4 +228,3 @@ LibTest/core/List/List_class_A01_t02: Pass, Timeout
|
|||
LibTest/core/Map/Map_class_A01_t04: Pass, Timeout
|
||||
LibTest/core/Uri/Uri_A06_t03: Pass, Timeout
|
||||
LibTest/core/Uri/encodeQueryComponent_A01_t02: Pass, Timeout
|
||||
Language/Libraries_and_Scripts/Imports/deferred_import_t02: SkipByDesign # Requires deferred libraries
|
||||
|
|
|
@ -209,8 +209,8 @@ issue_24243_parent_isolate_test: Skip # Requires checked mode
|
|||
*: Skip # Issue #26373
|
||||
|
||||
[ $hot_reload ]
|
||||
deferred_in_isolate_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_in_isolate2_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_in_isolate_test: Crash # Requires deferred libraries
|
||||
deferred_in_isolate2_test: Crash # Requires deferred libraries
|
||||
function_send_test: SkipByDesign # Closure identity
|
||||
issue_21398_parent_isolate2_test: SkipByDesign # Requires deferred libraries
|
||||
issue_21398_parent_isolate2_test: Crash # Requires deferred libraries
|
||||
message3_test/fun: SkipByDesign # Closure identity
|
||||
|
|
|
@ -250,31 +250,37 @@ issue23244_test: Skip # Issue #26373
|
|||
|
||||
[ $hot_reload ]
|
||||
bound_closure_equality_test: SkipByDesign # Closure identity
|
||||
cha_deopt1_test: SkipByDesign # Requires deferred libraries
|
||||
cha_deopt2_test: SkipByDesign # Requires deferred libraries
|
||||
cha_deopt3_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_closurize_load_library_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_constant_list_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_constraints_constants_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_constraints_type_annotation_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_function_type_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_global_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_load_constants_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_load_inval_code_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_mixin_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_no_such_method_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_only_constant_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_optimized_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_redirecting_factory_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_regression_22995_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_shadow_load_library_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_shared_and_unshared_classes_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_static_seperate_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_super_dependency_test: SkipByDesign # Requires deferred libraries
|
||||
deferred_type_dependency_test: SkipByDesign # Requires deferred libraries
|
||||
issue_1751477_test: SkipByDesign # Requires deferred libraries
|
||||
cha_deopt1_test: Crash # Requires deferred libraries
|
||||
cha_deopt2_test: Crash # Requires deferred libraries
|
||||
cha_deopt3_test: Crash # Requires deferred libraries
|
||||
deferred_call_empty_before_load_test: Crash # Requires deferred libraries
|
||||
deferred_closurize_load_library_test: Crash # Requires deferred libraries
|
||||
deferred_constant_list_test: Crash # Requires deferred libraries
|
||||
deferred_constraints_constants_test: Crash # Requires deferred libraries
|
||||
deferred_constraints_type_annotation_test: Crash # Requires deferred libraries
|
||||
deferred_function_type_test: Crash # Requires deferred libraries
|
||||
deferred_global_test: Crash # Requires deferred libraries
|
||||
deferred_import_core_test: Crash # Requires deferred libraries
|
||||
deferred_inlined_test: Crash # Requires deferred libraries
|
||||
deferred_inheritance_constraints_test: Crash # Requires deferred libraries
|
||||
deferred_load_constants_test: Crash # Requires deferred libraries
|
||||
deferred_load_inval_code_test: Crash # Requires deferred libraries
|
||||
deferred_load_library_wrong_args_test: Crash # Requires deferred libraries
|
||||
deferred_mixin_test: Crash # Requires deferred libraries
|
||||
deferred_no_such_method_test: Crash # Requires deferred libraries
|
||||
deferred_not_loaded_check_test: Crash # Requires deferred libraries
|
||||
deferred_only_constant_test: Crash # Requires deferred libraries
|
||||
deferred_optimized_test: Crash # Requires deferred libraries
|
||||
deferred_redirecting_factory_test: Crash # Requires deferred libraries
|
||||
deferred_regression_22995_test: Crash # Requires deferred libraries
|
||||
deferred_shadow_load_library_test: Crash # Requires deferred libraries
|
||||
deferred_shared_and_unshared_classes_test: Crash # Requires deferred libraries
|
||||
deferred_static_seperate_test: Crash # Requires deferred libraries
|
||||
deferred_super_dependency_test: Pass, Crash # Requires deferred libraries
|
||||
deferred_type_dependency_test: Crash # Requires deferred libraries
|
||||
issue_1751477_test: Crash # Requires deferred libraries
|
||||
issue23244_test: Fail # Issue 26877
|
||||
regress_23408_test: SkipByDesign # Requires deferred libraries
|
||||
regress_22443_test: SkipByDesign # Requires deferred libraries
|
||||
tearoff_basic_test: SkipByDesign # Requires deferred libraries
|
||||
regress_23408_test: Crash # Requires deferred libraries
|
||||
regress_22443_test: Crash # Requires deferred libraries
|
||||
tearoff_basic_test: Crash # Requires deferred libraries
|
||||
static_closure_identical_test: SkipByDesign # Closure identity
|
||||
|
|
|
@ -389,12 +389,13 @@ mirrors/generic_bounded_test/02: Fail # Type equality - Issue 26869
|
|||
mirrors/generic_bounded_by_type_parameter_test/02: Fail # Type equality - Issue 26869
|
||||
mirrors/typedef_reflected_type_test/01: Fail # Type equality - Issue 26869
|
||||
|
||||
mirrors/library_enumeration_deferred_loading_test: Fail # Deferred loading
|
||||
mirrors/library_import_deferred_loading_test: Fail # Deferred loading
|
||||
mirrors/typedef_deferred_library_test: Fail # Deferred loading
|
||||
mirrors/deferred_mirrors_update_test: Fail # Deferred loading
|
||||
mirrors/deferred_mirrors_metadata_test: Fail # Deferred loading
|
||||
mirrors/deferred_mirrors_metatarget_test: Crash, Fail # Deferred loading
|
||||
mirrors/load_library_test: Fail # Deferred loading
|
||||
mirrors/library_enumeration_deferred_loading_test: Crash # Deferred loading
|
||||
mirrors/library_imports_deferred_test: Crash # Deferred loading
|
||||
mirrors/library_import_deferred_loading_test: Crash # Deferred loading
|
||||
mirrors/typedef_deferred_library_test: Crash # Deferred loading
|
||||
mirrors/deferred_mirrors_update_test: Crash # Deferred loading
|
||||
mirrors/deferred_mirrors_metadata_test: Crash # Deferred loading
|
||||
mirrors/deferred_mirrors_metatarget_test: Crash # Deferred loading
|
||||
mirrors/load_library_test: Crash # Deferred loading
|
||||
|
||||
mirrors/metadata_scope_test/none: Fail # Constant equality - Issue 26868
|
||||
|
|
|
@ -323,7 +323,7 @@ out_of_memory_test: Skip # Issue #26377
|
|||
deferred_transitive_import_error_test: Skip # Contains intentional errors.
|
||||
|
||||
[ $hot_reload ]
|
||||
deferred_transitive_import_error_test: SkipByDesign # Uses deferred imports.
|
||||
deferred_transitive_import_error_test: Crash # Uses deferred imports.
|
||||
package/*: SkipByDesign # Launches VMs in interesting ways.
|
||||
|
||||
[ $builder_tag == no_ipv6 ]
|
||||
|
|
Loading…
Reference in a new issue