Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
because I'm not gonna limit this to insns anymore.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This was accidentally re-introduced in f6620037ba1477d2c337d7b511f094d6d0fbb69c.
[Bug #19298]
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/6987
|
|
[Misc #19250]
Notes:
Merged-By: k0kubun <[email protected]>
|
|
Subtract max value from offset when sign bit is set, without string operations.
Notes:
Merged-By: k0kubun <[email protected]>
|
|
Prefer Array#unpack1 and Enumerable#sum.
I think the bitmask formula ``2 ** @width - 1`` would be clearer, but not faster for such small integers.
Notes:
Merged-By: k0kubun <[email protected]>
|
|
|
|
|
|
It seems to slow down optcarrot. I'll revisit this later.
|
|
Converting a CDHASH into a safe Hash is a lot of work, but retrieving
just values is much easier.
|
|
obviating status->merge_ivar_guards_p as refactoring
|
|
MJIT worker no longer exists, so we don't need this safeguard anymore.
|
|
* Revert "Revert "MJIT: Make it parsable by Solargraph""
This reverts commit 8e18761da1932df88bfb6505acbda4740e1b2930.
* Call rb_gc_register_mark_object
Notes:
Merged-By: k0kubun <[email protected]>
|
|
This reverts commit ccd8dd6ad395bbd9f5290e0fcb7929e5e5d36767.
Revert "MJIT: Fix miniruby with MJIT_FORCE_ENABLE"
This reverts commit b033775ed9d9226ba73c1d4a197e55ba89575142.
GitHub Actions is failing. I ran out of time today to investigate it.
will try it again tomorrow.
|
|
|
|
Solargraph complains about it
|
|
Faster code generation and cleaner code.
|
|
You shouldn't assume bf->compiler is always non-zero. While struct
aref/aset is no longer a builtin function since
https://github.com/ruby/ruby/pull/5131, it seems like you could still
load such an iseq binary.
The refactored code fallbacks to compile_insn_default correctly when
bf->compiler is zero.
|
|
instead of FILE*.
Using C.fprintf is slower than String manipulation on memory. I'm going
to change the way MJIT writes files, and this is a prerequisite for it.
|
|
and clean up legacy comments for the Ruby migration
|
|
`#compile` has a catch-call rescue, so compile_insn_entry shouldn't do
that. It was a temporary code needed during the migration.
|
|
I'm not comfortable indenting code that deeply.
|
|
no longer used after 4ea9d7d7c223ff92365c4a013fc1bd073d67a3a5
|
|
because this code crashes on railsbench. I'll try adding a repro for it
later, but I don't know shapes enough to craft it right away.
|
|
|
|
access properly. Because the libclang node had two children, it wasn't
handled well by the pattern matching for the bit field case.
In addition to that, this bit field has a non-1 width. Because we're
returning true/false for a width-1 bit field, I added another behavior
that works like a char value for bit fields with width 2-8.
|
|
NotImplementedError is not part StandardError, for example. When that
kind of exception happens, current_cc_unit remains not NULL, and
mjit_finish ends up waiting for 5 seconds, which is inconvenient.
|
|
maybe not used since some shape changes?
|
|
We don't need this constant to be exposed anymore, so remove it
Notes:
Merged: https://github.com/ruby/ruby/pull/6728
|
|
https://github.com/ruby/ruby/blob/45fe7f757522ed7d1d3ec754da59d41d45dd6bab/tool/ruby_vm/views/_mjit_compile_invokebuiltin.erb#L21
has not been ported correctly.
|
|
Since object shapes store the capacity of an object, we no longer
need the numiv field on RObjects. This gives us one extra slot which
we can use to give embedded objects one more instance variable (for a
total of 3 ivs). This commit removes the concept of numiv from RObject.
Notes:
Merged: https://github.com/ruby/ruby/pull/6699
|
|
This commit adds a `capacity` field to shapes, and adds shape
transitions whenever an object's capacity changes. Objects which are
allocated out of a bigger size pool will also make a transition from the
root shape to the shape with the correct capacity for their size pool
when they are allocated.
This commit will allow us to remove numiv from objects completely, and
will also mean we can guarantee that if two objects share shapes, their
IVs are in the same positions (an embedded and extended object cannot
share shapes). This will enable us to implement ivar sets in YJIT using
object shapes.
Co-Authored-By: Aaron Patterson <[email protected]>
Notes:
Merged: https://github.com/ruby/ruby/pull/6699
|
|
|