From 171c496e5082c2e1e9aad80bcd204c1e850512c1 Mon Sep 17 00:00:00 2001 From: k0kubun Date: Thu, 22 Feb 2018 14:53:17 +0000 Subject: version.c: show +JIT when --jit is passed in version output. version.h: ditto ruby.c: propagate option for it common.mk: updated dependency for version.c mjit.c: overwrites the RUBY_DESCRIPTION to have +JIT when --jit is passed test/ruby/test_rubyoptions.rb: add test for them Only `ruby --jit -v` will have "+JIT", but this is intentional. This may not be convenient for debugging by ticket with `ruby -v`, but it's convenient for benchmark tools that pass options (--jit) when showing it. At least such behavior is planned for benchmark_driver.gem and this behavior is designed for it. Other benchmark tools are recommended to follow the behavior too if they show version. RUBY_DESCRIPTION might be useful for it too. The position of "+JIT" is changed from original proposal because other platforms like JRuby and TruffleRuby end it with archtecture. It's made similar to JRuby, but it's upper-cased because Matz made approval for "+JIT" in the ticket. Example: $ ruby -v ruby 2.6.0dev (2018-02-22 trunk 62529) [x86_64-linux] $ ruby --jit -v ruby 2.6.0dev (2018-02-22 trunk 62529) +JIT [x86_64-linux] After --jit is made default in the future, this output may be removed. So do not rely on this output if possible. [Feature #14462] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62530 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- mjit.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'mjit.c') diff --git a/mjit.c b/mjit.c index 502769c52b..b8cb4f5424 100644 --- a/mjit.c +++ b/mjit.c @@ -1314,12 +1314,16 @@ system_tmpdir(void) /* Minimum value for JIT cache size. */ #define MIN_CACHE_SIZE 10 +extern const char ruby_description_with_jit[]; + /* Initialize MJIT. Start a thread creating the precompiled header and processing ISeqs. The function should be called first for using MJIT. If everything is successfull, MJIT_INIT_P will be TRUE. */ void mjit_init(struct mjit_options *opts) { + VALUE rb_description; + mjit_opts = *opts; mjit_init_p = TRUE; @@ -1366,6 +1370,11 @@ mjit_init(struct mjit_options *opts) rb_id_table_foreach(RCLASS_CONST_TBL(rb_cObject), valid_class_serials_add_i, NULL); } + /* Overwrites RUBY_DESCRIPTION constant */ + rb_const_remove(rb_cObject, rb_intern("RUBY_DESCRIPTION")); + rb_description = rb_usascii_str_new_static(ruby_description_with_jit, strlen(ruby_description_with_jit)); + rb_define_global_const("RUBY_DESCRIPTION", rb_obj_freeze(rb_description)); + /* Initialize worker thread */ finish_worker_p = FALSE; worker_finished = FALSE; -- cgit v1.2.3