Index: runtime/vm/isolate.h |
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h |
index 8d2508fbd9461f131fad072bc8bd4f1390a5f9a8..5656fc0000cb18b4e5c8373ba0efb84ee1933e80 100644 |
--- a/runtime/vm/isolate.h |
+++ b/runtime/vm/isolate.h |
@@ -487,15 +487,11 @@ class Isolate : public BaseIsolate { |
all_classes_finalized_ = value; |
} |
- static const uint32_t kInvalidGen = 0; |
- |
- void IncrCHAInvalidationGen() { |
- cha_invalidation_gen_++; |
- if (cha_invalidation_gen_ == kInvalidGen) cha_invalidation_gen_++; |
- } |
- void ResetCHAInvalidationGen() { cha_invalidation_gen_ = kInvalidGen; } |
- uint32_t cha_invalidation_gen() const { return cha_invalidation_gen_; } |
+ // True during top level parsing. |
+ bool top_level_parsing() const { return top_level_parsing_; } |
+ void set_top_level_parsing(bool value) { top_level_parsing_ = value; } |
+ static const uint32_t kInvalidGen = 0; |
void IncrFieldInvalidationGen() { |
field_invalidation_gen_++; |
@@ -505,12 +501,16 @@ class Isolate : public BaseIsolate { |
void ResetFieldInvalidationGen() { field_invalidation_gen_ = kInvalidGen; } |
uint32_t field_invalidation_gen() const { return field_invalidation_gen_; } |
- void IncrPrefixInvalidationGen() { |
- prefix_invalidation_gen_++; |
- if (prefix_invalidation_gen_ == kInvalidGen) prefix_invalidation_gen_++; |
+ void IncrLoadingInvalidationGen() { |
+ loading_invalidation_gen_++; |
+ if (loading_invalidation_gen_ == kInvalidGen) loading_invalidation_gen_++; |
siva
2016/03/28 17:20:14
Why are you first incrementing and then checking,
srdjan
2016/03/28 19:54:54
Since we never reset the count, we may overflow an
|
+ } |
+ void ResetLoadingInvalidationGen() { |
+ loading_invalidation_gen_ = kInvalidGen; |
+ } |
+ uint32_t loading_invalidation_gen() const { |
+ return loading_invalidation_gen_; |
} |
- void ResetPrefixInvalidationGen() { prefix_invalidation_gen_ = kInvalidGen; } |
- uint32_t prefix_invalidation_gen() const { return prefix_invalidation_gen_; } |
// Used by background compiler which field became boxed and must trigger |
// deoptimization in the mutator thread. |
@@ -720,6 +720,7 @@ class Isolate : public BaseIsolate { |
bool compilation_allowed_; |
bool all_classes_finalized_; |
+ bool top_level_parsing_; |
// Isolate list next pointer. |
Isolate* next_; |
@@ -730,9 +731,8 @@ class Isolate : public BaseIsolate { |
// Invalidation generations; used to track events occuring in parallel |
// to background compilation. The counters may overflow, which is OK |
// since we check for equality to detect if an event occured. |
- uint32_t cha_invalidation_gen_; |
uint32_t field_invalidation_gen_; |
- uint32_t prefix_invalidation_gen_; |
+ uint32_t loading_invalidation_gen_; |
// Protect access to boxed_field_list_. |
Mutex* boxed_field_list_mutex_; |