Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(558)

Unified Diff: runtime/vm/isolate.cc

Issue 2006793002: VM: Fix race between background compiler and guarded cid update. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: rework how we invalidate background compiled code Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/isolate.h ('k') | runtime/vm/jit_optimizer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/isolate.cc
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index 11f5536f6bf76b99f18a0955f57d382b2082b129..c6c61f5489af018ec0fcf5d1082aa9920dcab8c5 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -822,12 +822,10 @@ Isolate::Isolate(const Dart_IsolateFlags& api_flags)
all_classes_finalized_(false),
next_(NULL),
pause_loop_monitor_(NULL),
- field_invalidation_gen_(kInvalidGen),
loading_invalidation_gen_(kInvalidGen),
top_level_parsing_count_(0),
field_list_mutex_(new Mutex()),
boxed_field_list_(GrowableObjectArray::null()),
- disabling_field_list_(GrowableObjectArray::null()),
spawn_count_monitor_(new Monitor()),
spawn_count_(0),
has_attempted_reload_(false),
@@ -1766,12 +1764,6 @@ void Isolate::VisitObjectPointers(ObjectPointerVisitor* visitor,
// when at safepoint or the field_list_mutex_ lock has been taken.
visitor->VisitPointer(reinterpret_cast<RawObject**>(&boxed_field_list_));
- // Visit the disabling_field_list.
- // 'disabling_field_list_' access via mutator and background compilation
- // threads is guarded with a monitor. This means that we can visit it only
- // when at safepoint or the field_list_mutex_ lock has been taken.
- visitor->VisitPointer(reinterpret_cast<RawObject**>(&disabling_field_list_));
-
// Visit objects in the debugger.
if (FLAG_support_debugger) {
debugger()->VisitObjectPointers(visitor);
@@ -2020,50 +2012,6 @@ void Isolate::set_registered_service_extension_handlers(
}
-// Used by mutator thread to notify background compiler which fields
-// triggered code invalidation.
-void Isolate::AddDisablingField(const Field& field) {
- ASSERT(Thread::Current()->IsMutatorThread());
- SafepointMutexLocker ml(field_list_mutex_);
- if (disabling_field_list_ == GrowableObjectArray::null()) {
- disabling_field_list_ = GrowableObjectArray::New(Heap::kOld);
- }
- const GrowableObjectArray& array =
- GrowableObjectArray::Handle(disabling_field_list_);
- array.Add(field, Heap::kOld);
-}
-
-
-RawField* Isolate::GetDisablingField() {
- ASSERT(Compiler::IsBackgroundCompilation() &&
- (!Isolate::Current()->HasMutatorThread() ||
- Isolate::Current()->mutator_thread()->IsAtSafepoint()));
- ASSERT(Thread::Current()->IsAtSafepoint());
- if (disabling_field_list_ == GrowableObjectArray::null()) {
- return Field::null();
- }
- const GrowableObjectArray& array =
- GrowableObjectArray::Handle(disabling_field_list_);
- if (array.Length() == 0) {
- return Field::null();
- }
- return Field::RawCast(array.RemoveLast());
-}
-
-
-void Isolate::ClearDisablingFieldList() {
- MutexLocker ml(field_list_mutex_);
- if (disabling_field_list_ == GrowableObjectArray::null()) {
- return;
- }
- const GrowableObjectArray& array =
- GrowableObjectArray::Handle(disabling_field_list_);
- if (array.Length() > 0) {
- array.SetLength(0);
- }
-}
-
-
void Isolate::AddDeoptimizingBoxedField(const Field& field) {
ASSERT(Compiler::IsBackgroundCompilation());
ASSERT(field.IsOriginal());
« no previous file with comments | « runtime/vm/isolate.h ('k') | runtime/vm/jit_optimizer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698