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

Unified Diff: runtime/vm/isolate.h

Issue 1834763004: Track loading happening in parallel with background compilation and abort compilation if necessary. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: d Created 4 years, 9 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
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_;

Powered by Google App Engine
This is Rietveld 408576698