Reset the cache variable before retrying

This commit is contained in:
Nobuyoshi Nakada 2025-11-26 10:47:17 +09:00
parent 6354afa64a
commit 26a9e0b4e3
No known key found for this signature in database
GPG Key ID: 3582D74E1FEE4465
7 changed files with 7 additions and 51 deletions

View File

@ -11,8 +11,6 @@ rdoc_include:
exclude:
- \.gemspec\z
generator_name: aliki
autolink_excluded_words:
- Class
- Method
@ -25,16 +23,3 @@ autolink_excluded_words:
- YJIT
canonical_root: https://docs.ruby-lang.org/en/master
footer_content:
Ruby:
Documentation: index.html
Official Website: https://www.ruby-lang.org/
Playground: https://ruby.github.io/play-ruby/
Resources:
GitHub: https://github.com/ruby/ruby
Issue Tracker: https://bugs.ruby-lang.org/projects/ruby-master/issues
RubyGems: https://rubygems.org/
Community:
X: https://x.com/rubylangorg

View File

@ -167,7 +167,7 @@ The following bundled gems are promoted from default gems.
* pstore 0.2.0
* benchmark 0.5.0
* logger 1.7.0
* rdoc 6.16.0
* rdoc 6.15.1
* win32ole 1.9.2
* irb 1.15.3
* reline 0.6.3
@ -221,7 +221,7 @@ The following bundled gems are updated.
* minitest 5.26.2
* power_assert 3.0.1
* rake 13.3.1
* test-unit 3.7.3
* test-unit 3.7.1
* rexml 3.4.4
* net-ftp 0.3.9
* net-imap 0.5.12

View File

@ -1749,8 +1749,10 @@ AS_IF([test "$GCC" = yes], [
for lib in "" atomic; do
AS_IF([test "$lib" != ""], [
AC_CHECK_LIB([atomic], [__atomic_fetch_add_8])
unset rb_cv_gcc_atomic_builtins_64
])
AC_CACHE_CHECK([for 64bit __atomic builtins], [rb_cv_gcc_atomic_builtins_64], [
AC_CACHE_CHECK([for 64bit __atomic builtins${lib:+ with -l$lib}],
[rb_cv_gcc_atomic_builtins_64], [
AC_LINK_IFELSE([AC_LANG_PROGRAM([[@%:@include <stdint.h>
uint64_t atomic_var;]],
[[

View File

@ -9,7 +9,7 @@
minitest 5.26.2 https://github.com/minitest/minitest
power_assert 3.0.1 https://github.com/ruby/power_assert
rake 13.3.1 https://github.com/ruby/rake
test-unit 3.7.3 https://github.com/test-unit/test-unit
test-unit 3.7.1 https://github.com/test-unit/test-unit
rexml 3.4.4 https://github.com/ruby/rexml
rss 0.3.1 https://github.com/ruby/rss
net-ftp 0.3.9 https://github.com/ruby/net-ftp
@ -39,7 +39,7 @@ ostruct 0.6.3 https://github.com/ruby/ostruct
pstore 0.2.0 https://github.com/ruby/pstore
benchmark 0.5.0 https://github.com/ruby/benchmark
logger 1.7.0 https://github.com/ruby/logger
rdoc 6.16.0 https://github.com/ruby/rdoc
rdoc 6.15.1 https://github.com/ruby/rdoc
win32ole 1.9.2 https://github.com/ruby/win32ole
irb 1.15.3 https://github.com/ruby/irb
reline 0.6.3 https://github.com/ruby/reline

View File

@ -426,13 +426,6 @@ rb_imemo_mark_and_move(VALUE obj, bool reference_updating)
rb_gc_mark_and_move_ptr(&env->iseq);
if (VM_ENV_LOCAL_P(env->ep) && VM_ENV_BOXED_P(env->ep)) {
const rb_box_t *box = VM_ENV_BOX(env->ep);
if (BOX_USER_P(box)) {
rb_gc_mark_and_move((VALUE *)&box->box_object);
}
}
if (reference_updating) {
((VALUE *)env->ep)[VM_ENV_DATA_INDEX_ENV] = rb_gc_location(env->ep[VM_ENV_DATA_INDEX_ENV]);
}

View File

@ -810,21 +810,4 @@ class TestBox < Test::Unit::TestCase
assert_equal expected, 1
end;
end
def test_mark_box_object_referred_only_from_binding
assert_separately([ENV_ENABLE_BOX], __FILE__, __LINE__, "#{<<~"begin;"}\n#{<<~'end;'}", ignore_stderr: true)
begin;
box = Ruby::Box.new
box.eval('class Integer; def +(*)=42; end')
b = box.eval('binding')
box = nil # remove direct reference to the box
assert_equal 42, b.eval('1+2')
GC.stress = true
GC.start
assert_equal 42, b.eval('1+2')
end;
end
end

7
vm.c
View File

@ -3677,13 +3677,6 @@ rb_execution_context_mark(const rb_execution_context_t *ec)
rb_gc_mark_movable((VALUE)cfp->iseq);
rb_gc_mark_movable((VALUE)cfp->block_code);
if (VM_ENV_LOCAL_P(ep) && VM_ENV_BOXED_P(ep)) {
const rb_box_t *box = VM_ENV_BOX(ep);
if (BOX_USER_P(box)) {
rb_gc_mark_movable(box->box_object);
}
}
if (!VM_ENV_LOCAL_P(ep)) {
const VALUE *prev_ep = VM_ENV_PREV_EP(ep);
if (VM_ENV_FLAGS(prev_ep, VM_ENV_FLAG_ESCAPED)) {