Index: runtime/vm/isolate.cc |
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc |
index 3465b10fc128244a67599c82eb4908432b2b07c3..9381e1f74b1cb9c29907c14d357c67c92064d5fe 100644 |
--- a/runtime/vm/isolate.cc |
+++ b/runtime/vm/isolate.cc |
@@ -692,28 +692,32 @@ MessageHandler::MessageStatus IsolateMessageHandler::ProcessUnhandledException( |
void Isolate::FlagsInitialize(Dart_IsolateFlags* api_flags) { |
api_flags->version = DART_FLAGS_CURRENT_VERSION; |
-#define INIT_FROM_FLAG(name, isolate_flag, flag) api_flags->isolate_flag = flag; |
+#define INIT_FROM_FLAG(name, bitname, isolate_flag, flag) \ |
+ api_flags->isolate_flag = flag; |
ISOLATE_FLAG_LIST(INIT_FROM_FLAG) |
#undef INIT_FROM_FLAG |
+ api_flags->use_dart_frontend = false; |
} |
void Isolate::FlagsCopyTo(Dart_IsolateFlags* api_flags) const { |
api_flags->version = DART_FLAGS_CURRENT_VERSION; |
-#define INIT_FROM_FIELD(name, isolate_flag, flag) \ |
+#define INIT_FROM_FIELD(name, bitname, isolate_flag, flag) \ |
api_flags->isolate_flag = name(); |
ISOLATE_FLAG_LIST(INIT_FROM_FIELD) |
#undef INIT_FROM_FIELD |
+ api_flags->use_dart_frontend = use_dart_frontend(); |
} |
-#if !defined(PRODUCT) |
void Isolate::FlagsCopyFrom(const Dart_IsolateFlags& api_flags) { |
-#define SET_FROM_FLAG(name, isolate_flag, flag) \ |
- name##_ = api_flags.isolate_flag; |
+#if !defined(PRODUCT) |
+#define SET_FROM_FLAG(name, bitname, isolate_flag, flag) \ |
+ isolate_flags_ = bitname##Bit::update(api_flags.isolate_flag, isolate_flags_); |
ISOLATE_FLAG_LIST(SET_FROM_FLAG) |
#undef SET_FROM_FLAG |
+#endif // !defined(PRODUCT) |
+ set_use_dart_frontend(api_flags.use_dart_frontend); |
// Leave others at defaults. |
} |
-#endif // !defined(PRODUCT) |
#if defined(DEBUG) |
// static |
@@ -749,16 +753,10 @@ Isolate::Isolate(const Dart_IsolateFlags& api_flags) |
object_store_(NULL), |
class_table_(), |
single_step_(false), |
- errors_fatal_(true), |
- is_runnable_(false), |
- is_service_isolate_(false), |
- compilation_allowed_(true), |
- all_classes_finalized_(false), |
- remapping_cids_(false), |
+ isolate_flags_(0), |
+ background_compiler_disabled_depth_(0), |
+ background_compiler_(NULL), |
#if !defined(PRODUCT) |
- resume_request_(false), |
- has_attempted_reload_(false), |
- should_pause_post_service_request_(false), |
debugger_name_(NULL), |
debugger_(NULL), |
last_resume_timestamp_(OS::GetCurrentTimeMillis()), |
@@ -809,8 +807,6 @@ Isolate::Isolate(const Dart_IsolateFlags& api_flags) |
tag_table_(GrowableObjectArray::null()), |
deoptimized_code_array_(GrowableObjectArray::null()), |
sticky_error_(Error::null()), |
- background_compiler_(NULL), |
- background_compiler_disabled_depth_(0), |
next_(NULL), |
loading_invalidation_gen_(kInvalidGen), |
top_level_parsing_count_(0), |
@@ -820,7 +816,9 @@ Isolate::Isolate(const Dart_IsolateFlags& api_flags) |
spawn_count_(0), |
handler_info_cache_(), |
catch_entry_state_cache_() { |
- NOT_IN_PRODUCT(FlagsCopyFrom(api_flags)); |
+ FlagsCopyFrom(api_flags); |
+ SetErrorsFatal(true); |
+ set_compilation_allowed(true); |
// TODO(asiva): A Thread is not available here, need to figure out |
// how the vm_tag (kEmbedderTagId) can be set, these tags need to |
// move to the OSThread structure. |
@@ -1064,7 +1062,7 @@ bool Isolate::ReloadSources(JSONStream* js, |
const char* packages_url, |
bool dont_delete_reload_context) { |
ASSERT(!IsReloading()); |
- has_attempted_reload_ = true; |
+ SetHasAttemptedReload(true); |
reload_context_ = new IsolateReloadContext(this, js); |
reload_context_->Reload(force_reload, root_script_url, packages_url); |
bool success = !reload_context_->reload_aborted(); |
@@ -1844,7 +1842,7 @@ RawClass* Isolate::GetClassForHeapWalkAt(intptr_t cid) { |
raw_class = class_table()->At(cid); |
#endif // !PRODUCT |
ASSERT(raw_class != NULL); |
- ASSERT(remapping_cids_ || raw_class->ptr()->id_ == cid); |
+ ASSERT(remapping_cids() || raw_class->ptr()->id_ == cid); |
return raw_class; |
} |
@@ -1944,7 +1942,7 @@ void Isolate::PrintJSON(JSONStream* stream, bool ref) { |
ServiceEvent pause_event(this, ServiceEvent::kPauseExit); |
jsobj.AddProperty("pauseEvent", &pause_event); |
} else if ((debugger() != NULL) && (debugger()->PauseEvent() != NULL) && |
- !resume_request_) { |
+ !ResumeRequest()) { |
jsobj.AddProperty("pauseEvent", debugger()->PauseEvent()); |
} else { |
ServiceEvent pause_event(this, ServiceEvent::kResume); |