Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Yet Another Ruby JIT! | Jose Narvaez | 2021-10-20 | 36 | -1320/+1312 |
| | | | | Renaming uJIT to YJIT. AKA s/ujit/yjit/g. | ||||
* | YJIT: handle when all counters are zero in printout code | Alan Wu | 2021-10-20 | 1 | -1/+6 |
| | | | | | | | 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 | ||||
* | Update ujit_core.h | Maxime Chevalier-Boisvert | 2021-10-20 | 1 | -1/+1 |
| | |||||
* | Update ujit_core.h | Maxime Chevalier-Boisvert | 2021-10-20 | 1 | -1/+1 |
| | | | Co-authored-by: Alan Wu <XrXr@users.noreply.github.com> | ||||
* | Machinery to implement deferred compilation | Maxime Chevalier-Boisvert | 2021-10-20 | 5 | -49/+94 |
| | |||||
* | YJIT: fix leak, remove unused field on block_t | Alan Wu | 2021-10-20 | 4 | -6/+0 |
| | | | | This field was never used and is now covered by jit_mov_gc_ptr. | ||||
* | YJIT: Use 2D array to group block versions | Alan Wu | 2021-10-20 | 3 | -44/+48 |
| | | | | | 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. | ||||
* | Rename test files | Maxime Chevalier-Boisvert | 2021-10-20 | 3 | -0/+0 |
| | |||||
* | Update yjit.md | Maxime Chevalier-Boisvert | 2021-10-20 | 1 | -4/+4 |
| | |||||
* | Update yjit.md | Maxime Chevalier-Boisvert | 2021-10-20 | 1 | -2/+2 |
| | |||||
* | Update yjit.md | Maxime Chevalier-Boisvert | 2021-10-20 | 1 | -15/+15 |
| | |||||
* | Update and rename ujit.md to yjit.md | Maxime Chevalier-Boisvert | 2021-10-20 | 1 | -2/+2 |
| | |||||
* | WIP refactor block lists to use darray | Maxime Chevalier-Boisvert | 2021-10-20 | 5 | -66/+78 |
| | |||||
* | Update ujit.md | Maxime Chevalier-Boisvert | 2021-10-20 | 1 | -0/+1 |
| | |||||
* | uJIT: support 64 bit operands for TEST. Use it to check for zero | Alan Wu | 2021-10-20 | 3 | -5/+6 |
| | | | | | | | | | It's one byte shorter than `cmp reg64, 0`. To illustrate: ``` 48 83 f9 00 cmp rcx, 0x0 48 85 c9 test rcx, rcx ``` | ||||
* | Add UJIT.reset_stats! | Alan Wu | 2021-10-20 | 2 | -0/+19 |
| | | | | To allow analyzing sections of the application. | ||||
* | uJIT: Add exit counters for leave and refactor stats printout code | Alan Wu | 2021-10-20 | 3 | -6/+15 |
| | | | | | | | | | | | | 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%) ``` | ||||
* | uJIT: add guards for protected opt_send_without_block calls | Alan Wu | 2021-10-20 | 2 | -8/+29 |
| | | | | | 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. | ||||
* | At jit_at_current_insn, jit_peek_at_stack functions | Maxime Chevalier-Boisvert | 2021-10-20 | 3 | -0/+83 |
| | |||||
* | Runtime counters for bailing from opt_send_without_block | Alan Wu | 2021-10-20 | 6 | -66/+281 |
| | | | | | | 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. | ||||
* | Update ec->cfp->pc when hitting a stub. | Maxime Chevalier-Boisvert | 2021-10-20 | 4 | -15/+29 |
| | |||||
* | Thread EC through jit state. Add codegen status enum. | Maxime Chevalier-Boisvert | 2021-10-20 | 7 | -203/+169 |
| | |||||
* | Support memory operands to pop | Max Bernstein | 2021-10-20 | 2 | -7/+17 |
| | |||||
* | Update ujit.md | Maxime Chevalier-Boisvert | 2021-10-20 | 1 | -1/+1 |
| | |||||
* | Update ujit.md | Maxime Chevalier-Boisvert | 2021-10-20 | 1 | -3/+5 |
| | |||||
* | Update ujit.md | Maxime Chevalier-Boisvert | 2021-10-20 | 1 | -1/+12 |
| | |||||
* | Support memory operands to push | Max Bernstein | 2021-10-20 | 3 | -9/+19 |
| | |||||
* | Fix jmp encoding. Rename conditional jumps jxx() to jxx_label() | Maxime Chevalier-Boisvert | 2021-10-20 | 4 | -67/+77 |
| | |||||
* | uJIT: Implement opt_getinlinecache | Alan Wu | 2021-10-20 | 8 | -44/+165 |
| | | | | | | | | | | | | | | | | | * 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> | ||||
* | Implement support for variadic C functions | Maxime Chevalier-Boisvert | 2021-10-20 | 2 | -8/+38 |
| | |||||
* | Update ujit.md | Maxime Chevalier-Boisvert | 2021-10-20 | 1 | -1/+1 |
| | |||||
* | Update ujit.md | Maxime Chevalier-Boisvert | 2021-10-20 | 1 | -1/+1 |
| | |||||
* | Update ujit.md | Maxime Chevalier-Boisvert | 2021-10-20 | 1 | -0/+2 |
| | |||||
* | Update ujit.md | Maxime Chevalier-Boisvert | 2021-10-20 | 1 | -1/+9 |
| | |||||
* | Update ujit_iface.c | Maxime Chevalier-Boisvert | 2021-10-20 | 1 | -1/+1 |
| | |||||
* | Update ujit_iface.c | Maxime Chevalier-Boisvert | 2021-10-20 | 1 | -2/+0 |
| | |||||
* | Implement --ujit-call-threshold | Maxime Chevalier-Boisvert | 2021-10-20 | 4 | -17/+31 |
| | |||||
* | Remove dead code | Alan Wu | 2021-10-20 | 1 | -17/+0 |
| | |||||
* | darray: fix strict aliasing issue | Alan Wu | 2021-10-20 | 1 | -2/+6 |
| | |||||
* | Use rb_darray_make in ujit | Alan Wu | 2021-10-20 | 1 | -3/+6 |
| | |||||
* | Add rb_darray_make | Alan Wu | 2021-10-20 | 1 | -6/+35 |
| | |||||
* | darray: fix buffer size calculation for element with strict alignment | Alan Wu | 2021-10-20 | 1 | -19/+23 |
| | |||||
* | Added ujit_save_regs() and ujit_load_regs() helper functions | Maxime Chevalier-Boisvert | 2021-10-20 | 1 | -40/+32 |
| | |||||
* | Use darray for incoming branches | Maxime Chevalier-Boisvert | 2021-10-20 | 3 | -29/+18 |
| | |||||
* | Free your memories! | Alan Wu | 2021-10-20 | 1 | -0/+1 |
| | |||||
* | Stop using UJIT.install_entry in btest | Alan Wu | 2021-10-20 | 1 | -6/+7 |
| | | | | | CI runs on some platforms uJIT doesn't support. They don't have UJIT.install_entry. Maybe we want something like `install_entry_if_possible`. | ||||
* | Mark and update object references in generated code | Alan Wu | 2021-10-20 | 5 | -11/+85 |
| | | | | Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com> | ||||
* | Check for ::Array, not T_ARRAY in opt_aref | Alan Wu | 2021-10-20 | 2 | -6/+24 |
| | |||||
* | Update ujit.md | Maxime Chevalier-Boisvert | 2021-10-20 | 1 | -1/+23 |
| | |||||
* | Update ujit.md | Maxime Chevalier-Boisvert | 2021-10-20 | 1 | -0/+4 |
| |