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

Unified Diff: runtime/vm/isolate.h

Issue 3003583002: [VM, Precompiler] PoC Obfuscator (Closed)
Patch Set: Fix bad refactoring in NewAtomicRename 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
« no previous file with comments | « runtime/vm/intrinsifier.cc ('k') | runtime/vm/isolate.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/isolate.h
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
index 316c26a488a9ca4e285ef916ed10bbac92b8a276..ecf072890bab7155502f827320fc7a0a53102af7 100644
--- a/runtime/vm/isolate.h
+++ b/runtime/vm/isolate.h
@@ -132,15 +132,17 @@ typedef FixedCache<intptr_t, CatchEntryState, 16> CatchEntryStateCache;
// V(name, Dart_IsolateFlags-member-name, command-line-flag-name)
//
#define ISOLATE_FLAG_LIST(V) \
- V(type_checks, EnableTypeChecks, enable_type_checks, \
+ V(NONPRODUCT, type_checks, EnableTypeChecks, enable_type_checks, \
FLAG_enable_type_checks) \
- V(asserts, EnableAsserts, enable_asserts, FLAG_enable_asserts) \
- V(error_on_bad_type, ErrorOnBadType, enable_error_on_bad_type, \
+ V(NONPRODUCT, asserts, EnableAsserts, enable_asserts, FLAG_enable_asserts) \
+ V(NONPRODUCT, error_on_bad_type, ErrorOnBadType, enable_error_on_bad_type, \
FLAG_error_on_bad_type) \
- V(error_on_bad_override, ErrorOnBadOverride, enable_error_on_bad_override, \
- FLAG_error_on_bad_override) \
- V(use_field_guards, UseFieldGuards, use_field_guards, FLAG_use_field_guards) \
- V(use_osr, UseOsr, use_osr, FLAG_use_osr)
+ V(NONPRODUCT, error_on_bad_override, ErrorOnBadOverride, \
+ enable_error_on_bad_override, FLAG_error_on_bad_override) \
+ V(NONPRODUCT, use_field_guards, UseFieldGuards, use_field_guards, \
+ FLAG_use_field_guards) \
+ V(NONPRODUCT, use_osr, UseOsr, use_osr, FLAG_use_osr) \
+ V(PRECOMPILER, obfuscate, Obfuscate, obfuscate, false_by_default)
class Isolate : public BaseIsolate {
public:
@@ -295,9 +297,9 @@ class Isolate : public BaseIsolate {
MessageHandler* message_handler() const { return message_handler_; }
void set_message_handler(MessageHandler* value) { message_handler_ = value; }
- bool is_runnable() const { return RunnableBit::decode(isolate_flags_); }
+ bool is_runnable() const { return IsRunnableBit::decode(isolate_flags_); }
void set_is_runnable(bool value) {
- isolate_flags_ = RunnableBit::update(value, isolate_flags_);
+ isolate_flags_ = IsRunnableBit::update(value, isolate_flags_);
#if !defined(PRODUCT)
if (is_runnable()) {
set_last_resume_timestamp();
@@ -685,28 +687,50 @@ class Isolate : public BaseIsolate {
RawFunction* ClosureFunctionFromIndex(intptr_t idx) const;
bool is_service_isolate() const {
- return ServiceIsolateBit::decode(isolate_flags_);
+ return IsServiceIsolateBit::decode(isolate_flags_);
}
void set_is_service_isolate(bool value) {
- isolate_flags_ = ServiceIsolateBit::update(value, isolate_flags_);
+ isolate_flags_ = IsServiceIsolateBit::update(value, isolate_flags_);
}
+ Dart_QualifiedFunctionName* embedder_entry_points() const {
+ return embedder_entry_points_;
+ }
+
+ void set_obfuscation_map(const char** map) { obfuscation_map_ = map; }
+ const char** obfuscation_map() const { return obfuscation_map_; }
+
// 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)
-#define DECLARE_GETTER(name, bitname, isolate_flag_name, flag_name) \
- bool name() const { return flag_name; }
+#if defined(DART_PRECOMPILER)
+#define FLAG_FOR_PRECOMPILER(from_field, from_flag) (from_field)
+#else
+#define FLAG_FOR_PRECOMPILER(from_field, from_flag) (from_flag)
+#endif
+
+#if !defined(PRODUCT)
+#define FLAG_FOR_NONPRODUCT(from_field, from_flag) (from_field)
+#else
+#define FLAG_FOR_NONPRODUCT(from_field, from_flag) (from_flag)
+#endif
+
+#define DECLARE_GETTER(when, name, bitname, isolate_flag_name, flag_name) \
+ bool name() const { \
+ const bool false_by_default = false; \
+ USE(false_by_default); \
+ return FLAG_FOR_##when(bitname##Bit::decode(isolate_flags_), flag_name); \
+ }
ISOLATE_FLAG_LIST(DECLARE_GETTER)
+#undef FLAG_FOR_NONPRODUCT
+#undef FLAG_FOR_PRECOMPILER
#undef DECLARE_GETTER
+
+#if defined(PRODUCT)
void set_use_osr(bool use_osr) { ASSERT(!use_osr); }
#else // defined(PRODUCT)
-#define DECLARE_GETTER(name, bitname, isolate_flag_name, flag_name) \
- bool name() const { return bitname##Bit::decode(isolate_flags_); }
- ISOLATE_FLAG_LIST(DECLARE_GETTER)
-#undef DECLARE_GETTER
void set_use_osr(bool use_osr) {
isolate_flags_ = UseOsrBit::update(use_osr, isolate_flags_);
}
@@ -805,55 +829,37 @@ class Isolate : public BaseIsolate {
ClassTable class_table_;
bool single_step_;
+#define ISOLATE_FLAG_BITS(V) \
+ V(ErrorsFatal) \
+ V(IsRunnable) \
+ V(IsServiceIsolate) \
+ V(CompilationAllowed) \
+ V(AllClassesFinalized) \
+ V(RemappingCids) \
+ V(ResumeRequest) \
+ V(HasAttemptedReload) \
+ V(ShouldPausePostServiceRequest) \
+ V(UseDartFrontEnd) \
+ V(EnableTypeChecks) \
+ V(EnableAsserts) \
+ V(ErrorOnBadType) \
+ V(ErrorOnBadOverride) \
+ V(UseFieldGuards) \
+ V(UseOsr) \
+ V(Obfuscate)
+
// Isolate specific flags.
enum FlagBits {
- kErrorsFatalBit = 0,
- kIsRunnableBit = 1,
- kIsServiceIsolateBit = 2,
- kCompilationAllowedBit = 3,
- kAllClassesFinalizedBit = 4,
- kRemappingCidsBit = 5,
- kResumeRequestBit = 6,
- kHasAttemptedReloadBit = 7,
- kShouldPausePostServiceRequestBit = 8,
- kUseDartFrontEndBit = 9,
- kEnableTypeChecksBit = 10,
- kEnableAssertsBit = 11,
- kErrorOnBadTypeBit = 12,
- kErrorOnBadOverrideBit = 13,
- kUseFieldGuardsBit = 14,
- kUseOsrBit = 15,
+#define DECLARE_BIT(Name) k##Name##Bit,
+ ISOLATE_FLAG_BITS(DECLARE_BIT)
+#undef DECLARE_BIT
};
- class ErrorsFatalBit : public BitField<uint32_t, bool, kErrorsFatalBit, 1> {};
- class RunnableBit : public BitField<uint32_t, bool, kIsRunnableBit, 1> {};
- class ServiceIsolateBit
- : public BitField<uint32_t, bool, kIsServiceIsolateBit, 1> {};
- class CompilationAllowedBit
- : public BitField<uint32_t, bool, kCompilationAllowedBit, 1> {};
- class AllClassesFinalizedBit
- : public BitField<uint32_t, bool, kAllClassesFinalizedBit, 1> {};
- class RemappingCidsBit
- : public BitField<uint32_t, bool, kRemappingCidsBit, 1> {};
- class ResumeRequestBit
- : public BitField<uint32_t, bool, kResumeRequestBit, 1> {};
- class HasAttemptedReloadBit
- : public BitField<uint32_t, bool, kHasAttemptedReloadBit, 1> {};
- class ShouldPausePostServiceRequestBit
- : public BitField<uint32_t, bool, kShouldPausePostServiceRequestBit, 1> {
- };
- class UseDartFrontEndBit
- : public BitField<uint32_t, bool, kUseDartFrontEndBit, 1> {};
- class EnableTypeChecksBit
- : public BitField<uint32_t, bool, kEnableTypeChecksBit, 1> {};
- class EnableAssertsBit
- : public BitField<uint32_t, bool, kEnableAssertsBit, 1> {};
- class ErrorOnBadTypeBit
- : public BitField<uint32_t, bool, kErrorOnBadTypeBit, 1> {};
- class ErrorOnBadOverrideBit
- : public BitField<uint32_t, bool, kErrorOnBadOverrideBit, 1> {};
- class UseFieldGuardsBit
- : public BitField<uint32_t, bool, kUseFieldGuardsBit, 1> {};
- class UseOsrBit : public BitField<uint32_t, bool, kUseOsrBit, 1> {};
+
+#define DECLARE_BITFIELD(Name) \
+ class Name##Bit : public BitField<uint32_t, bool, k##Name##Bit, 1> {};
+ ISOLATE_FLAG_BITS(DECLARE_BITFIELD)
+#undef DECLARE_BITFIELD
+
uint32_t isolate_flags_;
// Background compilation.
@@ -969,6 +975,9 @@ class Isolate : public BaseIsolate {
HandlerInfoCache handler_info_cache_;
CatchEntryStateCache catch_entry_state_cache_;
+ Dart_QualifiedFunctionName* embedder_entry_points_;
+ const char** obfuscation_map_;
+
static Dart_IsolateCreateCallback create_callback_;
static Dart_IsolateShutdownCallback shutdown_callback_;
static Dart_IsolateCleanupCallback cleanup_callback_;
« no previous file with comments | « runtime/vm/intrinsifier.cc ('k') | runtime/vm/isolate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698