summaryrefslogtreecommitdiff
path: root/yjit_codegen.c
AgeCommit message (Collapse)Author
2021-10-20Factor our guard_two_fixnums(). Implement opt_or.Maxime Chevalier-Boisvert
2021-10-20Introduce concept of YJIT instruction operandsMaxime Chevalier-Boisvert
2021-10-20YJIT: Fancier opt_getinlinecacheAlan 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-20YJIT: add comments to disassemblyAlan Wu
Introduce a new macro `ADD_COMMENT(cb, comment)` that records a comment for the current write position in the code block. Co-authored-by: Maxime Chevalier-Boisvert <[email protected]> Co-authored-by: Aaron Patterson <[email protected]>
2021-10-20YJIT: make ratio_in_yjit more accurateAlan Wu
Don't count instructions that take exit to the interpreter.
2021-10-20Disable local type tracking for nowMaxime Chevalier-Boisvert
2021-10-20Keep track of local types in the contextMaxime Chevalier-Boisvert
2021-10-20use ctx_stack_push_self()Maxime Chevalier-Boisvert
2021-10-20Part 1 of improved type tracking logicMaxime Chevalier-Boisvert
2021-10-20First sketch at temp type mappingMaxime Chevalier-Boisvert
2021-10-20Fix GCC warningsAlan Wu
Mostly unused and uninitialized warnings here and there
2021-10-20Add a commentAlan Wu
2021-10-20Track interpreter return as an exit reason for leave instrMaxime Chevalier-Boisvert
2021-10-20Implement opt_gtMaxime Chevalier-Boisvert
2021-10-20Factor out protected callee guard, check for private calleesAlan Wu
We didn't need the private check before because we were lifting from the interpreter's cache, and the interpreter only caches when visibility checks go through.
2021-10-20Factor out jit_jump_to_next_insnAlan Wu
2021-10-20Introduce yjit_guard_known_klass()Alan Wu
2021-10-20Polymorphic opt_send_without_blockAlan Wu
2021-10-20Get rid of dependency on rb_call_cacheAlan Wu
2021-10-20YJIT: hash specialization for opt_arefAlan Wu
Make it lazy and add a hash specialization in addition to the array specialization.
2021-10-20Exit reason breakdown for opt_arefAlan Wu
2021-10-20YJIT: use a flat array for finding codegen functionsAlan Wu
Simpler and faster.
2021-10-20YJIT: unify exits. Patch iseqs only when necessaryAlan 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-20YJIT: lazy polymorphic getinstancevariableAlan 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-20Fix trailing spacesMaxime Chevalier-Boisvert
2021-10-20Make Blocks depend on BOPSAaron 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-20Yet Another Ruby JIT!Jose Narvaez
Renaming uJIT to YJIT. AKA s/ujit/yjit/g.