| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2021-10-20 | Implement opt_aset as interpreter handler call | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Implement opt_mod as call to interpreter function (#29) | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Implement opt_eq by calling interpreter function (#28) | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Implement branchnil bytecode (#26) | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Check for easy-to-handle cases of block param (#24) | Alan Wu | |
| In some cases, methods taking block parameters don't require extra paramter setup. They are fairly popular in railsbench. | |||
| 2021-10-20 | Implement send with alias method (#23) | Maxime Chevalier-Boisvert | |
| * Implement send with alias method * Add alias_method tests | |||
| 2021-10-20 | Implement send with blocks | Alan Wu | |
| * Implement send with blocks Not that much extra work compared to `opt_send_without_block`. Moved the stack over flow check because it could've exited after changes are made to cfp. * rename oswb counters * Might as well implement sending block to cfuncs * Disable sending blocks to cfuncs for now * Reconstruct interpreter sp before calling into cfuncs In case the callee cfunc calls a method or delegates to a block. This also has the side benefit of letting call sites that sometimes are iseq calls and sometimes cfunc call share the same successor. * only sync with interpreter sp when passing a block Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com> Co-authored-by: Aaron Patterson <aaron.patterson@shopify.com> | |||
| 2021-10-20 | Implement dupn for n==2 (only case used in RDoc/railsbench) (#20) | Maxime Chevalier-Boisvert | |
| * Implement dupn for n==2 (only case used in RDoc/railsbench) * Implement adjuststack bytecode | |||
| 2021-10-20 | Use rb_ivar_get() for general case of getivar (#17) | Alan Wu | |
| * Use rb_ivar_get() for general case of getivar Pretty straight forward. Buys about 1% coverage on railsbench. * Update yjit_codegen.c Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com> | |||
| 2021-10-20 | Implement setn bytecode (#15) | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Implement calls to methods with simple optional params | Alan Wu | |
| * Implement calls to methods with simple optional params * Remove unnecessary MJIT_STATIC See comment for MJIT_STATIC. I added it not knowing whether it's required because the function next to it has it. Don't use it and wait for problems to come up instead. * Better naming, some comments * Count bailing on kw only iseqs On railsbench: ``` opt_send_without_block exit reasons: bmethod 59729 (27.7%) optimized_method 59137 (27.5%) iseq_complex_callee 41362 (19.2%) alias_method 33346 (15.5%) callsite_not_simple 19170 ( 8.9%) iseq_only_keywords 1300 ( 0.6%) kw_splat 1299 ( 0.6%) cfunc_ruby_array_varg 18 ( 0.0%) ``` | |||
| 2021-10-20 | Implement greedy versioning. Refactor versioning logic. (#10) | Maxime Chevalier-Boisvert | |
| * Implement eager versioning. Refactor versioning logic. * Add --version-limit and --greedy-versioning command-line args | |||
| 2021-10-20 | Make gen_opt_aref() delegate to gen_opt_send_without_block() (#9) | Alan Wu | |
| Basically mirroring the interpreter for the general case. | |||
| 2021-10-20 | Comment edits | Alan Wu | |
| 2021-10-20 | Aesthetic changes and add missing counter | Maxime Chevalier-Boisvert | |
| 2021-10-20 | English | Alan Wu | |
| 2021-10-20 | Use jmp with memory operand for smaller code size | Alan Wu | |
| 2021-10-20 | YJIT: use a context-free landing pad to optimize `leave` | Alan Wu | |
| This allows gen_leave to always do an indirect to cfp->jit_return. | |||
| 2021-10-20 | Don't check if value is immediate if context has type info | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Remove redundant mov | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Fix frozen check (use jnz) and move heap object check. | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Improve set instance variable | Aaron Patterson | |
| This commit improves the set ivar implementation. | |||
| 2021-10-20 | Pass self type through method calls | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Malloc branch entries (#112) | Maxime Chevalier-Boisvert | |
| * Malloc branch entries * Add ASM comment for stack overflow check * WIP * Fix branch GC code. Add rb_darray_remove_unordered(). * Fix block end_pos after branch rewriting. Remove dst_patched bits. | |||
| 2021-10-20 | Merge pull request #114 from Shopify/yjit-dup-comments | Maxime Chevalier-Boisvert | |
| YJIT: Avoid adding duplicate code comments | |||
| 2021-10-20 | Switch to 2-comparison heap object check | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Improve codegen and type tracking in putobject | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Remove debug prints | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Fix local type tracking in getlocal, setlocal. Add test. | Maxime Chevalier-Boisvert | |
| 2021-10-20 | WIP | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Use a insn_opnd instead of a bool | Alan Wu | |
| 2021-10-20 | move assert. opnd.idx doesn't make sense for OPND_SELF | Alan Wu | |
| 2021-10-20 | YJIT: implement calls to ivar getter methods | Alan Wu | |
| 2021-10-20 | Re-enable local type tracking, until first call | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update yjit_codegen.c | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Factor our guard_two_fixnums(). Implement opt_or. | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Introduce concept of YJIT instruction operands | Maxime Chevalier-Boisvert | |
| 2021-10-20 | YJIT: Fancier opt_getinlinecache | Alan 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-20 | YJIT: add comments to disassembly | Alan 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 <maximechevalierb@gmail.com> Co-authored-by: Aaron Patterson <aaron.patterson@shopify.com> | |||
| 2021-10-20 | YJIT: make ratio_in_yjit more accurate | Alan Wu | |
| Don't count instructions that take exit to the interpreter. | |||
| 2021-10-20 | Disable local type tracking for now | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Keep track of local types in the context | Maxime Chevalier-Boisvert | |
| 2021-10-20 | use ctx_stack_push_self() | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Part 1 of improved type tracking logic | Maxime Chevalier-Boisvert | |
| 2021-10-20 | First sketch at temp type mapping | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Fix GCC warnings | Alan Wu | |
| Mostly unused and uninitialized warnings here and there | |||
| 2021-10-20 | Add a comment | Alan Wu | |
| 2021-10-20 | Track interpreter return as an exit reason for leave instr | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Implement opt_gt | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Factor out protected callee guard, check for private callees | Alan 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. | |||
