Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
Make sure `opt_getinlinecache` is in a block all on its own, and
invalidate it from the interpreter when `opt_setinlinecache`.
It will recompile with a filled cache the second time around.
This lets YJIT runs well when the IC for constant is cold.
|
|
ASAN can catch these type of things for us, but the scraper can't
handle ASAN :/.
To be more resilient to refactoring, extend the lifetime of
`generic_ctx` in branch_stub_hit() too.
|
|
Fixes bug involving ractors and branch stubs.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The old code decides branch->shape based on the write position of the
native code block, which is unsound in case the block already exists
and no new code is written to the write position.
Make this decision with the start address of the target block instead.
Also handle when the branch becomes smaller after patching.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This is playing it safe. Ruby headers rely on some macros generated by
autoconf that affect what system headers behave. We should take care to
bring in those configs before including systme headers to stay
consistent with the rest of Ruby.
|
|
Lazily compile out a chain of checks for different known classes and
whether `self` embeds its ivars or not.
* Remove trailing whitespaces
* Get proper addresss in Capstone disassembly
* Lowercase address in Capstone disassembly
Capstone uses lowercase for jump targets in generated listings. Let's
match it.
* Use the same successor in getivar guard chains
Cuts down on duplication
* Address reviews
* Fix copypasta error
* Add a comment
|
|
This is how vm.c does it, and if we don't follow it in yjit
compilation units, rb_vm_t would have a conflicting size.
|
|
|
|
Renaming uJIT to YJIT. AKA s/ujit/yjit/g.
|