Don't try to clear cache on garbage objects
Method cache can be cleared during lazy sweeping. An object that will
be collected during lazy sweep *should not* have it's method cache
cleared. Soon-to-be-collected objects can be in an inconsistent state and
this can lead to a crash. This patch just leaves early if the object is
going to be collected.
Fixes [Bug #17536]
Co-Authored-By: John Hawthorn <john@hawthorn.email>
Co-Authored-By: Alan Wu <XrXr@users.noreply.github.com>
---
vm_method.c | 1 +
1 file changed, 1 insertion(+)
Guard callinfo
Callinfo was being written in to an array and the GC would not see the
reference on the stack. `new_insn_send` creates a new callinfo object,
then it calls `new_insn_core`. `new_insn_core` allocates a new INSN
linked list item, which can end up calling `xmalloc` which will trigger
a GC:
70cd351c7c/compile.c (L968-L969)
Since the callinfo object isn't on the stack, the GC won't see it, and
it can get collected. This patch just refactors `new_insn_send` to keep
the object on the stack
Co-authored-by: John Hawthorn <john@hawthorn.email>
---
compile.c | 7 +++++--
test/ruby/test_gc.rb | 10 ++++++++++
2 files changed, 15 insertions(+), 2 deletions(-)
Fix WB for callinfo
The WB for callinfo needs to be executed *after* the reference is
written. Otherwise we get a WB miss.
---
compile.c | 1 +
1 file changed, 1 insertion(+)
Fix for windres 2.36 [Bug #17602]
Add --preprocessor and --preprocessor-arg for each preprocessor
command arguments, as windres 2.36 requires preprocessor name and
arguments to be separated to respect spaces in these paths.
---
cygwin/GNUmakefile.in | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
Return new NODE_LIT
As NODE_ZLIST/NODE_LIST are not markable, cannot be reused as
NODE_LIT.
---
parse.y | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
Ensure symbol list node is either NODE_STR or NODE_DSTR
---
parse.y | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
NODE markability should not change by nd_set_type
---
node.c | 31 +++++++++++++++++++++++++------
node.h | 12 ++++++++++++
2 files changed, 37 insertions(+), 6 deletions(-)
Make warning values consistent [Bug #17523]
They should be affected, as well as `$VERBOSE`, by `-w`/`-W`
options, not only in the main script but in scripts loaded by `-r`
option too.
---
ruby.c | 4 ++--
test/ruby/test_rubyoptions.rb | 9 +++++++++
2 files changed, 11 insertions(+), 2 deletions(-)
Revert "[Bug #11213] let defined?(super) call respond_to_missing?"
This reverts commit fac2498e02 for
now, due to [Bug #17509], the breakage in the case `super` is
called in `respond_to?`.
---
internal/vm.h | 2 +-
test/ruby/test_defined.rb | 33 ---------------------------------
vm_insnhelper.c | 4 ++--
vm_method.c | 12 +++++++-----
4 files changed, 10 insertions(+), 41 deletions(-)
* Get rid of inconsistent dll linkages against vcpkg readline
* [ruby/irb] Enhance colored inspect output
dffcdb5269
* [ruby/irb] Add color_printer.rb to gemspec
b4df0fd8b2
* [ruby/irb] Fix failing tests
7723ade899
* irb: add more syntax errors colorizing support (#3967)
* [ruby/irb] Do not colorize partially-correct inspect
This is to prevent a yellow-mixed output for ActiveSupport::TimeWithZone.
Follows up https://github.com/ruby/irb/pull/159 and https://github.com/ruby/ruby/pull/3967.
a5804c3560
* [ruby/irb] Remove unnecessary ignore_error in dispatch_seq
Just forgotten in a5804c3560e42e548793
* Increase timeout for reline with --jit-wait
for failures like:
http://ci.rvm.jp/logfiles/brlog.trunk-mjit-wait.20201229-130509http://ci.rvm.jp/logfiles/brlog.trunk-mjit-wait.20201229-165132http://ci.rvm.jp/logfiles/brlog.trunk-mjit-wait.20201228-015519
* [ruby/irb] Stringify when a non-object is passed to PP#text
If a nested object is passed to #pp, it may be sometimes passed to the #text
method as an object without being stringified.
This is fixed on the Ruby main repository;
433a3be86a
but it was a bug of Ripper so still needs this workaround for using irb
as a gem on Ruby 3.0.0 or earlier.
Co-authored-by: k0kubun <takashikkbn@gmail.com>
8d13df22ee
* [ruby/irb] Newline in oneliner def doesn't reset indent
This closesruby/irb#132.
43456dcf5e
* [ruby/irb] Escape invalid byte sequence in Exception
This fixesruby/irb#141.
0815317d42
* [ruby/irb] Handle indentations related to keyword "do" correctly
This fixesruby/irb#158.
964643400b
* [ruby/irb] Heredoc may contain multiple newlines in a single token
Use the start token as the indentation criteria so that it works properly in
heredoc.
ref. https://github.com/ruby/reline/pull/2429704808dfd
* [ruby/irb] Use Ripper::Lexer#scan to take broken tokens
ref. https://github.com/ruby/reline/pull/24254f90cb6c9
* [ruby/irb] Use error tokens if there are no correct tokens in the same place
For example, the broken code "%www" will result in only one error token.
9fa39a7cf3
* [ruby/irb] Ensure to restore $VERBOSE
cef474a76a
* 600x larger timeout for Reline
I didn't notice it's msec. 2.5s is too short.
http://ci.rvm.jp/results/trunk-mjit-wait@phosphorus-docker/3311385
* [ruby/irb] fix typo in `IRB::Irb#convert_invalid_byte_sequence`
d09d3c3d68
* [ruby/irb] do not escape a predicate method for doc namespace
* Fixes#88d431a30af4
* [ruby/irb] refactoring an error handling in `IRB::Inspector`
* moved rescue clause to `#inspect_value` to catch all failures in inspectors
* test with all (currently five kind of) inspect modes
- tweaked the input due to only `Marshal` can inspect(dump) a `BasicObject`
9d112fab8e
* [ruby/irb] Use Exception#full_message to show backtrace in the correct order
[Bug #17466]
1c76845cca
* [ruby/irb] Fix BACK_TRACE_LIMIT logic
30dc5d43fe
* irb: Drop lines from backtrace for tests in Ruby repository
* [ruby/reline] Update cursor correctly when just cursor moving
This fixesruby/reline#236 and ruby/reline#239.
3e3c89d00b
* [ruby/reline] Correct var names in Reline were different from vi-*-mode-string
8255fc93b9
* [ruby/reline] Remove debug print
d7fbaedc6a
* [ruby/reline] Suppress crashing when auto_indent_proc returns broken indent info
Co-authored-by: Juanito Fatas <me@juanitofatas.com>
7c24276275
* [ruby/reline] Suppress crashing when dynamic_prompt_proc returns a broken prompt list
Co-authored-by: Juanito Fatas <me@juanitofatas.com>
558f7be168
* [ruby/reline] Suppress auto indent for adding newlines in pasting
Co-authored-by: Juanito Fatas <me@juanitofatas.com>
074bb017a7
* [ruby/reline] Add acknowledgments and license for rb-readline
19df59b916
* [ruby/irb] Fix comment, irb gem supports 2.5.0 or older
36118015ba
* should use `assert_include` here.
Random ordering test can introduce antoher candidate so it should be
`assert_include`.
* [ruby/irb] Add missing require
This is useful if you want to use IRB::ColorPrinter as a library like:
```
begin
require 'irb/color_printer'
IRB::ColorPrinter.pp(obj)
rescue LoadError
pp(obj)
end
```
f8461691c7
* [ruby/irb] Make IRB::ColorPrinter.pp compatible with PP.pp
The incompatible interface is not helpful, again if you want to use it
as a standalone library, falling it back to PP.
Original PP.pp also ends with `out << "\n"`.
4c74c7d84c
* Suppress constant redefinition warnings
* Fix the failing test with XDG_CONFIG_HOME
* [ruby/irb] Version 1.3.1
c230d08911
* [ruby/reline] Handle ed_search_{prev,next}_history in multiline correctly
The current line was being handled incorrectly when displaying the hit
history, so it has been fixed to be correct.
a3df4343b3
* [ruby/reline] Move the cursor correctly when deleting at eol
This fixesruby/reline#246.
07a73ba601
* [ruby/reline] Version 0.2.1
a3b3c6ee60
* [ruby/reline] Initialize a variable just in case
29b10f6e98
* [ruby/reline] Tests with yamatanooroti don't need chdir
Because of chdir, log files ware created in temporary directries on Windows.
200b469a68
* [ruby/reline] Windows needs more times to wait rendering
53ff2b09c7
* [ruby/reline] Support for change in Windows-specific behavior at eol
The behavior of automatically moving the cursor to the next line when
displaying a char at the eol on Windows suddenly disappeared.
cad4de6ee8
* [ruby/reline] Reline::Windows.erase_after_cursor erases attributes too
68b961dfc7
* [ruby/irb] [ruby/irb] [ruby/reline] Version 0.2.2
dfb710946f1a1cdf9628fe99faf8bd
* [ruby/irb] handle `__ENCODING__` as a keyword as well
a6a33d908f
* [ruby/irb] handle repeated exception separately
fcf6b34bc5
* [ruby/irb] skip a failling test on TruffleRuby
* due to the difference of backtrace pointed out by @aycabta
5e00a0ae61
* [ruby/irb] Version 1.3.2
a7699026cc
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
Co-authored-by: Nobuhiro IMAI <nov@yo.rim.or.jp>
Co-authored-by: Koichi Sasada <ko1@atdot.net>
Co-authored-by: Hiroshi SHIBATA <hsbt@ruby-lang.org>
on interruption.
The cancellation code was originally written for leave insn, but re-entering
opt_invokebuiltin_delegate_leave insn on a cancellation is not safe, because
a builtin function is executed twice.
The count of rb_alloc_tmp_buffer_with_count is the allocation size
counted in VALUE size but not in the requested element size.
Co-authored-by: Yusuke Endoh <mame@ruby-lang.org>
Co-authored-by: Koichi Sasada <ko1@atdot.net>
constant cache `IC` is accessed by non-atomic manner and there are
thread-safety issues, so Ruby 3.0 disables to use const cache on
non-main ractors.
This patch enables it by introducing `imemo_constcache` and allocates
it by every re-fill of const cache like `imemo_callcache`.
[Bug #17510]
Now `IC` only has one entry `IC::entry` and it points to
`iseq_inline_constant_cache_entry`, managed by T_IMEMO object.
`IC` is atomic data structure so `rb_mjit_before_vm_ic_update()` and
`rb_mjit_after_vm_ic_update()` is not needed.
The recent Termux's clang predefines `__ANDROID_API__` as a fixed number
24. However, when it is lower to the current device version, some
functions that "configure" detemines available are not declared
correctly in the header files.
This change forces to overwrite the predefined `__ANDROID_API__` macro
with the current device version.
ref: https://github.com/termux/termux-packages/issues/6176