mirror of
https://github.com/dart-lang/sdk
synced 2024-09-15 23:09:48 +00:00
[SDK] Adds disasm. flags for FORCE_INCLUDE_DISASSEMBLER.
This CL enables passing --disassemble to e.g. a product mode gen_snapshot which used to not have the flag even when the disasm. was forcefully included. This CL also: - Fixes numerous typos: marco -> macro. - Reorders the _four_ types of flags in order of strictness. Change-Id: I8e3ef75ea0a748a6af5fa48cf289a57beeb51148 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/125404 Commit-Queue: Clement Skau <cskau@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com>
This commit is contained in:
parent
696069c9a2
commit
706c54f763
|
@ -24,22 +24,38 @@ constexpr bool kDartUseBytecode = true;
|
|||
constexpr bool kDartUseBytecode = false;
|
||||
#endif
|
||||
|
||||
// The disassembler might be force included even in product builds so we need
|
||||
// to conditionally make these into product flags to make the disassembler
|
||||
// usable in product mode.
|
||||
#if defined(FORCE_INCLUDE_DISASSEMBLER)
|
||||
#define DISASSEMBLE_FLAGS(P, R, C, D) \
|
||||
P(disassemble, bool, false, "Disassemble dart code.") \
|
||||
P(disassemble_optimized, bool, false, "Disassemble optimized code.") \
|
||||
P(disassemble_relative, bool, false, "Use offsets instead of absolute PCs")
|
||||
#else
|
||||
#define DISASSEMBLE_FLAGS(P, R, C, D) \
|
||||
R(disassemble, false, bool, false, "Disassemble dart code.") \
|
||||
R(disassemble_optimized, false, bool, false, "Disassemble optimized code.") \
|
||||
R(disassemble_relative, false, bool, false, \
|
||||
"Use offsets instead of absolute PCs")
|
||||
#endif
|
||||
|
||||
// List of all flags in the VM.
|
||||
// Flags can be one of three categories:
|
||||
// Flags can be one of four categories:
|
||||
// * P roduct flags: Can be set in any of the deployment modes, including in
|
||||
// production.
|
||||
// * R elease flags: Generally available flags except when building product.
|
||||
// * D ebug flags: Can only be set in debug VMs, which also have C++ assertions
|
||||
// enabled.
|
||||
// * pre C ompile flags: Generally available flags except when building product
|
||||
// or precompiled runtime.
|
||||
// * D ebug flags: Can only be set in debug VMs, which also have C++ assertions
|
||||
// enabled.
|
||||
//
|
||||
// Usage:
|
||||
// P(name, type, default_value, comment)
|
||||
// R(name, product_value, type, default_value, comment)
|
||||
// D(name, type, default_value, comment)
|
||||
// C(name, precompiled_value, product_value, type, default_value, comment)
|
||||
#define FLAG_LIST(P, R, D, C) \
|
||||
// D(name, type, default_value, comment)
|
||||
#define FLAG_LIST(P, R, C, D) \
|
||||
P(experimental_unsafe_mode_use_at_your_own_risk, bool, false, \
|
||||
"Omit runtime strong mode type checks and disable optimizations based on " \
|
||||
"types.") \
|
||||
|
@ -67,10 +83,7 @@ constexpr bool kDartUseBytecode = false;
|
|||
C(deoptimize_every, 0, 0, int, 0, \
|
||||
"Deoptimize on every N stack overflow checks") \
|
||||
R(disable_alloc_stubs_after_gc, false, bool, false, "Stress testing flag.") \
|
||||
R(disassemble, false, bool, false, "Disassemble dart code.") \
|
||||
R(disassemble_optimized, false, bool, false, "Disassemble optimized code.") \
|
||||
R(disassemble_relative, false, bool, false, \
|
||||
"Use offsets instead of absolute PCs") \
|
||||
DISASSEMBLE_FLAGS(P, R, C, D) \
|
||||
R(code_comments, false, bool, false, \
|
||||
"Include comments into code and disassembly.") \
|
||||
R(dump_megamorphic_stats, false, bool, false, \
|
||||
|
@ -223,7 +236,7 @@ constexpr bool kDartUseBytecode = false;
|
|||
// same as during runtime.
|
||||
//
|
||||
// Usage:
|
||||
// P(name, command-line-flag-name)
|
||||
// V(name, command-line-flag-name)
|
||||
#define VM_GLOBAL_FLAG_LIST(V) \
|
||||
V(use_bare_instructions, FLAG_use_bare_instructions)
|
||||
|
||||
|
|
|
@ -16,60 +16,60 @@ DEFINE_FLAG(bool,
|
|||
false,
|
||||
"Ignore unrecognized flags.");
|
||||
|
||||
#define PRODUCT_FLAG_MARCO(name, type, default_value, comment) \
|
||||
#define PRODUCT_FLAG_MACRO(name, type, default_value, comment) \
|
||||
type FLAG_##name = \
|
||||
Flags::Register_##type(&FLAG_##name, #name, default_value, comment);
|
||||
|
||||
#if defined(DEBUG)
|
||||
#define DEBUG_FLAG_MARCO(name, type, default_value, comment) \
|
||||
#define DEBUG_FLAG_MACRO(name, type, default_value, comment) \
|
||||
type FLAG_##name = \
|
||||
Flags::Register_##type(&FLAG_##name, #name, default_value, comment);
|
||||
#else // defined(DEBUG)
|
||||
#define DEBUG_FLAG_MARCO(name, type, default_value, comment)
|
||||
#define DEBUG_FLAG_MACRO(name, type, default_value, comment)
|
||||
#endif // defined(DEBUG)
|
||||
|
||||
#if defined(PRODUCT) && defined(DART_PRECOMPILED_RUNTIME)
|
||||
// Nothing to be done for the product flag definitions.
|
||||
#define RELEASE_FLAG_MARCO(name, product_value, type, default_value, comment)
|
||||
#define RELEASE_FLAG_MACRO(name, product_value, type, default_value, comment)
|
||||
// Nothing to be done for the precompilation flag definitions.
|
||||
#define PRECOMPILE_FLAG_MARCO(name, pre_value, product_value, type, \
|
||||
#define PRECOMPILE_FLAG_MACRO(name, pre_value, product_value, type, \
|
||||
default_value, comment)
|
||||
|
||||
#elif defined(PRODUCT) // !PRECOMPILED
|
||||
// Nothing to be done for the product flag definitions.
|
||||
#define RELEASE_FLAG_MARCO(name, product_value, type, default_value, comment)
|
||||
#define RELEASE_FLAG_MACRO(name, product_value, type, default_value, comment)
|
||||
// Nothing to be done for the precompilation flag definitions.
|
||||
#define PRECOMPILE_FLAG_MARCO(name, pre_value, product_value, type, \
|
||||
#define PRECOMPILE_FLAG_MACRO(name, pre_value, product_value, type, \
|
||||
default_value, comment)
|
||||
|
||||
#elif defined(DART_PRECOMPILED_RUNTIME) // !PRODUCT
|
||||
#define RELEASE_FLAG_MARCO(name, product_value, type, default_value, comment) \
|
||||
#define RELEASE_FLAG_MACRO(name, product_value, type, default_value, comment) \
|
||||
type FLAG_##name = \
|
||||
Flags::Register_##type(&FLAG_##name, #name, default_value, comment);
|
||||
// Nothing to be done for the precompilation flag definitions.
|
||||
#define PRECOMPILE_FLAG_MARCO(name, pre_value, product_value, type, \
|
||||
#define PRECOMPILE_FLAG_MACRO(name, pre_value, product_value, type, \
|
||||
default_value, comment)
|
||||
|
||||
#else // !PRODUCT && !PRECOMPILED
|
||||
#define RELEASE_FLAG_MARCO(name, product_value, type, default_value, comment) \
|
||||
#define RELEASE_FLAG_MACRO(name, product_value, type, default_value, comment) \
|
||||
type FLAG_##name = \
|
||||
Flags::Register_##type(&FLAG_##name, #name, default_value, comment);
|
||||
#define PRECOMPILE_FLAG_MARCO(name, pre_value, product_value, type, \
|
||||
#define PRECOMPILE_FLAG_MACRO(name, pre_value, product_value, type, \
|
||||
default_value, comment) \
|
||||
type FLAG_##name = \
|
||||
Flags::Register_##type(&FLAG_##name, #name, default_value, comment);
|
||||
#endif
|
||||
|
||||
// Define all of the non-product flags here.
|
||||
FLAG_LIST(PRODUCT_FLAG_MARCO,
|
||||
RELEASE_FLAG_MARCO,
|
||||
DEBUG_FLAG_MARCO,
|
||||
PRECOMPILE_FLAG_MARCO)
|
||||
FLAG_LIST(PRODUCT_FLAG_MACRO,
|
||||
RELEASE_FLAG_MACRO,
|
||||
PRECOMPILE_FLAG_MACRO,
|
||||
DEBUG_FLAG_MACRO)
|
||||
|
||||
#undef RELEASE_FLAG_MARCO
|
||||
#undef DEBUG_FLAG_MARCO
|
||||
#undef PRODUCT_FLAG_MARCO
|
||||
#undef PRECOMPILE_FLAG_MARCO
|
||||
#undef PRODUCT_FLAG_MACRO
|
||||
#undef RELEASE_FLAG_MACRO
|
||||
#undef PRECOMPILE_FLAG_MACRO
|
||||
#undef DEBUG_FLAG_MACRO
|
||||
|
||||
bool Flags::initialized_ = false;
|
||||
|
||||
|
|
|
@ -107,57 +107,57 @@ class Flags {
|
|||
DISALLOW_IMPLICIT_CONSTRUCTORS(Flags);
|
||||
};
|
||||
|
||||
#define PRODUCT_FLAG_MARCO(name, type, default_value, comment) \
|
||||
#define PRODUCT_FLAG_MACRO(name, type, default_value, comment) \
|
||||
extern type FLAG_##name;
|
||||
|
||||
#if defined(DEBUG)
|
||||
#define DEBUG_FLAG_MARCO(name, type, default_value, comment) \
|
||||
#define DEBUG_FLAG_MACRO(name, type, default_value, comment) \
|
||||
extern type FLAG_##name;
|
||||
#else // defined(DEBUG)
|
||||
#define DEBUG_FLAG_MARCO(name, type, default_value, comment) \
|
||||
#define DEBUG_FLAG_MACRO(name, type, default_value, comment) \
|
||||
const type FLAG_##name = default_value;
|
||||
#endif // defined(DEBUG)
|
||||
|
||||
#if defined(PRODUCT) && defined(DART_PRECOMPILED_RUNTIME)
|
||||
#define RELEASE_FLAG_MARCO(name, product_value, type, default_value, comment) \
|
||||
#define RELEASE_FLAG_MACRO(name, product_value, type, default_value, comment) \
|
||||
const type FLAG_##name = product_value;
|
||||
#define PRECOMPILE_FLAG_MARCO(name, precompiled_value, product_value, type, \
|
||||
#define PRECOMPILE_FLAG_MACRO(name, precompiled_value, product_value, type, \
|
||||
default_value, comment) \
|
||||
const type FLAG_##name = precompiled_value;
|
||||
|
||||
#elif defined(PRODUCT) // !PRECOMPILED
|
||||
#define RELEASE_FLAG_MARCO(name, product_value, type, default_value, comment) \
|
||||
#define RELEASE_FLAG_MACRO(name, product_value, type, default_value, comment) \
|
||||
const type FLAG_##name = product_value;
|
||||
#define PRECOMPILE_FLAG_MARCO(name, precompiled_value, product_value, type, \
|
||||
#define PRECOMPILE_FLAG_MACRO(name, precompiled_value, product_value, type, \
|
||||
default_value, comment) \
|
||||
const type FLAG_##name = product_value;
|
||||
|
||||
#elif defined(DART_PRECOMPILED_RUNTIME) // !PRODUCT
|
||||
#define RELEASE_FLAG_MARCO(name, product_value, type, default_value, comment) \
|
||||
#define RELEASE_FLAG_MACRO(name, product_value, type, default_value, comment) \
|
||||
extern type FLAG_##name;
|
||||
#define PRECOMPILE_FLAG_MARCO(name, precompiled_value, product_value, type, \
|
||||
#define PRECOMPILE_FLAG_MACRO(name, precompiled_value, product_value, type, \
|
||||
default_value, comment) \
|
||||
const type FLAG_##name = precompiled_value;
|
||||
|
||||
#else // !PRODUCT && !PRECOMPILED
|
||||
#define RELEASE_FLAG_MARCO(name, product_value, type, default_value, comment) \
|
||||
#define RELEASE_FLAG_MACRO(name, product_value, type, default_value, comment) \
|
||||
extern type FLAG_##name;
|
||||
#define PRECOMPILE_FLAG_MARCO(name, precompiled_value, product_value, type, \
|
||||
#define PRECOMPILE_FLAG_MACRO(name, precompiled_value, product_value, type, \
|
||||
default_value, comment) \
|
||||
extern type FLAG_##name;
|
||||
|
||||
#endif
|
||||
|
||||
// Now declare all flags here.
|
||||
FLAG_LIST(PRODUCT_FLAG_MARCO,
|
||||
RELEASE_FLAG_MARCO,
|
||||
DEBUG_FLAG_MARCO,
|
||||
PRECOMPILE_FLAG_MARCO)
|
||||
FLAG_LIST(PRODUCT_FLAG_MACRO,
|
||||
RELEASE_FLAG_MACRO,
|
||||
PRECOMPILE_FLAG_MACRO,
|
||||
DEBUG_FLAG_MACRO)
|
||||
|
||||
#undef RELEASE_FLAG_MARCO
|
||||
#undef DEBUG_FLAG_MARCO
|
||||
#undef PRODUCT_FLAG_MARCO
|
||||
#undef PRECOMPILE_FLAG_MARCO
|
||||
#undef RELEASE_FLAG_MACRO
|
||||
#undef DEBUG_FLAG_MACRO
|
||||
#undef PRODUCT_FLAG_MACRO
|
||||
#undef PRECOMPILE_FLAG_MACRO
|
||||
|
||||
} // namespace dart
|
||||
|
||||
|
|
Loading…
Reference in a new issue