summaryrefslogtreecommitdiff
path: root/ruby.c
Commit message (Collapse)AuthorAgeFilesLines
* ruby.c: initialize extra optional extensions linked staticallyYuta Saito2022-01-191-0/+10
| | | | | | | Add a hook point to initialize extra extension libraries. The default hook function is replaced when linking a strong `Init_extra_exts` symbol. A builder can insert an object file that defines Init_extra_exts by XLDFLAGS.
* [Feature #18491] Drop support for HP-UXPeter Zhu2022-01-181-4/+0
| | | | | IA64 support was dropped in ticket #15894, so we can drop support for HP-UX.
* `O_NONBLOCK` is not always a preprocessor constant on all platformsNobuyoshi Nakada2022-01-161-6/+7
|
* Transfer the responsibility for MJIT options to mjit.cNobuyoshi Nakada2022-01-151-117/+14
|
* Define the default JIT feature bitNobuyoshi Nakada2022-01-151-15/+10
|
* Show JIT options only when supportedNobuyoshi Nakada2022-01-121-1/+17
|
* Fix compile errorsKazuhiro NISHIYAMA2022-01-111-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | ``` compiling ../ruby.c ../ruby.c:1547:17: error: implicit declaration of function 'setup_yjit_options' is invalid in C99 [-Werror,-Wimplicit-function-declaration] setup_yjit_options(s, &opt->yjit); ^ ../ruby.c:1547:17: note: did you mean 'setup_mjit_options'? ../ruby.c:1122:1: note: 'setup_mjit_options' declared here setup_mjit_options(const char *s, struct mjit_options *mjit_opt) ^ ../ruby.c:1547:45: error: no member named 'yjit' in 'struct ruby_cmdline_options'; did you mean 'mjit'? setup_yjit_options(s, &opt->yjit); ^~~~ mjit ../ruby.c:192:25: note: 'mjit' declared here struct mjit_options mjit; ^ ../ruby.c:1924:28: error: no member named 'yjit' in 'struct ruby_cmdline_options'; did you mean 'mjit'? rb_yjit_init(&opt->yjit); ^~~~ mjit ../ruby.c:192:25: note: 'mjit' declared here struct mjit_options mjit; ^ 3 errors generated. ```
* Use `setup_yjit_options` only when supportedNobuyoshi Nakada2022-01-111-16/+13
|
* Reject command line option ending with `-`Nobuyoshi Nakada2022-01-111-1/+2
|
* Define YJIT options only when supportedNobuyoshi Nakada2022-01-111-0/+2
|
* Fix default --jit-max-cache in `ruby --help`Kazuhiro NISHIYAMA2022-01-101-1/+1
| | | | changed at 028f1887c2bfa50dcfc1b623470d6ab1b880fdde
* Add `=num` to yjit optionsKazuhiro NISHIYAMA2022-01-091-5/+5
| | | | `--yjit-call-threshold` and `--yjit-max-versions` need an argument.
* Fix crash on bootup when RGENGC_CHECK_MODE=2 with GC stressPeter Zhu2022-01-041-1/+4
| | | | | | We need to unshare the array loaded_features because the shared root could be old gen (while loaded_features is young) which causes a WB miss.
* Rename --jit to --mjit (#5248)Takashi Kokubun2021-12-131-20/+42
| | | | | | | | | | | | | | | * Rename --jit to --mjit [Feature #18349] * Fix a few more --jit references * Fix MJIT Actions * More s/jit/mjit/ and re-introduce --disable-jit * Update NEWS.md * Fix test_bug_reporter_add
* ruby.c: Fix typoYusuke Endoh2021-12-131-1/+1
|
* Introduce an option "--dump=insns_without_opt" for debugging purposesYusuke Endoh2021-12-131-3/+6
|
* Revert "Force disable yjit on OpenBSD"Aaron Patterson2021-12-011-6/+0
| | | | This reverts commit 119626da947bf6492ef7a27abf3bf12de5d0d95a.
* Add --yjit-no-type-prop so we can test YJIT without type propagation (#5135)Maxime Chevalier-Boisvert2021-11-181-0/+3
| | | | | | | * Add --yjit-no-type-prop so we can test YJIT without type propagation * Fix typo in command line option * Leave just two test workflows enable for YJIT
* [Feature #18239] Implement VWA for stringsPeter Zhu2021-10-251-1/+6
| | | | | This commit adds support for embedded strings with variable capacity and uses Variable Width Allocation to allocate strings.
* Fix TestRubyOptions#test_enable for -DMJIT_FORCE_ENABLETakashi Kokubun2021-10-211-0/+5
| | | | --enable=all didn't work when cppflags=-DMJIT_FORCE_ENABLE was given.
* Force disable yjit on OpenBSDJeremy Evans2021-10-211-0/+6
| | | | | | | | | | | | | | TestRubyOptions#test_enable was broken on OpenBSD after the yjit merge. --yjit (and --enable-all, which enables --yjit) fails on OpenBSD because yjit uses an insecure mmap call (both writable and executable), in alloc_exec_mem, which OpenBSD does not allow. This can probably be reverted if yjit switches to a more secure mmap design (writable xor executable). This would involve initially calling mmap with PROT_READ | PROT_WRITE, and after writing of executable code has finished, using mprotect to switch to PROT_READ | PROT_EXEC. I believe Firefox uses this approach for their Javascript engine since Firefox 46.
* Fix indentation in ruby.cAlan Wu2021-10-201-2/+2
|
* Warn when trying to use YJIT in --disable-jit-support buildsAlan Wu2021-10-201-0/+4
|
* Show --yjit in help messageAlan Wu2021-10-201-0/+1
|
* Improve YJIT command line option parsingAlan Wu2021-10-201-10/+22
| | | | | | Previously, options such as "--yjit123" would enable YJIT. Additionally, the error message for argument parsing mentioned "--jit-..." instead of "--yjit-...".
* YJIT_STATS instead of RUBY_DEBUG for --yjit-stats in help printoutAlan Wu2021-10-201-1/+1
|
* Say YJIT is disabled by default in ruby --helpAlan Wu2021-10-201-1/+1
|
* Style fix in ruby.cAlan Wu2021-10-201-1/+1
|
* Don't enable YJIT by default. More tests on both Ubuntu and MacOS.Noah Gibbs2021-10-201-1/+6
| | | | | Add RUBY_YJIT_ENABLE env var and YJIT_FORCE_ENABLE compile-time constant. Rename YJIT_STATS to RUBY_YJIT_STATS.
* Reduce line length for YJIT option descriptionsNoah Gibbs2021-10-201-2/+2
|
* Document YJIT options in --helpNoah Gibbs2021-10-201-2/+14
|
* is this right?Aaron Patterson2021-10-201-0/+1
|
* Don't check MJIT if it's not enabledAaron Patterson2021-10-201-0/+2
|
* Disable YJIT by default if MJIT_FORCE_ENABLE is onAaron Patterson2021-10-201-1/+2
| | | | | Compile time flag seems pretty forceful, so let MJIT turn on by default if it is used.
* disable MJIT when --enable-all is setAaron Patterson2021-10-201-0/+1
|
* Update ruby.cMaxime Chevalier-Boisvert2021-10-201-1/+1
|
* Exit if YJIT and MJIT are both enabledAaron Patterson2021-10-201-2/+7
| | | | | | 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.
* Try running with more YJIT options in CI to surface more bugsMaxime Chevalier-Boisvert2021-10-201-2/+2
|
* Increase default YJIT call threshold to 10. Add exec mem size arg. (#52)Maxime Chevalier-Boisvert2021-10-201-1/+4
|
* Implement greedy versioning. Refactor versioning logic. (#10)Maxime Chevalier-Boisvert2021-10-201-0/+6
| | | | | | * Implement eager versioning. Refactor versioning logic. * Add --version-limit and --greedy-versioning command-line args
* Yet Another Ruby JIT!Jose Narvaez2021-10-201-14/+14
| | | | Renaming uJIT to YJIT. AKA s/ujit/yjit/g.
* Implement --ujit-call-thresholdMaxime Chevalier-Boisvert2021-10-201-3/+4
|
* Report unknown --ujit-* optionsMaxime Chevalier-Boisvert2021-10-201-0/+4
|
* Implement --ujit-stats and instructoin countingAlan Wu2021-10-201-5/+22
| | | | | | VM and ujit instruction counting in debug builds. shopify/ruby#19
* Refactor uJIT code into more files for readabilityMaxime Chevalier-Boisvert2021-10-201-1/+1
|
* Show whether MicroJIT is enabled in the version stringAlan Wu2021-10-201-2/+2
|
* Fix mistake in ujit command line parsingAlan Wu2021-10-201-1/+1
|
* Implement the --disable-ujit command line optionAlan Wu2021-10-201-0/+10
|
* Skip broken strings as the locale encodingNobuyoshi Nakada2021-10-011-4/+7
|
* Replace expanded load path only when modifiedNobuyoshi Nakada2021-10-011-1/+5
|