| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2021-10-20 | Move YJIT's README into doc/yjit/yjit.md | Noah Gibbs | |
| 2021-10-20 | Incorporate feedback from the PR into yjit_hacking.md | Noah Gibbs | |
| 2021-10-20 | Add a YJIT hacking doc with some internals; change the README text a bit to ↵ | Noah Gibbs | |
| reflect its current condition | |||
| 2021-10-20 | Add counted side exit to getblockparamproxy | eileencodes | |
| This is so we know the specific reason we're exiting this instruction. Co-authored-by: Aaron Patterson tenderlove@ruby-lang.org | |||
| 2021-10-20 | Fix changes from rebase | Noah Gibbs | |
| 2021-10-20 | style: line break before "else" | Alan Wu | |
| 2021-10-20 | style: switch statements indent | Alan Wu | |
| Case labels get half an indent and the opening brace is on the same line as "switch". | |||
| 2021-10-20 | style: align pointer "*" to the right | Alan Wu | |
| 2021-10-20 | Add optimized Thread.current | John Hawthorn | |
| 2021-10-20 | Use jit_guard_known_klass() for hashes in opt_aref | Alan Wu | |
| The old heap object check is not as efficient as the one in jit_guard_known_klass(). Also, the old code saves cfp->sp after popping the operands off the stack, which might cause the operands to be not marked by the GC in some circumstances. | |||
| 2021-10-20 | Also do String#str | Alan Wu | |
| 2021-10-20 | Comment edits and moving functions around in the file | Alan Wu | |
| 2021-10-20 | Add specialization for String#to_s on plain strings | Alan Wu | |
| When calling "to_s" on an instance of String, the method simply returns self. In this situation most of the work comes from setting up the method call. It turns out that both railsbench and liquid-render do this a lot. When generating code for opt_send_without_block, we already generate a known class guard, so we can detect when the receiver is a String instance. Since gen_send_cfunc() is also used for gen_invokesuper(), and gen_invokesuper() doesn't generate a known class guard, a new nullable parameter for specialized codegen function is added. Closes GH-245 | |||
| 2021-10-20 | Try to get getblockparamproxy to support level > 0 | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Reconstruct interpreter state before calling rb_ivar_get() | Alan Wu | |
| It could raise ractor exceptions. The included test didn't run properly before this change. | |||
| 2021-10-20 | Remove a memory load in gen_send_iseq | Alan Wu | |
| Instead of loading from meory for REG_SP, do a register rename instead. It's cheaper. | |||
| 2021-10-20 | Add counters for version invalidation reasons | Alan Wu | |
| I noticed that there were two st_table iterators that do exactly the same thing so I merged them into one. | |||
| 2021-10-20 | Fix counter names | Noah Gibbs | |
| 2021-10-20 | Fix typo in comment | Noah Gibbs | |
| 2021-10-20 | Break up callsite_not_simple into multiple cases. | Noah Gibbs | |
| 2021-10-20 | Remove a few more uses of the global cb/ocb | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Add a slowpath for opt_getinlinecache | Alan Wu | |
| Before this change, when we encounter a constant cache that is specific to a lexical scope, we unconditionally exit. This change falls back to the interpreter's cache in this situation. This should help constant expressions in `class << self`, which is popular at Shopify due to the style guide. This change relies on the cache being warm while compiling to detect the need for checking the lexical scope for simplicity. | |||
| 2021-10-20 | Step 2 to remove the global cb/ocb objects. | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Pass the global cb through codegen functions | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Try to break the code page refactoring into smaller steps | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Fix excessive invalidation for opt_getinlinecache | Alan Wu | |
| YJIT expects the VM to invalidate opt_getinlinecache when updating the constant cache, and the invalidation used to happen even when YJIT can't use the cached value. Once the first invalidation happens, the block for opt_getinlinecache becomes a stub. When the stub is hit, YJIT fails to compile the instruction as the cache is not usable. The stub becomes a block that exits for opt_getinlinecache which can be invalidated again. Some workloads that bust the interpreter's constant cache can create an invalidation loop with this behavior. Check if the cache is usable become doing invalidation to fix this problem. In the test harness, evaluate the test script in a lambda instead of a proc so `return` doesn't return out of the harness. | |||
| 2021-10-20 | Correct margin for stack overflow test | Alan Wu | |
| In vm_push_frame(), the stack overflow test is done against a decremented cfp. YJIT wasn't accounting for that in its stack overflow tests. | |||
| 2021-10-20 | Add jit_obj_info_dump | John Hawthorn | |
| 2021-10-20 | Add comment explaining argc + 2 | John Hawthorn | |
| 2021-10-20 | Implement invokebuiltin | John Hawthorn | |
| 2021-10-20 | Update README.md | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update README.md | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Add test for setlocal | John Hawthorn | |
| 2021-10-20 | Implement generic setlocal | John Hawthorn | |
| 2021-10-20 | Extract gen_get_ep | John Hawthorn | |
| 2021-10-20 | Fix opt_aset comptime_key check | John Hawthorn | |
| 2021-10-20 | Rearrange stats printout for consistency | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Add counters for tracking invalidations | Alan Wu | |
| 2021-10-20 | Expand tabs | Alan Wu | |
| 2021-10-20 | Update yjit_codegen.c | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Remove vm_opt_aset | John Hawthorn | |
| 2021-10-20 | Specialize based on types of opt_aset | John Hawthorn | |
| 2021-10-20 | Compile out declaration for runtime stats on non stats builds | Alan Wu | |
| Checked on default build, RUBY_DEBUG build, and YJIT_STATS build. | |||
| 2021-10-20 | Don't store cfp->pc when doing iseq calls | Alan Wu | |
| We set it before calling routines and when we are exiting. | |||
| 2021-10-20 | No need to do ec->cfp = reg_cfp on exits | Alan Wu | |
| It's already up to date. We set it when we do iseq calls and it's set properly on entry. If it's not set properly exceptions wouldn't work. | |||
| 2021-10-20 | Update suggested ./configure in README | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Fix warnings about redefining YJIT_STATS | Alan Wu | |
| Follow up for ecb5b383a0c17550b9b27663005049ddac871edb. Now that YJIT_STATS is defined in yjit.h, it shoudl be the only place that defines it. | |||
| 2021-10-20 | Add missing percent sign in printout | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Add tests against side exits for non-fixnum | John Hawthorn | |
| 2021-10-20 | Check for comptime fixnum in gen_fixnum_cmp | John Hawthorn | |
