summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-10-20use ctx_stack_push_self()Maxime Chevalier-Boisvert
2021-10-20Fix type_diff logic after Alan pointed out errorsMaxime Chevalier-Boisvert
2021-10-20Part 1 of improved type tracking logicMaxime Chevalier-Boisvert
2021-10-20WIPMaxime Chevalier-Boisvert
2021-10-20Commit WIPMaxime Chevalier-Boisvert
2021-10-20First sketch at temp type mappingMaxime Chevalier-Boisvert
2021-10-20Log code size in bytes instead of MiBMaxime Chevalier-Boisvert
2021-10-20Fix improper use of st_foreach_with_replaceAlan Wu
Replacing the key was only okay if the new key hashes to the same thing as the old key. That doesn't hold for YJIT's table when the keys move.
2021-10-20Fix GCC warningsAlan Wu
Mostly unused and uninitialized warnings here and there
2021-10-20Stop all other ractors when patching machine codeAlan Wu
2021-10-20Add a CI check for --yjit-call-threshold=1Alan Wu
Mostly copied from mjit.yml. Thank you Kokubun-san!
2021-10-20Add a commentAlan Wu
2021-10-20Fix issue with version matching logicMaxime Chevalier-Boisvert
2021-10-20Track interpreter return as an exit reason for leave instrMaxime Chevalier-Boisvert
2021-10-20Implement opt_gtMaxime Chevalier-Boisvert
2021-10-20Update yjit.mdMaxime 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: rename context structAlan Wu
2021-10-20Fix condition in cb_align_pos which should return early when alignedDylan Thacker-Smith
2021-10-20Update yjit.mdMarc Feeley
Fix a typo in the bibtex.
2021-10-20Tweak include order in yjit_core.cAlan 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-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-20Add metric for average # of insns spent in yjit before exitingMaxime Chevalier-Boisvert
2021-10-20Include ruby/ruby.h before vm_core.hAlan 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-20Remove trailing whitespacesMaxime Chevalier-Boisvert
2021-10-20Check for nullAlan Wu
Sometimes you bop before you init, you know?
2021-10-20Fix trailing spacesMaxime Chevalier-Boisvert
2021-10-20Update yjit.mdMaxime 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-20Update yjit.mdMaxime Chevalier-Boisvert
2021-10-20Update yjit.mdMaxime Chevalier-Boisvert
2021-10-20Yet Another Ruby JIT!Jose Narvaez
Renaming uJIT to YJIT. AKA s/ujit/yjit/g.
2021-10-20YJIT: handle when all counters are zero in printout codeAlan 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-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-20YJIT: Use 2D array to group block versionsAlan 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-20Rename test filesMaxime Chevalier-Boisvert
2021-10-20Update yjit.mdMaxime Chevalier-Boisvert
2021-10-20Update yjit.mdMaxime Chevalier-Boisvert
2021-10-20Update yjit.mdMaxime Chevalier-Boisvert