Nobuyoshi Nakada
8b585f7460
Define YJIT options only when supported
2022-01-11 10:12:40 +09:00
Kazuhiro NISHIYAMA
c764e368bd
Fix default --jit-max-cache in `ruby --help`
...
changed at 028f1887c2
2022-01-10 20:17:05 +09:00
Kazuhiro NISHIYAMA
a7faca51ac
Add `=num` to yjit options
...
`--yjit-call-threshold` and `--yjit-max-versions` need an argument.
2022-01-09 12:39:34 +09:00
Peter Zhu
44379805b0
Fix crash on bootup when RGENGC_CHECK_MODE=2 with GC stress
...
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.
2022-01-04 14:46:20 -05:00
Takashi Kokubun
11b8aaa26a
Rename --jit to --mjit ( #5248 )
...
* 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
2021-12-13 16:08:01 -08:00
Yusuke Endoh
a692a1597f
ruby.c: Fix typo
2021-12-13 10:29:08 +09:00
Yusuke Endoh
8613c0c675
Introduce an option "--dump=insns_without_opt" for debugging purposes
2021-12-13 10:29:08 +09:00
Aaron Patterson
3b2b28d035
Revert "Force disable yjit on OpenBSD"
...
This reverts commit 119626da94
.
2021-12-01 12:46:30 -08:00
Maxime Chevalier-Boisvert
cdebf57ec6
Add --yjit-no-type-prop so we can test YJIT without type propagation ( #5135 )
...
* 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
2021-11-18 10:44:31 -05:00
Peter Zhu
a5b6598192
[Feature #18239 ] Implement VWA for strings
...
This commit adds support for embedded strings with variable capacity and
uses Variable Width Allocation to allocate strings.
2021-10-25 13:26:23 -04:00
Takashi Kokubun
6469038ae2
Fix TestRubyOptions#test_enable for -DMJIT_FORCE_ENABLE
...
--enable=all didn't work when cppflags=-DMJIT_FORCE_ENABLE was given.
2021-10-21 20:41:14 -07:00
Jeremy Evans
119626da94
Force disable yjit on OpenBSD
...
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.
2021-10-21 08:26:02 -07:00
Alan Wu
40608d0b7b
Fix indentation in ruby.c
2021-10-20 18:19:43 -04:00
Alan Wu
95e337f815
Warn when trying to use YJIT in --disable-jit-support builds
2021-10-20 18:19:43 -04:00
Alan Wu
ff863f3818
Show --yjit in help message
2021-10-20 18:19:43 -04:00
Alan Wu
11096da6cc
Improve YJIT command line option parsing
...
Previously, options such as "--yjit123" would enable YJIT. Additionally,
the error message for argument parsing mentioned "--jit-..." instead of
"--yjit-...".
2021-10-20 18:19:43 -04:00
Alan Wu
1f25bba7b7
YJIT_STATS instead of RUBY_DEBUG for --yjit-stats in help printout
2021-10-20 18:19:42 -04:00
Alan Wu
d4fae3e390
Say YJIT is disabled by default in ruby --help
2021-10-20 18:19:42 -04:00
Alan Wu
d355bf17ba
Style fix in ruby.c
2021-10-20 18:19:42 -04:00
Noah Gibbs
21e58acef3
Don't enable YJIT by default. More tests on both Ubuntu and MacOS.
...
Add RUBY_YJIT_ENABLE env var and YJIT_FORCE_ENABLE compile-time constant.
Rename YJIT_STATS to RUBY_YJIT_STATS.
2021-10-20 18:19:42 -04:00
Noah Gibbs
f021b35273
Reduce line length for YJIT option descriptions
2021-10-20 18:19:42 -04:00
Noah Gibbs
fab469b678
Document YJIT options in --help
2021-10-20 18:19:42 -04:00
Aaron Patterson
afc5db43ca
is this right?
2021-10-20 18:19:40 -04:00
Aaron Patterson
b78c50d800
Don't check MJIT if it's not enabled
2021-10-20 18:19:40 -04:00
Aaron Patterson
9d5beb6fde
Disable YJIT by default if MJIT_FORCE_ENABLE is on
...
Compile time flag seems pretty forceful, so let MJIT turn on by default
if it is used.
2021-10-20 18:19:40 -04:00
Aaron Patterson
ea453acf59
disable MJIT when --enable-all is set
2021-10-20 18:19:40 -04:00
Maxime Chevalier-Boisvert
a1d42c37f4
Update ruby.c
2021-10-20 18:19:40 -04:00
Aaron Patterson
234ab816ba
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.
2021-10-20 18:19:40 -04:00
Maxime Chevalier-Boisvert
7030cae969
Try running with more YJIT options in CI to surface more bugs
2021-10-20 18:19:36 -04:00
Maxime Chevalier-Boisvert
b415ceb92e
Increase default YJIT call threshold to 10. Add exec mem size arg. ( #52 )
2021-10-20 18:19:35 -04:00
Maxime Chevalier-Boisvert
96f4f918b0
Implement greedy versioning. Refactor versioning logic. ( #10 )
...
* Implement eager versioning. Refactor versioning logic.
* Add --version-limit and --greedy-versioning command-line args
2021-10-20 18:19:34 -04:00
Jose Narvaez
4e2eb7695e
Yet Another Ruby JIT!
...
Renaming uJIT to YJIT. AKA s/ujit/yjit/g.
2021-10-20 18:19:31 -04:00
Maxime Chevalier-Boisvert
0710bec01e
Implement --ujit-call-threshold
2021-10-20 18:19:30 -04:00
Maxime Chevalier-Boisvert
a14015e9b5
Report unknown --ujit-* options
2021-10-20 18:19:28 -04:00
Alan Wu
b7f93e81df
Implement --ujit-stats and instructoin counting
...
VM and ujit instruction counting in debug builds.
shopify/ruby#19
2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
e4c65ec49c
Refactor uJIT code into more files for readability
2021-10-20 18:19:26 -04:00
Alan Wu
726bdd4d35
Show whether MicroJIT is enabled in the version string
2021-10-20 18:19:24 -04:00
Alan Wu
a8d784888d
Fix mistake in ujit command line parsing
2021-10-20 18:19:24 -04:00
Alan Wu
e8c914c250
Implement the --disable-ujit command line option
2021-10-20 18:19:24 -04:00
Nobuyoshi Nakada
842b0008c1
Skip broken strings as the locale encoding
2021-10-01 20:28:44 +09:00
Nobuyoshi Nakada
409dbc951b
Replace expanded load path only when modified
2021-10-01 20:28:44 +09:00
Nobuyoshi Nakada
b6534691a1
Copy path strings as interned strings
2021-10-01 20:28:44 +09:00
Nobuyoshi Nakada
60d0421ca8
Fix the encoding of loaded feature names [Bug #18191 ]
...
The feature names loaded from the default load paths should also
be in the file system encoding.
2021-10-01 20:28:44 +09:00
卜部昌平
f83b14af24
include/ruby/internal/interpreter.h: add doxygen
...
Must not be a bad idea to improve documents. [ci skip]
In fact many functions declared in the header file are already
documented more or less. They were just copy & pasted, with applying
some style updates.
2021-09-10 20:00:06 +09:00
S-H-GAMELINKS
bdd6d8746f
Replace RBOOL macro
2021-09-05 23:01:27 +09:00
Nobuyoshi Nakada
3db7f6353f
Suppress unused-but-set-variable warning
2021-07-06 00:09:27 +09:00
Yusuke Endoh
9438c99590
Rename error_squiggle to error_highlight
2021-06-29 23:45:49 +09:00
Yusuke Endoh
e946049665
[WIP] add error_squiggle gem
...
```
$ ./local/bin/ruby -e '1.time {}'
-e:1:in `<main>': undefined method `time' for 1:Integer (NoMethodError)
1.time {}
^^^^^
Did you mean? times
```
https://bugs.ruby-lang.org/issues/17930
2021-06-29 23:45:49 +09:00
Samuel Williams
45e65f302b
Deprecate and rework old (fd) centric functions.
2021-06-22 22:48:57 +12:00
Nobuyoshi Nakada
791d7d4947
Freeze command line script
2021-06-10 15:15:35 +09:00