Index: runtime/vm/isolate.h |
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h |
index e1564da5f24cd65f085c4b026b5cac48be02f523..8691dba44e2958aaf4fe00c78503361b714bca5c 100644 |
--- a/runtime/vm/isolate.h |
+++ b/runtime/vm/isolate.h |
@@ -522,6 +522,13 @@ class Isolate : public BaseIsolate { |
return AtomicOperations::LoadRelaxedIntPtr(&loading_invalidation_gen_); |
} |
+ // Used by mutator thread to notify background compiler which fields |
+ // triggered code invalidation. |
+ void AddDisablingField(const Field& field); |
+ // Returns Field::null() if none available in the list. |
+ RawField* GetDisablingField(); |
+ void ClearDisablingFieldList(); |
+ |
// Used by background compiler which field became boxed and must trigger |
// deoptimization in the mutator thread. |
void AddDeoptimizingBoxedField(const Field& field); |
@@ -744,10 +751,13 @@ class Isolate : public BaseIsolate { |
intptr_t loading_invalidation_gen_; |
intptr_t top_level_parsing_count_; |
- // Protect access to boxed_field_list_. |
- Mutex* boxed_field_list_mutex_; |
+ // Protect access to boxed_field_list_ and disabling_field_list_. |
+ Mutex* field_list_mutex_; |
// List of fields that became boxed and that trigger deoptimization. |
RawGrowableObjectArray* boxed_field_list_; |
+ // List of fields that were disabling code while background compiler |
+ // was running. |
+ RawGrowableObjectArray* disabling_field_list_; |
// This guards spawn_count_. An isolate cannot complete shutdown and be |
// destroyed while there are child isolates in the midst of a spawn. |