| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2021-10-20 | Don't generate entry point when PC != 0 | John Hawthorn | |
| If we hit this at PC > 0 (ie. with an optional argument) the provided types and context are likely incorrect and it is likely this block can't be used. | |||
| 2021-10-20 | Allow upgrading first N types when stack is large | John Hawthorn | |
| 2021-10-20 | Improve comments for mapping functions | John Hawthorn | |
| 2021-10-20 | Fix ctx_clear_local_types | John Hawthorn | |
| 2021-10-20 | Make ctx_diff aware of mappings | John Hawthorn | |
| 2021-10-20 | Introduce ctx_{get,set}_opnd_mapping | John Hawthorn | |
| 2021-10-20 | Rename to ctx_upgrade_opnd_type | John Hawthorn | |
| 2021-10-20 | Make sure we can still compile with the JIT disabled | Aaron Patterson | |
| If `--disable-jit-support` is passed to configure, then `jit_func` is removed from the iseq body and we can't compile YJIT. This commit detects when the JIT function pointer is gone and disables YJIT in that case. | |||
| 2021-10-20 | Fix BOP invalidation | Aaron Patterson | |
| Instead of mutating the iseqs, just clear the JIT function. | |||
| 2021-10-20 | Add a guard that we start executing on the first PC | Aaron Patterson | |
| Methods with optional parameters don't always start executing at the first PC, but we compile all methods assuming that they do. This commit adds a guard to ensure that we're actually starting at the first PC for methods with optional params | |||
| 2021-10-20 | fix alignment | Aaron Patterson | |
| 2021-10-20 | Flatten mappings when clearing locals | John Hawthorn | |
| We clear locals when we know their values might change (ex. when performing a method call). However previously values on the stack which were originally pushed from a local would still point back to that local. With this commit, when clearing locals, we'll now iterate over the mappings of the stack and copy the known type from the local to the stack mapping, removing the association to the local. This should mean both that we'll retain any information we already know about the local type, and that if a local is modified we won't incorrectly infer it's new type from the existing value on the stack. | |||
| 2021-10-20 | Convert yjit static stat variables to counters | Noah Gibbs | |
| 2021-10-20 | Try running with more YJIT options in CI to surface more bugs | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update comment | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Remove #define MAX_VERSIONS, now using command-line option | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Fix issue in yjit_free_block causing segfault | Maxime Chevalier-Boisvert | |
| This addresses issue #55 | |||
| 2021-10-20 | Fix assertions in `invalidate_block_version()`, add small repro (#14) | Maxime Chevalier-Boisvert | |
| * Fix block invalidation assertions * Add Alan's small repro for double invalidation bug | |||
| 2021-10-20 | Implement greedy versioning. Refactor versioning logic. (#10) | Maxime Chevalier-Boisvert | |
| * Implement eager versioning. Refactor versioning logic. * Add --version-limit and --greedy-versioning command-line args | |||
| 2021-10-20 | Pass self type through method calls | Maxime Chevalier-Boisvert | |
| 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. | |||
