Chromium Code Reviews| 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_; |