summaryrefslogtreecommitdiff
path: root/ujit_core.h
AgeCommit message (Collapse)Author
2021-10-20Yet Another Ruby JIT!Jose Narvaez
Renaming uJIT to YJIT. AKA s/ujit/yjit/g.
2021-10-20Update ujit_core.hMaxime Chevalier-Boisvert
2021-10-20Update ujit_core.hMaxime Chevalier-Boisvert
Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>
2021-10-20Machinery to implement deferred compilationMaxime Chevalier-Boisvert
2021-10-20YJIT: fix leak, remove unused field on block_tAlan Wu
This field was never used and is now covered by jit_mov_gc_ptr.
2021-10-20WIP refactor block lists to use darrayMaxime Chevalier-Boisvert
2021-10-20At jit_at_current_insn, jit_peek_at_stack functionsMaxime Chevalier-Boisvert
2021-10-20Thread EC through jit state. Add codegen status enum.Maxime Chevalier-Boisvert
2021-10-20uJIT: Implement opt_getinlinecacheAlan 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-20Use darray for incoming branchesMaxime Chevalier-Boisvert
2021-10-20Mark and update object references in generated codeAlan Wu
Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com>
2021-10-20Ujit bug fixesAlan 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-20Tie lifetime of uJIT blocks to iseqsAlan 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-20WIP JIT-to-JIT returnsMaxime Chevalier-Boisvert
2021-10-20Alan & Max at TanagraMaxime Chevalier-Boisvert
2021-10-20Implement block version limitMaxime Chevalier-Boisvert
2021-10-20Reduce size of ctx_tMaxime Chevalier-Boisvert
2021-10-20Write ctx_diff() function to compate ctx_t objectsMaxime Chevalier-Boisvert
2021-10-20Add support for multiple versions per blockMaxime Chevalier-Boisvert
2021-10-20Added comments. Fixed compiler warning.Maxime Chevalier-Boisvert
2021-10-20Prototype type-specialization for temp valuesMaxime Chevalier-Boisvert
2021-10-20Take VM lock in branch_stub_hit(), fix ractor deadlock.Maxime Chevalier-Boisvert
2021-10-20Added gen_direct_jump() for unary branchesMaxime Chevalier-Boisvert
2021-10-20Complete refactoring to eliminate recursion in ujit's compilationMaxime Chevalier-Boisvert
2021-10-20Added block end indexMaxime Chevalier-Boisvert
2021-10-20Sketch code to invalidate basic blocks. Rename version_t to block_t.Maxime Chevalier-Boisvert
2021-10-20Keep track of incoming branches in ujitMaxime Chevalier-Boisvert
2021-10-20Refactor ujit logic for generating iseq entry pointsMaxime Chevalier-Boisvert
2021-10-20Progress on code invalidationMaxime Chevalier-Boisvert
2021-10-20Introduce version_t struct. Will be needed for code invalidation.Maxime Chevalier-Boisvert
2021-10-20Refactorings in ujit. Implement Ruby jump instruction.Maxime Chevalier-Boisvert
2021-10-20Use a versioning context when compiling blocksMaxime Chevalier-Boisvert
2021-10-20Split out context object into jitstate_t and ctx_tMaxime Chevalier-Boisvert
2021-10-20Split out compile_entry() from compile_block()Maxime Chevalier-Boisvert
2021-10-20Stub logic working for fib test, but still crashing in other casesMaxime Chevalier-Boisvert
2021-10-20Implement branch stub logicMaxime Chevalier-Boisvert
2021-10-20WIP branch generation codeMaxime Chevalier-Boisvert
2021-10-20Thread insn_idx through context objectMaxime Chevalier-Boisvert
2021-10-20Start implementing BBV primitivesMaxime Chevalier-Boisvert
2021-10-20Start refactoring JIT engineMaxime Chevalier-Boisvert
2021-10-20Refactor uJIT code into more files for readabilityMaxime Chevalier-Boisvert