| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 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 | Update README.md | Maxime Chevalier-Boisvert | |
| Add section documenting command-line arguments | |||
| 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 | Print top-20 common exit reasons instead of just top-10 (#19) | Maxime Chevalier-Boisvert | |
| 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 | Fix assertions in `invalidate_block_version()`, add small repro (#14) | Maxime Chevalier-Boisvert | |
| * Fix block invalidation assertions * Add Alan's small repro for double invalidation bug | |||
| 2021-10-20 | Update README.md | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Try to alloc executable memory within rel32 range on Linux machines (#12) | Maxime Chevalier-Boisvert | |
| * Use INT32_MIN, INT32_MAX, etc. constants in yjit_asm.c * Print warning on stderr when code past rel32 jump range * Fix preprocessor snafu * Move rel32 warning into --yjit-stats * Try to allocate within rel32 offset on Linux machines * Update yjit_asm.c Co-authored-by: Alan Wu <XrXr@users.noreply.github.com> * On Linux, use sysconf to get the page size Co-authored-by: Alan Wu <XrXr@users.noreply.github.com> | |||
| 2021-10-20 | Update README.md | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update common.mk | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update README.md | Maxime Chevalier-Boisvert | |
| 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 | Create GitHub workflow to run ASM tests (#8) | Maxime Chevalier-Boisvert | |
| * Create GitHub workflow to run ASM tests * Specify path * Attempt #3 * Set bash flags to print commands, stop on first error * Remove clear command from test_asm.sh * Use clang | |||
| 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 | Add setivar exit reasons to --yjit-stats | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Improve set instance variable | Aaron Patterson | |
| This commit improves the set ivar implementation. | |||
| 2021-10-20 | Remove token_paste.h dep from common.mk | Maxime Chevalier-Boisvert | |
| 2021-10-20 | cYjitCodeComment is only defined if we're not in debugging mode | Aaron Patterson | |
| This commit fixes a build error. If we build in release mode (IOW *without* RUBY_DEBUG), then this constant isn't defined. Release mode builds are required by yjit-bench | |||
| 2021-10-20 | Pass self type through method calls | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Delete codeql-analysis-2.yml | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Create codeql-analysis-2.yml | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Rename YJIT readme to README.md | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Rename Ruby README to README_ruby.md | 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 | add a couple of getivar tests for symbols | Alan Wu | |
| 2021-10-20 | Use a insn_opnd instead of a bool | Alan Wu | |
| 2021-10-20 | Temporarily increase MAX_BRANCHES until we have a better solution | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Diff the local types in ctx_diff() | Maxime Chevalier-Boisvert | |
| 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 | Fix bug in ctx_set_local_type() | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Re-enable local type tracking, until first call | Maxime Chevalier-Boisvert | |
