Age | Commit message (Collapse) | Author | |
---|---|---|---|
2021-10-20 | Malloc branch entries (#112) | Maxime Chevalier-Boisvert | |
* Malloc branch entries * Add ASM comment for stack overflow check * WIP * Fix branch GC code. Add rb_darray_remove_unordered(). * Fix block end_pos after branch rewriting. Remove dst_patched bits. | |||
2021-10-20 | Temporarily increase MAX_BRANCHES until we have a better solution | Maxime Chevalier-Boisvert | |
2021-10-20 | Diff the local types in ctx_diff() | Maxime Chevalier-Boisvert | |
2021-10-20 | move assert. opnd.idx doesn't make sense for OPND_SELF | Alan Wu | |
2021-10-20 | Fix bug in ctx_set_local_type() | Maxime Chevalier-Boisvert | |
2021-10-20 | Re-enable local type tracking, until first call | Maxime Chevalier-Boisvert | |
2021-10-20 | Assert for running out of branches in all builds | Alan Wu | |
2021-10-20 | Introduce concept of YJIT instruction operands | Maxime Chevalier-Boisvert | |
2021-10-20 | YJIT: Fancier opt_getinlinecache | Alan Wu | |
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. | |||
2021-10-20 | Fix stack-use-after-scope in gen_direct_jump() | Alan Wu | |
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. | |||
2021-10-20 | Add flag bits to avoid compiling stubs multiple times. | Maxime Chevalier-Boisvert | |
Fixes bug involving ractors and branch stubs. | |||
2021-10-20 | Keep track of local types in the context | Maxime Chevalier-Boisvert | |
2021-10-20 | Add ctcx_stack_push_local() | Maxime Chevalier-Boisvert | |
2021-10-20 | Add comments and asserts for clarity | Maxime Chevalier-Boisvert | |
2021-10-20 | Readd const arguments | Maxime Chevalier-Boisvert | |
2021-10-20 | Fix branch rewrite issue | Maxime Chevalier-Boisvert | |
2021-10-20 | Update yjit_core.c | Maxime Chevalier-Boisvert | |
2021-10-20 | YJIT: adjust branch shape properly when target already exists | Alan Wu | |
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. | |||
2021-10-20 | Fix type_diff logic after Alan pointed out errors | Maxime Chevalier-Boisvert | |
2021-10-20 | Part 1 of improved type tracking logic | Maxime Chevalier-Boisvert | |
2021-10-20 | Stop all other ractors when patching machine code | Alan Wu | |
2021-10-20 | Fix issue with version matching logic | Maxime Chevalier-Boisvert | |
2021-10-20 | Polymorphic opt_send_without_block | Alan Wu | |
2021-10-20 | Get rid of dependency on rb_call_cache | Alan Wu | |
2021-10-20 | Tweak include order in yjit_core.c | Alan Wu | |
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. | |||
2021-10-20 | YJIT: lazy polymorphic getinstancevariable | Alan Wu | |
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 | |||
2021-10-20 | Include ruby/ruby.h before vm_core.h | Alan Wu | |
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. | |||
2021-10-20 | Fix trailing spaces | Maxime Chevalier-Boisvert | |
2021-10-20 | Yet Another Ruby JIT! | Jose Narvaez | |
Renaming uJIT to YJIT. AKA s/ujit/yjit/g. |