diff options
author | Aaron Patterson <tenderlove@ruby-lang.org> | 2021-09-07 12:57:33 -0700 |
---|---|---|
committer | Alan Wu <XrXr@users.noreply.github.com> | 2021-10-20 18:19:40 -0400 |
commit | 234ab816bacd3b9d7895d1acacaee28e0ade4166 (patch) | |
tree | b5ec56974470dc56d78d3483fae8781da1d5f3ca /ruby.c | |
parent | 013a4a31d65810c9c1b8d34d12a7b766261440a3 (diff) |
Exit if YJIT and MJIT are both enabled
YJIT and MJIT can't be running in the same process otherwise they'll
clobber each other. We should show an error and exit if they're both
enabled.
Diffstat (limited to 'ruby.c')
-rw-r--r-- | ruby.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -1834,13 +1834,18 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt) */ rb_warning("-K is specified; it is for 1.8 compatibility and may cause odd behavior"); - if (opt->features.set & FEATURE_BIT(yjit)) - rb_yjit_init(&opt->yjit); #if USE_MJIT if (opt->features.set & FEATURE_BIT(jit)) { opt->mjit.on = TRUE; /* set mjit.on for ruby_show_version() API and check to call mjit_init() */ } #endif + if (opt->features.set & FEATURE_BIT(yjit)) { + if (opt->mjit.on) { + rb_warn("MJIT and YJIT are both enabled at the same time. Exiting"); + exit(1); + } + rb_yjit_init(&opt->yjit); + } if (opt->dump & (DUMP_BIT(version) | DUMP_BIT(version_v))) { #if USE_MJIT mjit_opts.on = opt->mjit.on; /* used by ruby_show_version(). mjit_init() still can't be called here. */ |