| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2021-10-20 | YJIT: hash specialization for opt_aref | Alan Wu | |
| Make it lazy and add a hash specialization in addition to the array specialization. | |||
| 2021-10-20 | Exit reason breakdown for opt_aref | Alan Wu | |
| 2021-10-20 | YJIT: use a flat array for finding codegen functions | Alan Wu | |
| Simpler and faster. | |||
| 2021-10-20 | YJIT: unify exits. Patch iseqs only when necessary | Alan Wu | |
| * YJIT: unify exits. Patch iseqs only when necessary This fixes the gotcha that returning YJIT_CANT_COPMILE for an instruction at entry position leading to infinite loop. Also, iseq patching is only done only when necessary, which should make most exits faster. * Now that exits are the same, return YJIT_CANT_COMPILE | |||
| 2021-10-20 | Yjit: rename context struct | Alan Wu | |
| 2021-10-20 | Fix condition in cb_align_pos which should return early when aligned | Dylan Thacker-Smith | |
| 2021-10-20 | Update yjit.md | Marc Feeley | |
| Fix a typo in the bibtex. | |||
| 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 | Add metric for average # of insns spent in yjit before exiting | Maxime Chevalier-Boisvert | |
| 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 | Remove trailing whitespaces | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Check for null | Alan Wu | |
| Sometimes you bop before you init, you know? | |||
| 2021-10-20 | Fix trailing spaces | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update yjit.md | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Make Blocks depend on BOPS | Aaron Patterson | |
| When a BOP is redefined, the BOP redefinition callback will invalidate any blocks that depend on BOPS. This allows us to eliminate runtime checks for BOP redefinition. | |||
| 2021-10-20 | Update yjit.md | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update yjit.md | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Yet Another Ruby JIT! | Jose Narvaez | |
| Renaming uJIT to YJIT. AKA s/ujit/yjit/g. | |||
| 2021-10-20 | YJIT: handle when all counters are zero in printout code | Alan Wu | |
| Also filter with not equal to zero instead of greater than zero, in case there is memory corruption and counters are negative. Fixes Shopify/ruby#70 | |||
| 2021-10-20 | Update ujit_core.h | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update ujit_core.h | Maxime Chevalier-Boisvert | |
| Co-authored-by: Alan Wu <XrXr@users.noreply.github.com> | |||
| 2021-10-20 | Machinery to implement deferred compilation | Maxime Chevalier-Boisvert | |
| 2021-10-20 | YJIT: fix leak, remove unused field on block_t | Alan Wu | |
| This field was never used and is now covered by jit_mov_gc_ptr. | |||
| 2021-10-20 | YJIT: Use 2D array to group block versions | Alan Wu | |
| For deferred compilation, we sometimes want to care about the order of the block versions. Use an array instead of a linked list to do that. | |||
| 2021-10-20 | Rename test files | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update yjit.md | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update yjit.md | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update yjit.md | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update and rename ujit.md to yjit.md | Maxime Chevalier-Boisvert | |
| 2021-10-20 | WIP refactor block lists to use darray | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update ujit.md | Maxime Chevalier-Boisvert | |
| 2021-10-20 | uJIT: support 64 bit operands for TEST. Use it to check for zero | Alan Wu | |
| It's one byte shorter than `cmp reg64, 0`. To illustrate: ``` 48 83 f9 00 cmp rcx, 0x0 48 85 c9 test rcx, rcx ``` | |||
| 2021-10-20 | Add UJIT.reset_stats! | Alan Wu | |
| To allow analyzing sections of the application. | |||
| 2021-10-20 | uJIT: Add exit counters for leave and refactor stats printout code | Alan Wu | |
| Filter out counters that are zero and make it easier to have multiple printout groups. On `railsbench`: ``` opt_send_without_block exit reasons: se_finish_frame 184809 (100.0%) ``` | |||
| 2021-10-20 | uJIT: add guards for protected opt_send_without_block calls | Alan Wu | |
| These account for about 12% of the time when we were bailing from calls in railsbench. `ratio_in_ujit` went up 0.1% with this change. | |||
| 2021-10-20 | At jit_at_current_insn, jit_peek_at_stack functions | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Runtime counters for bailing from opt_send_without_block | Alan Wu | |
| This allows counting things in generated code such as side exits or different reasons for failing to compile. Runtime counters are exposed to Ruby as `UJIT.runtime_stats` for ease of reporting and analysis. | |||
| 2021-10-20 | Update ec->cfp->pc when hitting a stub. | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Thread EC through jit state. Add codegen status enum. | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Support memory operands to pop | Max Bernstein | |
| 2021-10-20 | Update ujit.md | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update ujit.md | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update ujit.md | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Support memory operands to push | Max Bernstein | |
| 2021-10-20 | Fix jmp encoding. Rename conditional jumps jxx() to jxx_label() | Maxime Chevalier-Boisvert | |
| 2021-10-20 | uJIT: Implement opt_getinlinecache | Alan Wu | |
| * ujit: implement opt_getinlinecache Aggressively bet that writes to constants don't happen and invalidate all opt_getinlinecache blocks on any and all constant writes. Use alignment padding on block_t to track this assumption. No change to sizeof(block_t). * Fix compile warnings when not RUBY_DEBUG * Fix reversed condition * Switch to st_table to keep track of assumptions Co-authored-by: Aaron Patterson <aaron.patterson@gmail.com> Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com> | |||
| 2021-10-20 | Implement support for variadic C functions | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update ujit.md | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update ujit.md | Maxime Chevalier-Boisvert | |
