Age | Commit message (Collapse) | Author |
|
When the build is running with a base ruby then generating `x64-ucrt-ruby320.rc`
could fail due to a missing dependency to `x64-mingw-ucrt-fake.rb`.
This commit adds this dependency.
A failing build looks like so:
```
generating x64-mingw-ucrt-fake.rb
generating x64-ucrt-ruby320.rc
../snapshot-master/win32/resource.rb:in `require': cannot load such file -- ./x64-mingw-ucrt-fake (LoadError)
make: *** [GNUmakefile:57: x64-ucrt-ruby320.rc] Error 1
make: *** Waiting for unfinished jobs....
linking miniruby.exe
x64-mingw-ucrt-fake.rb updated
```
Notes:
Merged: https://github.com/ruby/ruby/pull/6347
|
|
* Eliminate redundant mov in csel/cmov. Translate mov reg,0 into xor
* Fix x86 asm test
* Remove dbg!()
* xor optimization unsound because it resets flags
Notes:
Merged-By: maximecb <maximecb@ruby-lang.org>
|
|
|
|
* Introduce InstructionOffset for AArch64
There are a lot of instructions on AArch64 where we take an offset
from PC in terms of the number of instructions. This is for loading
a value relative to the PC or for jumping.
We were usually accepting an A64Opnd or an i32. It can get
confusing and inconsistent though because sometimes you would
divide by 4 to get the number of instructions or multiply by 4 to
get the number of bytes.
This commit adds a struct that wraps an i32 in order to keep all of
that logic in one place. It makes it much easier to read and reason
about how these offsets are getting used.
* Use b instruction when the offset fits on AArch64
Notes:
Merged-By: maximecb <maximecb@ruby-lang.org>
|
|
Gems without specific platform were being preferred over matching
platform specific gems.
https://github.com/rubygems/rubygems/commit/37b95b9159
|
|
|
|
Remove the superfluous str_modify_keep_cr() call from rb_str_update().
It ends up calling either rb_str_drop_bytes() or rb_str_splice_0(),
which already does checks if necessary.
The extra call makes the string "independent". This is not always
wanted, in other words, it can keep the same shared root when merely
removing the leading part of a shared string.
Notes:
Merged: https://github.com/ruby/ruby/pull/6336
|
|
Previously, it was supported in prelude.c, but has not followed up the
builtin-loader system.
Notes:
Merged: https://github.com/ruby/ruby/pull/6344
|
|
I want to use more complicated macros with MJIT. For example:
```
# define SHAPE_MASK (((unsigned int)1 << SHAPE_BITS) - 1)
```
This commit adds a simple recursive descent parser that produces an AST
and a small visitor that converts the AST to Ruby.
Notes:
Merged-By: k0kubun <takashikkbn@gmail.com>
|
|
|
|
|
|
matching
[Bug #18990]
|
|
|
|
This commit does a bunch of stuff to try to eliminate as many
unnecessary mov instructions as possible.
First, it introduces the Insn::LoadInto instruction. Previously
when we needed a value to go into a specific register (like in
Insn::CCall when we're putting values into the argument registers
or in Insn::CRet when we're putting a value into the return
register) we would first load the value and then mov it into the
correct register. This resulted in a lot of duplicated work with
short live ranges since they basically immediately we unnecessary.
The new instruction accepts a destination and does not interact
with the register allocator at all, making it much more efficient.
We then use the new instruction when we're loading values into
argument registers for AArch64 or X86_64, and when we're returning
a value from AArch64. Notably we don't do it when we're returning
a value from X86_64 because everything can be accomplished with a
single mov anyway.
A couple of unnecessary movs were also present because when we
called the split_load_opnd function in a lot of split passes we
were loading all registers and instruction outputs. We no longer do
that.
This commit also makes it so that UImm(0) passes through the
Insn::Store split without attempting to be loaded, which allows it
can take advantage of the zero register. So now instead of mov-ing
0 into a register and then calling store, it just stores XZR.
Notes:
Merged-By: maximecb <maximecb@ruby-lang.org>
|
|
|
|
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/6328
|
|
classic console(conhost.exe) reports an input with ALT+NUMPAD as VK_MENU, KeyUp, and uChar!=0.
additional fix for #5634
Notes:
Merged: https://github.com/ruby/ruby/pull/6328
|
|
UnicodeChar with lower byte == 0 has dropped accidentaly
this is additional fix for #5634
Notes:
Merged: https://github.com/ruby/ruby/pull/6328
|
|
Get rid of the conflict with system-provided small `off_t`.
Notes:
Merged: https://github.com/ruby/ruby/pull/6329
|
|
Already using `rb_w32_truncate` and `rb_w32_ftruncate`, and
`HAVE_FTRUNCATE` has been added 14 years ago.
Notes:
Merged: https://github.com/ruby/ruby/pull/6329
|
|
We don't need it, and in string interpolation context
that's the common case.
Notes:
Merged: https://github.com/ruby/ruby/pull/6334
|
|
That's about 1.30x faster.
Notes:
Merged: https://github.com/ruby/ruby/pull/6334
|
|
https://github.com/rubygems/rubygems/commit/ca8d47e53a
|
|
Fixes id.h error during updating ripper.c by `make after-update`.
While it used to update id.h in the build directory, but was trying to
update ripper.c in the source directory. In principle, files in the
source directory can or should not depend on files in the build
directory.
|
|
Separate the logic accross the tables from the template view for
id.h.
|
|
The current code would define ruby_qsort as a wrapper of qsort_s
when it is available. When both qsort_s and POSIX (GNU) qsort_r
are available, we should call qsort_r directly instead, and
the qsort_s wrapper is redundant.
Notes:
Merged: https://github.com/ruby/ruby/pull/6332
Merged-By: nobu <nobu@ruby-lang.org>
|
|
Ractor-compliance
https://github.com/ruby/forwardable/commit/c91f41f4fa
|
|
https://github.com/ruby/ipaddr/commit/73461724e5
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/6331
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/6331
|
|
|
|
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/6330
|
|
|
|
|
|
|
|
I meant the other one. Otherwise this option doesn't make sense.
|
|
to let mjit_add_iseq_to_process work
|
|
|
|
|
|
fixing the behavior of b726c06e7eeafff52e368179dbe79a11b1aff975
|
|
|
|
|
|
Resolves CVE-2022-25857, among other fixes.
https://github.com/ruby/psych/commit/918cd25d37
|
|
Fix ruby/psych#572
https://github.com/ruby/psych/commit/92304269bc
|
|
we should handle ensure block when omit this test
|
|
|
|
https://github.com/rubygems/rubygems/commit/e4cee1f975
|
|
and add another useful one instead.
|