Define the default JIT feature bit
This commit is contained in:
parent
7c70151aed
commit
d853a7886e
Notes:
git
2022-01-15 18:56:17 +09:00
25
ruby.c
25
ruby.c
@ -105,7 +105,7 @@ void rb_warning_category_update(unsigned int mask, unsigned int bits);
|
|||||||
SEP \
|
SEP \
|
||||||
X(mjit) \
|
X(mjit) \
|
||||||
SEP \
|
SEP \
|
||||||
X(yjit)
|
X(yjit) \
|
||||||
/* END OF FEATURES */
|
/* END OF FEATURES */
|
||||||
#define EACH_DEBUG_FEATURES(X, SEP) \
|
#define EACH_DEBUG_FEATURES(X, SEP) \
|
||||||
X(frozen_string_literal) \
|
X(frozen_string_literal) \
|
||||||
@ -116,6 +116,11 @@ void rb_warning_category_update(unsigned int mask, unsigned int bits);
|
|||||||
enum feature_flag_bits {
|
enum feature_flag_bits {
|
||||||
EACH_FEATURES(DEFINE_FEATURE, COMMA),
|
EACH_FEATURES(DEFINE_FEATURE, COMMA),
|
||||||
feature_debug_flag_first,
|
feature_debug_flag_first,
|
||||||
|
#if defined(MJIT_FORCE_ENABLE) || !YJIT_SUPPORTED_P
|
||||||
|
DEFINE_FEATURE(jit) = feature_mjit,
|
||||||
|
#else
|
||||||
|
DEFINE_FEATURE(jit) = feature_yjit,
|
||||||
|
#endif
|
||||||
feature_debug_flag_begin = feature_debug_flag_first - 1,
|
feature_debug_flag_begin = feature_debug_flag_first - 1,
|
||||||
EACH_DEBUG_FEATURES(DEFINE_DEBUG_FEATURE, COMMA),
|
EACH_DEBUG_FEATURES(DEFINE_DEBUG_FEATURE, COMMA),
|
||||||
feature_flag_count
|
feature_flag_count
|
||||||
@ -976,20 +981,12 @@ feature_option(const char *str, int len, void *arg, const unsigned int enable)
|
|||||||
if (NAME_MATCH_P(#bit, str, len)) {set |= mask = FEATURE_BIT(bit); FEATURE_FOUND;}
|
if (NAME_MATCH_P(#bit, str, len)) {set |= mask = FEATURE_BIT(bit); FEATURE_FOUND;}
|
||||||
EACH_FEATURES(SET_FEATURE, ;);
|
EACH_FEATURES(SET_FEATURE, ;);
|
||||||
if (NAME_MATCH_P("jit", str, len)) { // This allows you to cancel --jit
|
if (NAME_MATCH_P("jit", str, len)) { // This allows you to cancel --jit
|
||||||
#if defined(MJIT_FORCE_ENABLE) || !YJIT_SUPPORTED_P
|
set |= mask = FEATURE_BIT(jit);
|
||||||
set |= mask = FEATURE_BIT(mjit);
|
|
||||||
#else
|
|
||||||
set |= mask = FEATURE_BIT(yjit);
|
|
||||||
#endif
|
|
||||||
goto found;
|
goto found;
|
||||||
}
|
}
|
||||||
if (NAME_MATCH_P("all", str, len)) {
|
if (NAME_MATCH_P("all", str, len)) {
|
||||||
// YJIT and MJIT cannot be enabled at the same time. We enable only YJIT for --enable=all.
|
// YJIT and MJIT cannot be enabled at the same time. We enable only one for --enable=all.
|
||||||
#if defined(MJIT_FORCE_ENABLE) || !YJIT_SUPPORTED_P
|
mask &= ~(FEATURE_BIT(yjit) | FEATURE_BIT(mjit)) | FEATURE_BIT(jit);
|
||||||
mask &= ~(FEATURE_BIT(yjit));
|
|
||||||
#else
|
|
||||||
mask &= ~(FEATURE_BIT(mjit));
|
|
||||||
#endif
|
|
||||||
goto found;
|
goto found;
|
||||||
}
|
}
|
||||||
#if AMBIGUOUS_FEATURE_NAMES
|
#if AMBIGUOUS_FEATURE_NAMES
|
||||||
@ -1543,10 +1540,8 @@ proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt)
|
|||||||
else if (strcmp("jit", s) == 0) {
|
else if (strcmp("jit", s) == 0) {
|
||||||
#if !USE_MJIT
|
#if !USE_MJIT
|
||||||
rb_warn("Ruby was built without JIT support");
|
rb_warn("Ruby was built without JIT support");
|
||||||
#elif defined(MJIT_FORCE_ENABLE) || !YJIT_SUPPORTED_P
|
|
||||||
FEATURE_SET(opt->features, FEATURE_BIT(mjit));
|
|
||||||
#else
|
#else
|
||||||
FEATURE_SET(opt->features, FEATURE_BIT(yjit));
|
FEATURE_SET(opt->features, FEATURE_BIT(jit));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (is_option_with_optarg("mjit", '-', true, false, false)) {
|
else if (is_option_with_optarg("mjit", '-', true, false, false)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user