diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 6489454c57c74b..81c6bff401780e 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -208,7 +208,7 @@ jobs: matrix: include: # Using the same setup as ZJIT jobs - - bench_opts: '--warmup=1 --bench=1' + - bench_opts: '--warmup=1 --bench=1 --excludes=lobsters' runs-on: ubuntu-24.04 @@ -242,8 +242,10 @@ jobs: repository: ruby/ruby-bench path: ruby-bench + # If you want to skip failing benchmark, consider using `--excludes`. + # e.g. `bench_opts: '--warmup=1 --bench=1 --excludes=railsbench,lobsters'` - name: Run ruby-bench - run: rm -rf benchmarks/lobsters && ruby run_benchmarks.rb -e "ruby::../build/install/bin/ruby" ${{ matrix.bench_opts }} + run: ruby run_benchmarks.rb -e "ruby::../build/install/bin/ruby" ${{ matrix.bench_opts }} working-directory: ruby-bench - uses: ./.github/actions/slack diff --git a/.github/workflows/zjit-macos.yml b/.github/workflows/zjit-macos.yml index 55bfcb30f22364..a638907811c3f1 100644 --- a/.github/workflows/zjit-macos.yml +++ b/.github/workflows/zjit-macos.yml @@ -158,7 +158,7 @@ jobs: include: # Test --call-threshold=2 with 2 iterations in total - ruby_opts: '--zjit-call-threshold=2' - bench_opts: '--warmup=1 --bench=1' + bench_opts: '--warmup=1 --bench=1 --excludes=lobsters' configure: '--enable-zjit=dev_nodebug' # --enable-zjit=dev is too slow runs-on: macos-14 @@ -197,8 +197,10 @@ jobs: repository: ruby/ruby-bench path: ruby-bench + # If you want to skip failing benchmark, consider using `--excludes`. + # e.g. `bench_opts: '--warmup=1 --bench=1 --excludes=railsbench,lobsters'` - name: Run ruby-bench - run: rm -rf benchmarks/lobsters && ruby run_benchmarks.rb -e "zjit::../build/install/bin/ruby ${{ matrix.ruby_opts }}" ${{ matrix.bench_opts }} + run: ruby run_benchmarks.rb -e "zjit::../build/install/bin/ruby ${{ matrix.ruby_opts }}" ${{ matrix.bench_opts }} working-directory: ruby-bench - uses: ./.github/actions/slack diff --git a/.github/workflows/zjit-ubuntu.yml b/.github/workflows/zjit-ubuntu.yml index 13b1add5b09568..4d5ecb7280c04d 100644 --- a/.github/workflows/zjit-ubuntu.yml +++ b/.github/workflows/zjit-ubuntu.yml @@ -215,7 +215,7 @@ jobs: include: # Test --call-threshold=2 with 2 iterations in total - ruby_opts: '--zjit-call-threshold=2' - bench_opts: '--warmup=1 --bench=1' + bench_opts: '--warmup=1 --bench=1 --excludes=lobsters' configure: '--enable-zjit=dev_nodebug' # --enable-zjit=dev is too slow runs-on: ubuntu-24.04 @@ -250,8 +250,10 @@ jobs: repository: ruby/ruby-bench path: ruby-bench + # If you want to skip failing benchmark, consider using `--excludes`. + # e.g. `bench_opts: '--warmup=1 --bench=1 --excludes=railsbench,lobsters'` - name: Run ruby-bench - run: rm -rf benchmarks/lobsters && ruby run_benchmarks.rb -e "zjit::../build/install/bin/ruby ${{ matrix.ruby_opts }}" ${{ matrix.bench_opts }} + run: ruby run_benchmarks.rb -e "zjit::../build/install/bin/ruby ${{ matrix.ruby_opts }}" ${{ matrix.bench_opts }} working-directory: ruby-bench - uses: ./.github/actions/slack diff --git a/compar.c b/compar.c index eda7e83824a4e0..0fb7e5f6584e73 100644 --- a/compar.c +++ b/compar.c @@ -109,10 +109,15 @@ cmp_gt(VALUE x, VALUE y) /* * call-seq: - * obj >= other -> true or false + * self >= other -> true or false + * + * Returns whether +self+ is "greater than or equal to" +other+; + * equivalent to (self <=> other) >= 0: + * + * 'food' >= 'foo' # => true + * 'foo' >= 'foo' # => true + * 'foo' >= 'food' # => false * - * Compares two objects based on the receiver's <=> - * method, returning true if it returns a value greater than or equal to 0. */ static VALUE diff --git a/gc/mmtk/src/pinning_registry.rs b/gc/mmtk/src/pinning_registry.rs index 71cf73eaf913b4..b498b508f1f97b 100644 --- a/gc/mmtk/src/pinning_registry.rs +++ b/gc/mmtk/src/pinning_registry.rs @@ -110,6 +110,11 @@ impl GCWork for PinPinningChildren { target_object ); if pin { + debug_assert!( + target_object.get_forwarded_object().is_none(), + "Trying to pin {target_object} but has been moved" + ); + pinned_objs.push(target_object); } target_object diff --git a/hash.c b/hash.c index b0de8e943355af..f264bfba4bc40f 100644 --- a/hash.c +++ b/hash.c @@ -4950,10 +4950,9 @@ rb_hash_lt(VALUE hash, VALUE other) /* * call-seq: - * self >= other_hash -> true or false + * self >= other -> true or false * - * Returns +true+ if the entries of +self+ are a superset of the entries of +other_hash+, - * +false+ otherwise: + * Returns whether the entries of +self+ are a superset of the entries of +other+: * * h0 = {foo: 0, bar: 1, baz: 2} * h1 = {foo: 0, bar: 1} diff --git a/numeric.c b/numeric.c index 87d50ae4a1b9e8..8f866d00bde628 100644 --- a/numeric.c +++ b/numeric.c @@ -1674,7 +1674,8 @@ rb_float_gt(VALUE x, VALUE y) * call-seq: * self >= other -> true or false * - * Returns +true+ if +self+ is numerically greater than or equal to +other+: + * Returns whether the value of +self+ is greater than or equal to the value of +other+; + * +other+ must be numeric, but may not be Complex: * * 2.0 >= 1 # => true * 2.0 >= 1.0 # => true @@ -5001,10 +5002,10 @@ fix_ge(VALUE x, VALUE y) /* * call-seq: - * self >= real -> true or false + * self >= other -> true or false * - * Returns +true+ if the value of +self+ is greater than or equal to - * that of +other+: + * Returns whether the value of +self+ is greater than or equal to the value of +other+; + * +other+ must be numeric, but may not be Complex: * * 1 >= 0 # => true * 1 >= 1 # => true diff --git a/object.c b/object.c index aaa3326ebf6df5..ed7e0ff224cf0b 100644 --- a/object.c +++ b/object.c @@ -162,7 +162,7 @@ rb_obj_setup(VALUE obj, VALUE klass, VALUE type) * * Returns +true+ or +false+. * - * Like Object#==, if +object+ is an instance of Object + * Like Object#==, if +other+ is an instance of \Object * (and not an instance of one of its many subclasses). * * This method is commonly overridden by those subclasses, @@ -1892,11 +1892,12 @@ rb_mod_freeze(VALUE mod) /* * call-seq: - * mod === obj -> true or false + * self === other -> true or false * - * Case Equality---Returns true if obj is an - * instance of mod or an instance of one of mod's descendants. - * Of limited use for modules, but can be used in case statements + * Returns whether +other+ is an instance of +self+, + * or is an instance of a subclass of +self+. + * + * Of limited use for modules, but can be used in +case+ statements * to classify objects by class. */ diff --git a/range.c b/range.c index 7aa917bc067b68..c8a4b9938bab8e 100644 --- a/range.c +++ b/range.c @@ -2054,10 +2054,9 @@ VALUE rb_str_include_range_p(VALUE beg, VALUE end, VALUE val, VALUE exclusive); /* * call-seq: - * self === object -> true or false + * self === other -> true or false * - * Returns +true+ if +object+ is between self.begin and self.end. - * +false+ otherwise: + * Returns whether +other+ is between self.begin and self.end: * * (1..4) === 2 # => true * (1..4) === 5 # => false diff --git a/re.c b/re.c index 621af13cd73f16..f8672d1d7ce187 100644 --- a/re.c +++ b/re.c @@ -3728,9 +3728,9 @@ rb_reg_match(VALUE re, VALUE str) /* * call-seq: - * regexp === string -> true or false + * self === other -> true or false * - * Returns +true+ if +self+ finds a match in +string+: + * Returns whether +self+ finds a match in +other+: * * /^[a-z]*$/ === 'HELLO' # => false * /^[A-Z]*$/ === 'HELLO' # => true diff --git a/tool/zjit_iongraph.html b/tool/zjit_iongraph.html index e97ac74e4ac411..993cce90455260 100644 --- a/tool/zjit_iongraph.html +++ b/tool/zjit_iongraph.html @@ -1,7 +1,7 @@ + 39b04fa18f23cbf3fd2ca7339a45341ff3351ba1 in tekknolagi/iongraph --> @@ -337,6 +337,10 @@ overflow-y: auto; } +.ig-hide-if-empty:empty { + display: none; +} + /* Non-utility styles */ .ig-graph { @@ -511,8 +515,7 @@ -
-