Version 2.12.0-235.0.dev
Merge commit '1b38b8522395d1c0f220b4ead4f263de9050729f' into 'dev'
diff --git a/runtime/vm/class_table.h b/runtime/vm/class_table.h
index 529040e..3660e29 100644
--- a/runtime/vm/class_table.h
+++ b/runtime/vm/class_table.h
@@ -25,7 +25,7 @@
class Isolate;
class IsolateGroup;
class IsolateGroupReloadContext;
-class IsolateReloadContext;
+class ProgramReloadContext;
class JSONArray;
class JSONObject;
class JSONStream;
@@ -144,7 +144,7 @@
}
void ResetBeforeHotReload() {
- // The [IsolateReloadContext] is now source-of-truth for GC.
+ // The [ProgramReloadContext] is now source-of-truth for GC.
auto table = table_.load();
for (intptr_t i = 0; i < top_; i++) {
// Don't use memset, which changes this from a relaxed atomic operation
@@ -156,7 +156,7 @@
void ResetAfterHotReload(intptr_t* old_table,
intptr_t num_old_cids,
bool is_rollback) {
- // The [IsolateReloadContext] is no longer source-of-truth for GC after we
+ // The [ProgramReloadContext] is no longer source-of-truth for GC after we
// return, so we restore size information for all classes.
if (is_rollback) {
SetNumCids(num_old_cids);
@@ -259,7 +259,7 @@
ClassPtr** tlc_copy,
intptr_t* copy_num_cids,
intptr_t* copy_num_tlc_cids) {
- // The [IsolateReloadContext] will need to maintain a copy of the old class
+ // The [ProgramReloadContext] will need to maintain a copy of the old class
// table until instances have been morphed.
const intptr_t num_cids = NumCids();
const intptr_t num_tlc_cids = NumTopLevelCids();
@@ -298,7 +298,7 @@
intptr_t num_old_cids,
intptr_t num_old_tlc_cids,
bool is_rollback) {
- // The [IsolateReloadContext] is no longer source-of-truth for GC after we
+ // The [ProgramReloadContext] is no longer source-of-truth for GC after we
// return, so we restore size information for all classes.
if (is_rollback) {
SetNumCids(num_old_cids, num_old_tlc_cids);
diff --git a/runtime/vm/heap/heap.h b/runtime/vm/heap/heap.h
index 9fbe5c1..ac1f0ff 100644
--- a/runtime/vm/heap/heap.h
+++ b/runtime/vm/heap/heap.h
@@ -428,7 +428,7 @@
friend class ServiceEvent;
friend class Scavenger; // VerifyGC
friend class PageSpace; // VerifyGC
- friend class IsolateReloadContext; // VisitObjects
+ friend class ProgramReloadContext; // VisitObjects
friend class ClassFinalizer; // VisitObjects
friend class HeapIterationScope; // VisitObjects
friend class ProgramVisitor; // VisitObjectsImagePages
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index c9ec72a..a837201 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -879,7 +879,7 @@
void Isolate::RegisterClass(const Class& cls) {
#if !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME)
if (group()->IsReloading()) {
- reload_context()->RegisterClass(cls);
+ program_reload_context()->RegisterClass(cls);
return;
}
#endif // !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME)
@@ -1721,7 +1721,7 @@
Isolate::~Isolate() {
#if !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME)
// TODO(32796): Re-enable assertion.
- // RELEASE_ASSERT(reload_context_ == NULL);
+ // RELEASE_ASSERT(program_reload_context_ == NULL);
#endif // !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME)
delete optimizing_background_compiler_;
@@ -1995,8 +1995,8 @@
ForEachIsolate([&](Isolate* isolate) {
isolate->SetHasAttemptedReload(true);
- isolate->reload_context_ =
- new IsolateReloadContext(group_reload_context_, isolate);
+ isolate->program_reload_context_ =
+ new ProgramReloadContext(group_reload_context_, isolate);
});
const bool success =
group_reload_context_->Reload(force_reload, root_script_url, packages_url,
@@ -2028,8 +2028,8 @@
ForEachIsolate([&](Isolate* isolate) {
isolate->SetHasAttemptedReload(true);
- isolate->reload_context_ =
- new IsolateReloadContext(group_reload_context_, isolate);
+ isolate->program_reload_context_ =
+ new ProgramReloadContext(group_reload_context_, isolate);
});
const bool success = group_reload_context_->Reload(
force_reload,
@@ -2051,8 +2051,8 @@
// Another thread may be in the middle of GetClassForHeapWalkAt.
SafepointOperationScope safepoint_scope(Thread::Current());
- delete reload_context_;
- reload_context_ = nullptr;
+ delete program_reload_context_;
+ program_reload_context_ = nullptr;
}
#endif // !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME)
@@ -2609,9 +2609,10 @@
}
#if !defined(DART_PRECOMPILED_RUNTIME)
// Visit objects that are being used for isolate reload.
- if (reload_context() != nullptr) {
- reload_context()->VisitObjectPointers(visitor);
- reload_context()->group_reload_context()->VisitObjectPointers(visitor);
+ if (program_reload_context() != nullptr) {
+ program_reload_context()->VisitObjectPointers(visitor);
+ program_reload_context()->group_reload_context()->VisitObjectPointers(
+ visitor);
}
#endif // !defined(DART_PRECOMPILED_RUNTIME)
if (ServiceIsolate::IsServiceIsolate(this)) {
@@ -2808,7 +2809,7 @@
ClassPtr raw_class = nullptr;
#if !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME)
if (group()->IsReloading()) {
- raw_class = reload_context()->GetClassForHeapWalkAt(cid);
+ raw_class = program_reload_context()->GetClassForHeapWalkAt(cid);
} else {
raw_class = group()->class_table()->At(cid);
}
@@ -3351,11 +3352,12 @@
set_message_notify_callback(Isolate::WakePauseEventHandler);
#if !defined(DART_PRECOMPILED_RUNTIME)
- const bool had_isolate_reload_context = reload_context() != nullptr;
- const int64_t start_time_micros =
- !had_isolate_reload_context
- ? 0
- : reload_context()->group_reload_context()->start_time_micros();
+ const bool had_program_reload_context = program_reload_context() != nullptr;
+ const int64_t start_time_micros = !had_program_reload_context
+ ? 0
+ : program_reload_context()
+ ->group_reload_context()
+ ->start_time_micros();
#endif // !defined(DART_PRECOMPILED_RUNTIME)
bool resume = false;
bool handle_non_service_messages = false;
@@ -3374,7 +3376,7 @@
}
#if !defined(DART_PRECOMPILED_RUNTIME)
- if (had_isolate_reload_context && (reload_context() == nullptr)) {
+ if (had_program_reload_context && (program_reload_context() == nullptr)) {
if (FLAG_trace_reload) {
const int64_t reload_time_micros =
OS::GetCurrentMonotonicMicros() - start_time_micros;
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
index 4a0bab0..0b8dd2c 100644
--- a/runtime/vm/isolate.h
+++ b/runtime/vm/isolate.h
@@ -57,7 +57,7 @@
class ICData;
class IsolateObjectStore;
class IsolateProfilerData;
-class IsolateReloadContext;
+class ProgramReloadContext;
class Log;
class Message;
class MessageHandler;
@@ -1202,7 +1202,9 @@
VMTagCounters* vm_tag_counters() { return &vm_tag_counters_; }
#if !defined(DART_PRECOMPILED_RUNTIME)
- IsolateReloadContext* reload_context() { return reload_context_; }
+ ProgramReloadContext* program_reload_context() {
+ return program_reload_context_;
+ }
void DeleteReloadContext();
@@ -1604,7 +1606,7 @@
0; // we can only reload when this is 0.
// Per-isolate copy of FLAG_reload_every.
intptr_t reload_every_n_stack_overflow_checks_;
- IsolateReloadContext* reload_context_ = nullptr;
+ ProgramReloadContext* program_reload_context_ = nullptr;
// Ring buffer of objects assigned an id.
ObjectIdRing* object_id_ring_ = nullptr;
#endif // !defined(PRODUCT)
diff --git a/runtime/vm/isolate_reload.cc b/runtime/vm/isolate_reload.cc
index 3d8f990..21ffcf2 100644
--- a/runtime/vm/isolate_reload.cc
+++ b/runtime/vm/isolate_reload.cc
@@ -347,7 +347,7 @@
if (!a.IsClass() || !b.IsClass()) {
return false;
}
- return IsolateReloadContext::IsSameClass(Class::Cast(a), Class::Cast(b));
+ return ProgramReloadContext::IsSameClass(Class::Cast(a), Class::Cast(b));
}
static uword Hash(const Object& obj) {
@@ -372,7 +372,7 @@
if (!a.IsLibrary() || !b.IsLibrary()) {
return false;
}
- return IsolateReloadContext::IsSameLibrary(Library::Cast(a),
+ return ProgramReloadContext::IsSameLibrary(Library::Cast(a),
Library::Cast(b));
}
@@ -405,7 +405,7 @@
}
};
-bool IsolateReloadContext::IsSameClass(const Class& a, const Class& b) {
+bool ProgramReloadContext::IsSameClass(const Class& a, const Class& b) {
// TODO(turnidge): We need to look at generic type arguments for
// synthetic mixin classes. Their names are not necessarily unique
// currently.
@@ -425,7 +425,7 @@
return (a_lib.private_key() == b_lib.private_key());
}
-bool IsolateReloadContext::IsSameLibrary(const Library& a_lib,
+bool ProgramReloadContext::IsSameLibrary(const Library& a_lib,
const Library& b_lib) {
const String& a_lib_url =
String::Handle(a_lib.IsNull() ? String::null() : a_lib.url());
@@ -453,7 +453,7 @@
old_root_url_prefix_(String::null()) {}
IsolateGroupReloadContext::~IsolateGroupReloadContext() {}
-IsolateReloadContext::IsolateReloadContext(
+ProgramReloadContext::ProgramReloadContext(
std::shared_ptr<IsolateGroupReloadContext> group_reload_context,
Isolate* isolate)
: zone_(Thread::Current()->zone()),
@@ -470,13 +470,13 @@
become_enum_mappings_(GrowableObjectArray::null()),
saved_root_library_(Library::null()),
saved_libraries_(GrowableObjectArray::null()) {
- // NOTE: DO NOT ALLOCATE ANY RAW OBJECTS HERE. The IsolateReloadContext is not
+ // NOTE: DO NOT ALLOCATE ANY RAW OBJECTS HERE. The ProgramReloadContext is not
// associated with the isolate yet and if a GC is triggered here the raw
// objects will not be properly accounted for.
ASSERT(zone_ != NULL);
}
-IsolateReloadContext::~IsolateReloadContext() {
+ProgramReloadContext::~ProgramReloadContext() {
ASSERT(zone_ == Thread::Current()->zone());
ASSERT(saved_class_table_.load(std::memory_order_relaxed) == nullptr);
ASSERT(saved_tlc_class_table_.load(std::memory_order_relaxed) == nullptr);
@@ -682,9 +682,10 @@
// TODO(johnmccutchan): Deoptimizing dependent code here (before the reload)
// is paranoid. This likely can be moved to the commit phase.
ForEachIsolate([&](Isolate* isolate) {
- isolate->reload_context()->EnsuredUnoptimizedCodeForStack();
- isolate->reload_context()->DeoptimizeDependentCode();
- isolate->reload_context()->ReloadPhase1AllocateStorageMapsAndCheckpoint();
+ isolate->program_reload_context()->EnsuredUnoptimizedCodeForStack();
+ isolate->program_reload_context()->DeoptimizeDependentCode();
+ isolate->program_reload_context()
+ ->ReloadPhase1AllocateStorageMapsAndCheckpoint();
});
// Renumbering the libraries has invalidated this.
modified_libs_ = nullptr;
@@ -702,7 +703,7 @@
TIMELINE_SCOPE(CheckpointClasses);
CheckpointSharedClassTable();
ForEachIsolate([&](Isolate* isolate) {
- isolate->reload_context()->CheckpointClasses();
+ isolate->program_reload_context()->CheckpointClasses();
});
}
@@ -724,7 +725,7 @@
auto& tmp = Object::Handle(Z);
ForEachIsolate([&](Isolate* isolate) {
- tmp = isolate->reload_context()->ReloadPhase2LoadKernel(
+ tmp = isolate->program_reload_context()->ReloadPhase2LoadKernel(
kernel_program.get(), root_lib_url_);
if (tmp.IsError()) {
results.SetAt(isolateIndex, tmp);
@@ -743,7 +744,7 @@
DiscardSavedClassTable(/*is_rollback=*/true);
ForEachIsolate([&](Isolate* isolate) {
- isolate->reload_context()->ReloadPhase4Rollback();
+ isolate->program_reload_context()->ReloadPhase4Rollback();
});
CommonFinalizeTail(num_old_libs_);
} else {
@@ -751,7 +752,7 @@
TIR_Print("---- LOAD SUCCEEDED\n");
ForEachIsolate([&](Isolate* isolate) {
- isolate->reload_context()->ReloadPhase3FinalizeLoading();
+ isolate->program_reload_context()->ReloadPhase3FinalizeLoading();
});
if (FLAG_gc_during_reload) {
@@ -764,7 +765,7 @@
if (!FLAG_reload_force_rollback && !HasReasonsForCancelling()) {
TIR_Print("---- COMMITTING RELOAD\n");
ForEachIsolate([&](Isolate* isolate) {
- isolate->reload_context()->ReloadPhase4CommitPrepare();
+ isolate->program_reload_context()->ReloadPhase4CommitPrepare();
});
bool discard_class_tables = true;
if (HasInstanceMorphers()) {
@@ -813,7 +814,7 @@
// commit to the changed class table and deleted the saved one.
DiscardSavedClassTable(/*is_rollback=*/false);
ForEachIsolate([&](Isolate* isolate) {
- isolate->reload_context()->DiscardSavedClassTable(
+ isolate->program_reload_context()->DiscardSavedClassTable(
/*is_rollback=*/false);
});
}
@@ -832,12 +833,12 @@
if (discard_class_tables) {
DiscardSavedClassTable(/*is_rollback=*/false);
ForEachIsolate([&](Isolate* isolate) {
- isolate->reload_context()->DiscardSavedClassTable(
+ isolate->program_reload_context()->DiscardSavedClassTable(
/*is_rollback=*/false);
});
}
ForEachIsolate([&](Isolate* isolate) {
- isolate->reload_context()->ReloadPhase4CommitFinish();
+ isolate->program_reload_context()->ReloadPhase4CommitFinish();
});
TIR_Print("---- DONE COMMIT\n");
isolate_group_->set_last_reload_timestamp(reload_timestamp_);
@@ -845,7 +846,7 @@
TIR_Print("---- ROLLING BACK");
DiscardSavedClassTable(/*is_rollback=*/true);
ForEachIsolate([&](Isolate* isolate) {
- isolate->reload_context()->ReloadPhase4Rollback();
+ isolate->program_reload_context()->ReloadPhase4Rollback();
});
}
@@ -855,7 +856,7 @@
{
SafepointWriteRwLocker ml(thread, IG->program_lock());
ForEachIsolate([&](Isolate* isolate) {
- isolate->reload_context()->RebuildDirectSubclasses();
+ isolate->program_reload_context()->RebuildDirectSubclasses();
});
}
const intptr_t final_library_count =
@@ -1062,7 +1063,7 @@
return nullptr;
}
-void IsolateReloadContext::ReloadPhase1AllocateStorageMapsAndCheckpoint() {
+void ProgramReloadContext::ReloadPhase1AllocateStorageMapsAndCheckpoint() {
// Preallocate storage for maps.
old_classes_set_storage_ =
HashTables::New<UnorderedHashSet<ClassMapTraits> >(4);
@@ -1087,7 +1088,7 @@
}
}
-ObjectPtr IsolateReloadContext::ReloadPhase2LoadKernel(
+ObjectPtr ProgramReloadContext::ReloadPhase2LoadKernel(
kernel::Program* program,
const String& root_lib_url) {
Thread* thread = Thread::Current();
@@ -1113,27 +1114,27 @@
}
}
-void IsolateReloadContext::ReloadPhase3FinalizeLoading() {
+void ProgramReloadContext::ReloadPhase3FinalizeLoading() {
BuildLibraryMapping();
BuildRemovedClassesSet();
ValidateReload();
}
-void IsolateReloadContext::ReloadPhase4CommitPrepare() {
+void ProgramReloadContext::ReloadPhase4CommitPrepare() {
CommitBeforeInstanceMorphing();
}
-void IsolateReloadContext::ReloadPhase4CommitFinish() {
+void ProgramReloadContext::ReloadPhase4CommitFinish() {
CommitAfterInstanceMorphing();
PostCommit();
}
-void IsolateReloadContext::ReloadPhase4Rollback() {
+void ProgramReloadContext::ReloadPhase4Rollback() {
RollbackClasses();
RollbackLibraries();
}
-void IsolateReloadContext::RegisterClass(const Class& new_cls) {
+void ProgramReloadContext::RegisterClass(const Class& new_cls) {
const Class& old_cls = Class::Handle(OldClassOrNull(new_cls));
if (old_cls.IsNull()) {
if (new_cls.IsTopLevel()) {
@@ -1210,7 +1211,7 @@
}
}
-void IsolateReloadContext::EnsuredUnoptimizedCodeForStack() {
+void ProgramReloadContext::EnsuredUnoptimizedCodeForStack() {
TIMELINE_SCOPE(EnsuredUnoptimizedCodeForStack);
StackFrameIterator it(ValidationPolicy::kDontValidateFrames,
Thread::Current(),
@@ -1231,7 +1232,7 @@
}
}
-void IsolateReloadContext::DeoptimizeDependentCode() {
+void ProgramReloadContext::DeoptimizeDependentCode() {
TIMELINE_SCOPE(DeoptimizeDependentCode);
ClassTable* class_table = IG->class_table();
@@ -1291,7 +1292,7 @@
shared_class_table_->ResetBeforeHotReload();
}
-void IsolateReloadContext::CheckpointClasses() {
+void ProgramReloadContext::CheckpointClasses() {
TIR_Print("---- CHECKPOINTING CLASSES\n");
// Checkpoint classes before a reload. We need to copy the following:
// 1) The size of the class table.
@@ -1440,7 +1441,7 @@
}
}
-void IsolateReloadContext::CheckpointLibraries() {
+void ProgramReloadContext::CheckpointLibraries() {
TIMELINE_SCOPE(CheckpointLibraries);
TIR_Print("---- CHECKPOINTING LIBRARIES\n");
// Save the root library in case we abort the reload.
@@ -1489,7 +1490,7 @@
object_store()->set_root_library(Library::Handle());
}
-void IsolateReloadContext::RollbackClasses() {
+void ProgramReloadContext::RollbackClasses() {
TIR_Print("---- ROLLING BACK CLASS TABLE\n");
ASSERT((saved_num_cids_ + saved_num_tlc_cids_) > 0);
ASSERT(saved_class_table_.load(std::memory_order_relaxed) != nullptr);
@@ -1498,7 +1499,7 @@
DiscardSavedClassTable(/*is_rollback=*/true);
}
-void IsolateReloadContext::RollbackLibraries() {
+void ProgramReloadContext::RollbackLibraries() {
TIR_Print("---- ROLLING BACK LIBRARY CHANGES\n");
Thread* thread = Thread::Current();
Library& lib = Library::Handle();
@@ -1524,7 +1525,7 @@
}
#ifdef DEBUG
-void IsolateReloadContext::VerifyMaps() {
+void ProgramReloadContext::VerifyMaps() {
TIMELINE_SCOPE(VerifyMaps);
Class& cls = Class::Handle();
Class& new_cls = Class::Handle();
@@ -1559,7 +1560,7 @@
}
#endif
-void IsolateReloadContext::CommitBeforeInstanceMorphing() {
+void ProgramReloadContext::CommitBeforeInstanceMorphing() {
TIMELINE_SCOPE(Commit);
#ifdef DEBUG
@@ -1664,7 +1665,7 @@
}
}
-void IsolateReloadContext::CommitAfterInstanceMorphing() {
+void ProgramReloadContext::CommitAfterInstanceMorphing() {
{
const GrowableObjectArray& become_enum_mappings =
GrowableObjectArray::Handle(become_enum_mappings_);
@@ -1729,7 +1730,7 @@
}
}
-bool IsolateReloadContext::IsDirty(const Library& lib) {
+bool ProgramReloadContext::IsDirty(const Library& lib) {
const intptr_t index = lib.index();
if (index == static_cast<classid_t>(-1)) {
// Treat deleted libraries as dirty.
@@ -1739,7 +1740,7 @@
return library_infos_[index].dirty;
}
-void IsolateReloadContext::PostCommit() {
+void ProgramReloadContext::PostCommit() {
TIMELINE_SCOPE(PostCommit);
saved_root_library_ = Library::null();
saved_libraries_ = GrowableObjectArray::null();
@@ -1820,7 +1821,7 @@
isolate_group_->ForEachIsolate(callback);
}
-void IsolateReloadContext::ValidateReload() {
+void ProgramReloadContext::ValidateReload() {
TIMELINE_SCOPE(ValidateReload);
TIR_Print("---- VALIDATING RELOAD\n");
@@ -1862,7 +1863,7 @@
}
}
-ClassPtr IsolateReloadContext::GetClassForHeapWalkAt(intptr_t cid) {
+ClassPtr ProgramReloadContext::GetClassForHeapWalkAt(intptr_t cid) {
ClassPtr* class_table = nullptr;
intptr_t index = -1;
if (ClassTable::IsTopLevelCid(cid)) {
@@ -1893,7 +1894,7 @@
}
}
-void IsolateReloadContext::DiscardSavedClassTable(bool is_rollback) {
+void ProgramReloadContext::DiscardSavedClassTable(bool is_rollback) {
ClassPtr* local_saved_class_table =
saved_class_table_.load(std::memory_order_relaxed);
ClassPtr* local_saved_tlc_class_table =
@@ -1917,7 +1918,7 @@
visitor->VisitPointers(from(), to());
}
-void IsolateReloadContext::VisitObjectPointers(ObjectPointerVisitor* visitor) {
+void ProgramReloadContext::VisitObjectPointers(ObjectPointerVisitor* visitor) {
visitor->VisitPointers(from(), to());
ClassPtr* saved_class_table =
@@ -1935,11 +1936,11 @@
}
}
-ObjectStore* IsolateReloadContext::object_store() {
+ObjectStore* ProgramReloadContext::object_store() {
return isolate_->group()->object_store();
}
-void IsolateReloadContext::ResetUnoptimizedICsOnStack() {
+void ProgramReloadContext::ResetUnoptimizedICsOnStack() {
Thread* thread = Thread::Current();
StackZone stack_zone(thread);
Zone* zone = stack_zone.GetZone();
@@ -1969,7 +1970,7 @@
}
}
-void IsolateReloadContext::ResetMegamorphicCaches() {
+void ProgramReloadContext::ResetMegamorphicCaches() {
object_store()->set_megamorphic_cache_table(GrowableObjectArray::Handle());
// Since any current optimized code will not make any more calls, it may be
// better to clear the table instead of clearing each of the caches, allow
@@ -2020,7 +2021,7 @@
typedef UnorderedHashMap<SmiTraits> IntHashMap;
-void IsolateReloadContext::RunInvalidationVisitors() {
+void ProgramReloadContext::RunInvalidationVisitors() {
TIR_Print("---- RUNNING INVALIDATION HEAP VISITORS\n");
Thread* thread = Thread::Current();
StackZone stack_zone(thread);
@@ -2043,7 +2044,7 @@
InvalidateFields(zone, fields, instances);
}
-void IsolateReloadContext::InvalidateKernelInfos(
+void ProgramReloadContext::InvalidateKernelInfos(
Zone* zone,
const GrowableArray<const KernelProgramInfo*>& kernel_infos) {
TIMELINE_SCOPE(InvalidateKernelInfos);
@@ -2073,7 +2074,7 @@
}
}
-void IsolateReloadContext::InvalidateFunctions(
+void ProgramReloadContext::InvalidateFunctions(
Zone* zone,
const GrowableArray<const Function*>& functions) {
TIMELINE_SCOPE(InvalidateFunctions);
@@ -2317,7 +2318,7 @@
TypeArguments& delayed_function_type_arguments_;
};
-void IsolateReloadContext::InvalidateFields(
+void ProgramReloadContext::InvalidateFields(
Zone* zone,
const GrowableArray<const Field*>& fields,
const GrowableArray<const Instance*>& instances) {
@@ -2328,7 +2329,7 @@
invalidator.CheckInstances(instances);
}
-void IsolateReloadContext::InvalidateWorld() {
+void ProgramReloadContext::InvalidateWorld() {
TIMELINE_SCOPE(InvalidateWorld);
TIR_Print("---- INVALIDATING WORLD\n");
ResetMegamorphicCaches();
@@ -2340,7 +2341,7 @@
RunInvalidationVisitors();
}
-ClassPtr IsolateReloadContext::OldClassOrNull(const Class& replacement_or_new) {
+ClassPtr ProgramReloadContext::OldClassOrNull(const Class& replacement_or_new) {
UnorderedHashSet<ClassMapTraits> old_classes_set(old_classes_set_storage_);
Class& cls = Class::Handle();
cls ^= old_classes_set.GetOrNull(replacement_or_new);
@@ -2348,7 +2349,7 @@
return cls.ptr();
}
-StringPtr IsolateReloadContext::FindLibraryPrivateKey(
+StringPtr ProgramReloadContext::FindLibraryPrivateKey(
const Library& replacement_or_new) {
const Library& old = Library::Handle(OldLibraryOrNull(replacement_or_new));
if (old.IsNull()) {
@@ -2362,7 +2363,7 @@
return old.private_key();
}
-LibraryPtr IsolateReloadContext::OldLibraryOrNull(
+LibraryPtr ProgramReloadContext::OldLibraryOrNull(
const Library& replacement_or_new) {
UnorderedHashSet<LibraryMapTraits> old_libraries_set(
old_libraries_set_storage_);
@@ -2380,7 +2381,7 @@
// Attempt to find the pair to |replacement_or_new| with the knowledge that
// the base url prefix has moved.
-LibraryPtr IsolateReloadContext::OldLibraryOrNullBaseMoved(
+LibraryPtr ProgramReloadContext::OldLibraryOrNullBaseMoved(
const Library& replacement_or_new) {
const String& url_prefix =
String::Handle(group_reload_context_->root_url_prefix_);
@@ -2418,7 +2419,7 @@
return Library::null();
}
-void IsolateReloadContext::BuildLibraryMapping() {
+void ProgramReloadContext::BuildLibraryMapping() {
const GrowableObjectArray& libs =
GrowableObjectArray::Handle(object_store()->libraries());
@@ -2454,7 +2455,7 @@
//
// Note that all such classes must belong to a library that has either been
// changed or removed.
-void IsolateReloadContext::BuildRemovedClassesSet() {
+void ProgramReloadContext::BuildRemovedClassesSet() {
// Find all old classes [mapped_old_classes_set].
UnorderedHashMap<ClassMapTraits> class_map(class_map_storage_);
UnorderedHashSet<ClassMapTraits> mapped_old_classes_set(
@@ -2526,7 +2527,7 @@
library_map.Release();
}
-void IsolateReloadContext::AddClassMapping(const Class& replacement_or_new,
+void ProgramReloadContext::AddClassMapping(const Class& replacement_or_new,
const Class& original) {
UnorderedHashMap<ClassMapTraits> map(class_map_storage_);
bool update = map.UpdateOrInsert(replacement_or_new, original);
@@ -2536,7 +2537,7 @@
class_map_storage_ = map.Release().ptr();
}
-void IsolateReloadContext::AddLibraryMapping(const Library& replacement_or_new,
+void ProgramReloadContext::AddLibraryMapping(const Library& replacement_or_new,
const Library& original) {
UnorderedHashMap<LibraryMapTraits> map(library_map_storage_);
bool update = map.UpdateOrInsert(replacement_or_new, original);
@@ -2546,7 +2547,7 @@
library_map_storage_ = map.Release().ptr();
}
-void IsolateReloadContext::AddStaticFieldMapping(const Field& old_field,
+void ProgramReloadContext::AddStaticFieldMapping(const Field& old_field,
const Field& new_field) {
ASSERT(old_field.is_static());
ASSERT(new_field.is_static());
@@ -2554,7 +2555,7 @@
AddBecomeMapping(old_field, new_field);
}
-void IsolateReloadContext::AddBecomeMapping(const Object& old,
+void ProgramReloadContext::AddBecomeMapping(const Object& old,
const Object& neu) {
ASSERT(become_map_storage_ != Array::null());
UnorderedHashMap<BecomeMapTraits> become_map(become_map_storage_);
@@ -2563,7 +2564,7 @@
become_map_storage_ = become_map.Release().ptr();
}
-void IsolateReloadContext::AddEnumBecomeMapping(const Object& old,
+void ProgramReloadContext::AddEnumBecomeMapping(const Object& old,
const Object& neu) {
const GrowableObjectArray& become_enum_mappings =
GrowableObjectArray::Handle(become_enum_mappings_);
@@ -2572,7 +2573,7 @@
ASSERT((become_enum_mappings.Length() % 2) == 0);
}
-void IsolateReloadContext::RebuildDirectSubclasses() {
+void ProgramReloadContext::RebuildDirectSubclasses() {
ClassTable* class_table = IG->class_table();
intptr_t num_cids = class_table->NumCids();
diff --git a/runtime/vm/isolate_reload.h b/runtime/vm/isolate_reload.h
index 7718309..74a32b9 100644
--- a/runtime/vm/isolate_reload.h
+++ b/runtime/vm/isolate_reload.h
@@ -294,19 +294,19 @@
friend class ObjectLocator;
friend class MarkFunctionsForRecompilation; // IsDirty.
friend class ReasonForCancelling;
- friend class IsolateReloadContext;
+ friend class ProgramReloadContext;
friend class IsolateGroup; // GetClassSizeForHeapWalkAt
friend class UntaggedObject; // GetClassSizeForHeapWalkAt
static Dart_FileModifiedCallback file_modified_callback_;
};
-class IsolateReloadContext {
+class ProgramReloadContext {
public:
- IsolateReloadContext(
+ ProgramReloadContext(
std::shared_ptr<IsolateGroupReloadContext> group_reload_context,
Isolate* isolate);
- ~IsolateReloadContext();
+ ~ProgramReloadContext();
// All zone allocated objects must be allocated from this zone.
Zone* zone() const { return zone_; }
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 7ffbaf6..4990754 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -13179,9 +13179,10 @@
if (isolate_group->IsReloading()) {
// When reloading, we need to make sure we use the original private key
// if this library previously existed.
- IsolateReloadContext* reload_context = thread->isolate()->reload_context();
+ ProgramReloadContext* program_reload_context =
+ thread->isolate()->program_reload_context();
const String& original_key =
- String::Handle(reload_context->FindLibraryPrivateKey(*this));
+ String::Handle(program_reload_context->FindLibraryPrivateKey(*this));
if (!original_key.IsNull()) {
untag()->set_private_key(original_key.ptr());
return;
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 97606d6..1a7e62d 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -1533,17 +1533,17 @@
bool TraceAllocation(IsolateGroup* isolate_group) const;
void SetTraceAllocation(bool trace_allocation) const;
- void ReplaceEnum(IsolateReloadContext* reload_context,
+ void ReplaceEnum(ProgramReloadContext* reload_context,
const Class& old_enum) const;
- void CopyStaticFieldValues(IsolateReloadContext* reload_context,
+ void CopyStaticFieldValues(ProgramReloadContext* reload_context,
const Class& old_cls) const;
void PatchFieldsAndFunctions() const;
- void MigrateImplicitStaticClosures(IsolateReloadContext* context,
+ void MigrateImplicitStaticClosures(ProgramReloadContext* context,
const Class& new_cls) const;
void CopyCanonicalConstants(const Class& old_cls) const;
void CopyDeclarationType(const Class& old_cls) const;
void CheckReload(const Class& replacement,
- IsolateReloadContext* context) const;
+ ProgramReloadContext* context) const;
void AddInvocationDispatcher(const String& target_name,
const Array& args_desc,
@@ -1595,9 +1595,9 @@
void set_declaration_type(const Type& type) const;
bool CanReloadFinalized(const Class& replacement,
- IsolateReloadContext* context) const;
+ ProgramReloadContext* context) const;
bool CanReloadPreFinalized(const Class& replacement,
- IsolateReloadContext* context) const;
+ ProgramReloadContext* context) const;
// Tells whether instances need morphing for reload.
bool RequiresInstanceMorphing(const Class& replacement) const;
@@ -4843,7 +4843,7 @@
static const char kPrivateKeySeparator = '@';
void CheckReload(const Library& replacement,
- IsolateReloadContext* context) const;
+ ProgramReloadContext* context) const;
// Returns a closure of top level function 'name' in the exported namespace
// of this library. If a top level function 'name' does not exist we look
diff --git a/runtime/vm/object_reload.cc b/runtime/vm/object_reload.cc
index 374658c..0838b24 100644
--- a/runtime/vm/object_reload.cc
+++ b/runtime/vm/object_reload.cc
@@ -191,7 +191,7 @@
}
}
-void Class::CopyStaticFieldValues(IsolateReloadContext* reload_context,
+void Class::CopyStaticFieldValues(ProgramReloadContext* reload_context,
const Class& old_cls) const {
// We only update values for non-enum classes.
const bool update_values = !is_enum_class();
@@ -304,7 +304,7 @@
// When an enum value is deleted, we 'become' all references to the 'deleted'
// sentinel value. The index value is -1.
//
-void Class::ReplaceEnum(IsolateReloadContext* reload_context,
+void Class::ReplaceEnum(ProgramReloadContext* reload_context,
const Class& old_enum) const {
// We only do this for finalized enum classes.
ASSERT(is_enum_class());
@@ -496,7 +496,7 @@
}
}
-void Class::MigrateImplicitStaticClosures(IsolateReloadContext* irc,
+void Class::MigrateImplicitStaticClosures(ProgramReloadContext* irc,
const Class& new_cls) const {
const Array& funcs = Array::Handle(current_functions());
Thread* thread = Thread::Current();
@@ -665,8 +665,8 @@
// This is executed before iterating over the instances.
void Class::CheckReload(const Class& replacement,
- IsolateReloadContext* context) const {
- ASSERT(IsolateReloadContext::IsSameClass(*this, replacement));
+ ProgramReloadContext* context) const {
+ ASSERT(ProgramReloadContext::IsSameClass(*this, replacement));
if (!is_declaration_loaded()) {
// The old class hasn't been used in any meaningful way, so the VM is okay
@@ -807,7 +807,7 @@
}
bool Class::CanReloadFinalized(const Class& replacement,
- IsolateReloadContext* context) const {
+ ProgramReloadContext* context) const {
// Make sure the declaration types argument count matches for the two classes.
// ex. class A<int,B> {} cannot be replace with class A<B> {}.
auto group_context = context->group_reload_context();
@@ -832,7 +832,7 @@
}
bool Class::CanReloadPreFinalized(const Class& replacement,
- IsolateReloadContext* context) const {
+ ProgramReloadContext* context) const {
// The replacement class must also prefinalized.
if (!replacement.is_prefinalized()) {
context->group_reload_context()->AddReasonForCancelling(
@@ -851,7 +851,7 @@
}
void Library::CheckReload(const Library& replacement,
- IsolateReloadContext* context) const {
+ ProgramReloadContext* context) const {
// TODO(26878): If the replacement library uses deferred loading,
// reject it. We do not yet support reloading deferred libraries.
Object& object = Object::Handle();
diff --git a/runtime/vm/unit_test.cc b/runtime/vm/unit_test.cc
index cf6d614..2a2a861 100644
--- a/runtime/vm/unit_test.cc
+++ b/runtime/vm/unit_test.cc
@@ -553,13 +553,14 @@
} else if (isolate->group()->reload_context()->reload_aborted()) {
TransitionNativeToVM transition(thread);
result = Api::NewHandle(
- thread, isolate->reload_context()->group_reload_context()->error());
+ thread,
+ isolate->program_reload_context()->group_reload_context()->error());
} else {
result = Dart_RootLibrary();
}
TransitionNativeToVM transition(thread);
- if (isolate->reload_context() != NULL) {
+ if (isolate->program_reload_context() != NULL) {
isolate->DeleteReloadContext();
isolate->group()->DeleteReloadContext();
}
diff --git a/tools/VERSION b/tools/VERSION
index 86f1ef8..623857b 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 12
PATCH 0
-PRERELEASE 234
+PRERELEASE 235
PRERELEASE_PATCH 0
\ No newline at end of file