Index: runtime/vm/isolate.h |
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h |
index e9c255b0e5ebf84d67bf71c9d4887d5d4568bae4..e1ee975d95bbc8976d7fb0af6cf056d8d5543d0e 100644 |
--- a/runtime/vm/isolate.h |
+++ b/runtime/vm/isolate.h |
@@ -337,42 +337,6 @@ class Isolate : public BaseIsolate { |
void set_has_compiled_code(bool value) { has_compiled_code_ = value; } |
bool has_compiled_code() const { return has_compiled_code_; } |
- // TODO(iposva): Evaluate whether two different isolate flag structures are |
- // needed. Currently it serves as a separation between publicly visible flags |
- // and VM internal flags. |
- class Flags : public ValueObject { |
- public: |
- // Construct default flags as specified by the options. |
- Flags(); |
- |
- bool type_checks() const { return type_checks_; } |
- bool asserts() const { return asserts_; } |
- bool error_on_bad_type() const { return error_on_bad_type_; } |
- bool error_on_bad_override() const { return error_on_bad_override_; } |
- |
- void set_checked(bool val) { |
- type_checks_ = val; |
- asserts_ = val; |
- } |
- |
- void CopyFrom(const Flags& orig); |
- void CopyFrom(const Dart_IsolateFlags& api_flags); |
- void CopyTo(Dart_IsolateFlags* api_flags) const; |
- |
- private: |
- bool type_checks_; |
- bool asserts_; |
- bool error_on_bad_type_; |
- bool error_on_bad_override_; |
- |
- friend class Isolate; |
- |
- DISALLOW_ALLOCATION(); |
- DISALLOW_COPY_AND_ASSIGN(Flags); |
- }; |
- |
- const Flags& flags() const { return flags_; } |
- |
// Lets the embedder know that a service message resulted in a resume request. |
void SetResumeRequest() { |
resume_request_ = true; |
@@ -672,6 +636,23 @@ class Isolate : public BaseIsolate { |
bool is_service_isolate() const { return is_service_isolate_; } |
+ // Isolate-specific flag handling. |
+ static void FlagsInitialize(Dart_IsolateFlags* api_flags); |
+ void FlagsCopyTo(Dart_IsolateFlags* api_flags) const; |
+ void FlagsCopyFrom(const Dart_IsolateFlags& api_flags); |
+ |
+#if defined(PRODUCT) |
+ bool type_checks() const { return FLAG_enable_type_checks; } |
+ bool asserts() const { return FLAG_enable_asserts; } |
+ bool error_on_bad_type() const { return FLAG_error_on_bad_type; } |
+ bool error_on_bad_override() const { return FLAG_error_on_bad_override; } |
+#else // defined(PRODUCT) |
+ bool type_checks() const { return type_checks_; } |
+ bool asserts() const { return asserts_; } |
+ bool error_on_bad_type() const { return error_on_bad_type_; } |
+ bool error_on_bad_override() const { return error_on_bad_override_; } |
+#endif // defined(PRODUCT) |
+ |
static void KillAllIsolates(LibMsgId msg_id); |
static void KillIfExists(Isolate* isolate, LibMsgId msg_id); |
@@ -769,7 +750,6 @@ class Isolate : public BaseIsolate { |
bool resume_request_; |
int64_t last_resume_timestamp_; |
bool has_compiled_code_; // Can check that no compilation occured. |
- Flags flags_; |
Random random_; |
Simulator* simulator_; |
Mutex* mutex_; // protects stack_limit_, saved_stack_limit_, compiler stats. |
@@ -791,6 +771,14 @@ class Isolate : public BaseIsolate { |
bool is_service_isolate_; |
+ // Isolate-specific flags. |
+ NOT_IN_PRODUCT( |
+ bool type_checks_; |
+ bool asserts_; |
+ bool error_on_bad_type_; |
+ bool error_on_bad_override_; |
+ ) |
+ |
// Status support. |
char* stacktrace_; |
intptr_t stack_frame_index_; |
@@ -997,7 +985,7 @@ class IsolateSpawnState { |
bool is_spawn_uri() const { return library_url_ == NULL; } |
bool paused() const { return paused_; } |
bool errors_are_fatal() const { return errors_are_fatal_; } |
- Isolate::Flags* isolate_flags() { return &isolate_flags_; } |
+ Dart_IsolateFlags* isolate_flags() { return &isolate_flags_; } |
RawObject* ResolveFunction(); |
RawInstance* BuildArgs(Thread* thread); |
@@ -1028,7 +1016,7 @@ class IsolateSpawnState { |
Monitor* spawn_count_monitor_; |
intptr_t* spawn_count_; |
- Isolate::Flags isolate_flags_; |
+ Dart_IsolateFlags isolate_flags_; |
bool paused_; |
bool errors_are_fatal_; |
}; |