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

Unified Diff: runtime/vm/isolate.cc

Issue 3003583002: [VM, Precompiler] PoC Obfuscator (Closed)
Patch Set: Discard obfuscation map Created 3 years, 4 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.cc
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index 9381e1f74b1cb9c29907c14d357c67c92064d5fe..e9bb4c95432e879757384df5f032706b8661ea60 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -691,12 +691,18 @@ MessageHandler::MessageStatus IsolateMessageHandler::ProcessUnhandledException(
}
void Isolate::FlagsInitialize(Dart_IsolateFlags* api_flags) {
+ const bool false_by_default = false;
+ const bool true_by_default = true;
+ USE(true_by_default);
+ USE(false_by_default);
+
api_flags->version = DART_FLAGS_CURRENT_VERSION;
#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;
+ api_flags->entry_points = NULL;
}
void Isolate::FlagsCopyTo(Dart_IsolateFlags* api_flags) const {
@@ -706,6 +712,7 @@ void Isolate::FlagsCopyTo(Dart_IsolateFlags* api_flags) const {
ISOLATE_FLAG_LIST(INIT_FROM_FIELD)
#undef INIT_FROM_FIELD
api_flags->use_dart_frontend = use_dart_frontend();
+ api_flags->entry_points = NULL;
}
void Isolate::FlagsCopyFrom(const Dart_IsolateFlags& api_flags) {
@@ -716,6 +723,26 @@ void Isolate::FlagsCopyFrom(const Dart_IsolateFlags& api_flags) {
#undef SET_FROM_FLAG
#endif // !defined(PRODUCT)
set_use_dart_frontend(api_flags.use_dart_frontend);
+
+ // Copy entry points list.
+ ASSERT(embedder_entry_points_ == NULL);
+ if (api_flags.entry_points != NULL) {
+ intptr_t count = 0;
+ while (api_flags.entry_points[count].function_name != NULL)
+ count++;
+ embedder_entry_points_ = new Dart_QualifiedFunctionName[count + 1];
+ for (intptr_t i = 0; i < count; i++) {
+ embedder_entry_points_[i].library_uri =
+ strdup(api_flags.entry_points[i].library_uri);
+ embedder_entry_points_[i].class_name =
+ strdup(api_flags.entry_points[i].class_name);
+ embedder_entry_points_[i].function_name =
+ strdup(api_flags.entry_points[i].function_name);
+ }
+ memset(&embedder_entry_points_[count], sizeof(Dart_QualifiedFunctionName),
+ 0);
+ }
+
// Leave others at defaults.
}
rmacnak 2017/08/23 01:16:50 if (obfuscate) { OS::Print("Warning: This VM has
Vyacheslav Egorov (Google) 2017/08/23 15:54:52 Done.
@@ -815,7 +842,8 @@ Isolate::Isolate(const Dart_IsolateFlags& api_flags)
spawn_count_monitor_(new Monitor()),
spawn_count_(0),
handler_info_cache_(),
- catch_entry_state_cache_() {
+ catch_entry_state_cache_(),
+ embedder_entry_points_(NULL) {
FlagsCopyFrom(api_flags);
SetErrorsFatal(true);
set_compilation_allowed(true);
@@ -870,6 +898,15 @@ Isolate::~Isolate() {
delete spawn_count_monitor_;
delete safepoint_handler_;
delete thread_registry_;
+
+ if (embedder_entry_points_ != NULL) {
+ for (intptr_t i = 0; embedder_entry_points_[i].function_name != NULL; i++) {
+ free(const_cast<char*>(embedder_entry_points_[i].library_uri));
+ free(const_cast<char*>(embedder_entry_points_[i].class_name));
+ free(const_cast<char*>(embedder_entry_points_[i].function_name));
+ }
+ }
+ delete[] embedder_entry_points_;
}
void Isolate::InitOnce() {

Powered by Google App Engine
This is Rietveld 408576698