Index: runtime/vm/isolate.h |
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h |
index f7beafac3b3a716afea4d8e251a979cb4133c448..146ee3c9107b873fcf4581271abef552be3b4467 100644 |
--- a/runtime/vm/isolate.h |
+++ b/runtime/vm/isolate.h |
@@ -618,16 +618,29 @@ class Isolate : public BaseIsolate { |
all_classes_finalized_ = value; |
} |
- void IncrCHAInvalidationGen() { cha_invalidation_gen_++; } |
- void ResetCHAInvalidationGen() { cha_invalidation_gen_ = 0; } |
+ 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_; } |
- void IncrFieldInvalidationGen() { field_invalidation_gen_++; } |
- void ResetFieldInvalidationGen() { field_invalidation_gen_ = 0; } |
+ |
+ void IncrFieldInvalidationGen() { |
+ field_invalidation_gen_++; |
+ if (field_invalidation_gen_ == kInvalidGen) field_invalidation_gen_++; |
+ } |
+ |
+ void ResetFieldInvalidationGen() { field_invalidation_gen_ = kInvalidGen; } |
uint32_t field_invalidation_gen() const { return field_invalidation_gen_; } |
- void IncrPrefixInvalidationGen() { prefix_invalidation_gen_++; } |
- void ResetPrefixInvalidationGen() { prefix_invalidation_gen_ = 0; } |
+ void IncrPrefixInvalidationGen() { |
+ prefix_invalidation_gen_++; |
+ if (prefix_invalidation_gen_ == kInvalidGen) prefix_invalidation_gen_++; |
+ } |
+ void ResetPrefixInvalidationGen() { prefix_invalidation_gen_ = kInvalidGen; } |
uint32_t prefix_invalidation_gen() const { return prefix_invalidation_gen_; } |
RawObject* InvokePendingServiceExtensionCalls(); |