| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2021-10-20 | Yet Another Ruby JIT! | Jose Narvaez | |
| Renaming uJIT to YJIT. AKA s/ujit/yjit/g. | |||
| 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 | WIP refactor block lists to use darray | Maxime Chevalier-Boisvert | |
| 2021-10-20 | At jit_at_current_insn, jit_peek_at_stack functions | Maxime Chevalier-Boisvert | |
| 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 | 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 | Remove dead code | Alan Wu | |
| 2021-10-20 | Use rb_darray_make in ujit | Alan Wu | |
| 2021-10-20 | Use darray for incoming branches | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Free your memories! | Alan Wu | |
| 2021-10-20 | Mark and update object references in generated code | Alan Wu | |
| Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com> | |||
| 2021-10-20 | Ujit bug fixes | Alan Wu | |
| * uJIT: don't compile tailcalls * Don't compile calls to protected methods We need to generate extra code to check whether the call goes through if we want to support these. * Fix copy pasta * Update blockids in branches * Update dependencies | |||
| 2021-10-20 | Stop printing when invalidating uJIT blocks | Alan Wu | |
| 2021-10-20 | Fix compiled iseq count stat | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Tie lifetime of uJIT blocks to iseqs | Alan Wu | |
| * Tie lifetime of uJIT blocks to iseqs Blocks weren't being freed when iseqs are collected. * Add rb_dary. Use it for method dependency table * Keep track of blocks per iseq Remove global version_tbl * Block version bookkeeping fix * dary -> darray * free ujit_blocks * comment about size of ujit_blocks | |||
| 2021-10-20 | Copy right number of bytes in add_incoming | Alan Wu | |
| 2021-10-20 | Free block->incoming in invalidate_block_version() | Maxime Chevalier-Boisvert | |
| 2021-10-20 | fix: ensure add_incoming allocates the proper length memory | Mike Dalessio | |
| Without this fix, valgrind reports for zero-length blocks: ==149294== Invalid write of size 4 ==149294== at 0x408121: add_incoming (ujit_core.c:173) ==149294== by 0x408121: gen_block_version (ujit_core.c:286) ==149294== by 0x40873C: gen_entry_point (ujit_core.c:303) ==149294== by 0x3609DF: rb_ujit_compile_iseq (ujit_iface.c:319) ==149294== by 0x33BD2F: mjit_exec (mjit.h:158) ==149294== by 0x33BD2F: rb_vm_exec (vm.c:2167) ... ==149294== Address 0x11278850 is 0 bytes inside a block of size 1 alloc'd ==149294== at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==149294== by 0x40811B: add_incoming (ujit_core.c:171) ==149294== by 0x40811B: gen_block_version (ujit_core.c:286) ==149294== by 0x40873C: gen_entry_point (ujit_core.c:303) ==149294== by 0x3609DF: rb_ujit_compile_iseq (ujit_iface.c:319) ==149294== by 0x33BD2F: mjit_exec (mjit.h:158) ==149294== by 0x33BD2F: rb_vm_exec (vm.c:2167) | |||
| 2021-10-20 | WIP JIT-to-JIT returns | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Fix bug unnecessarily causing version limit hit | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Fix overflow check in ujit | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Alan & Max at Tanagra | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Implement block version limit | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Fix bug, block added with wrong blockid. | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Keep track of multiple versions per blockid | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Make find_block_version() do list search | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Write ctx_diff() function to compate ctx_t objects | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Add support for multiple versions per block | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Added comments. Fixed compiler warning. | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Remove assert that doesn't compile | Alan Wu | |
| 2021-10-20 | Prototype type-specialization for temp values | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Take VM lock in branch_stub_hit(), fix ractor deadlock. | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Fix ujit block hash table bug | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Fix bug with ujit code invalidation | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Added gen_direct_jump() for unary branches | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Complete refactoring to eliminate recursion in ujit's compilation | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Fix ujit cc/cme invalidation code for opt_send_without_block | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Sketch code to invalidate basic blocks. Rename version_t to block_t. | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Keep track of incoming branches in ujit | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Refactor ujit logic for generating iseq entry points | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Progress on code invalidation | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Introduce version_t struct. Will be needed for code invalidation. | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Fix hash map key issue | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Refactorings in ujit. Implement Ruby jump instruction. | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Avoid generating redundant interpreter exit code after branches | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Use a versioning context when compiling blocks | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Split out context object into jitstate_t and ctx_t | Maxime Chevalier-Boisvert | |
