diff options
author | noahfalk <noahfalk@microsoft.com> | 2017-03-30 00:07:59 -0700 |
---|---|---|
committer | noahfalk <noahfalk@microsoft.com> | 2017-03-31 19:06:31 -0700 |
commit | 4561dad3f38f8dd5a9637fc3a0be418abac1f088 (patch) | |
tree | 0894e2f92df51729a5e31b10c6e42b623b2f282d /src/jit | |
parent | bf6a03a994fce9c4b1bb3ba904b67c09d7f40b68 (diff) | |
download | coreclr-4561dad3f38f8dd5a9637fc3a0be418abac1f088.tar.gz coreclr-4561dad3f38f8dd5a9637fc3a0be418abac1f088.tar.bz2 coreclr-4561dad3f38f8dd5a9637fc3a0be418abac1f088.zip |
Add Tier0/1 jit flags
These flags provides a hook to change the JIT policy in the future and diverge tier0/tier1 compilation from min_opt/speed_opt respectively.
Diffstat (limited to 'src/jit')
-rw-r--r-- | src/jit/compiler.cpp | 6 | ||||
-rw-r--r-- | src/jit/jitee.h | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/jit/compiler.cpp b/src/jit/compiler.cpp index 3f756233cf..df54c8f32a 100644 --- a/src/jit/compiler.cpp +++ b/src/jit/compiler.cpp @@ -2470,7 +2470,8 @@ void Compiler::compInitOptions(JitFlags* jitFlags) opts.jitFlags = jitFlags; opts.compFlags = CLFLG_MAXOPT; // Default value is for full optimization - if (jitFlags->IsSet(JitFlags::JIT_FLAG_DEBUG_CODE) || jitFlags->IsSet(JitFlags::JIT_FLAG_MIN_OPT)) + if (jitFlags->IsSet(JitFlags::JIT_FLAG_DEBUG_CODE) || jitFlags->IsSet(JitFlags::JIT_FLAG_MIN_OPT) || + jitFlags->IsSet(JitFlags::JIT_FLAG_TIER0)) { opts.compFlags = CLFLG_MINOPT; } @@ -2495,7 +2496,8 @@ void Compiler::compInitOptions(JitFlags* jitFlags) // // If the EE sets SPEED_OPT we will optimize for speed at the expense of code size // - else if (jitFlags->IsSet(JitFlags::JIT_FLAG_SPEED_OPT)) + else if (jitFlags->IsSet(JitFlags::JIT_FLAG_SPEED_OPT) || + (jitFlags->IsSet(JitFlags::JIT_FLAG_TIER1) && !jitFlags->IsSet(JitFlags::JIT_FLAG_MIN_OPT))) { opts.compCodeOpt = FAST_CODE; assert(!jitFlags->IsSet(JitFlags::JIT_FLAG_SIZE_OPT)); diff --git a/src/jit/jitee.h b/src/jit/jitee.h index 810c93e988..7b0e4a02dc 100644 --- a/src/jit/jitee.h +++ b/src/jit/jitee.h @@ -78,6 +78,8 @@ public: JIT_FLAG_USE_PINVOKE_HELPERS = 36, // The JIT should use the PINVOKE_{BEGIN,END} helpers instead of emitting inline transitions JIT_FLAG_REVERSE_PINVOKE = 37, // The JIT should insert REVERSE_PINVOKE_{ENTER,EXIT} helpers into method prolog/epilog JIT_FLAG_DESKTOP_QUIRKS = 38, // The JIT should generate desktop-quirk-compatible code + JIT_FLAG_TIER0 = 39, // This is the initial tier for tiered compilation which should generate code as quickly as possible + JIT_FLAG_TIER1 = 40, // This is the final tier (for now) for tiered compilation which should generate high quality code }; // clang-format on @@ -187,6 +189,8 @@ public: FLAGS_EQUAL(CORJIT_FLAGS::CORJIT_FLAG_USE_PINVOKE_HELPERS, JIT_FLAG_USE_PINVOKE_HELPERS); FLAGS_EQUAL(CORJIT_FLAGS::CORJIT_FLAG_REVERSE_PINVOKE, JIT_FLAG_REVERSE_PINVOKE); FLAGS_EQUAL(CORJIT_FLAGS::CORJIT_FLAG_DESKTOP_QUIRKS, JIT_FLAG_DESKTOP_QUIRKS); + FLAGS_EQUAL(CORJIT_FLAGS::CORJIT_FLAG_TIER0, JIT_FLAG_TIER0); + FLAGS_EQUAL(CORJIT_FLAGS::CORJIT_FLAG_TIER1, JIT_FLAG_TIER1); #undef FLAGS_EQUAL } |