summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-10-20Check 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-20Update README.mdMaxime Chevalier-Boisvert
Add section documenting command-line arguments
2021-10-20Implement send with alias method (#23)Maxime Chevalier-Boisvert
* Implement send with alias method * Add alias_method tests
2021-10-20Implement send with blocksAlan 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-20Implement 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-20Print top-20 common exit reasons instead of just top-10 (#19)Maxime Chevalier-Boisvert
2021-10-20Use 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-20Implement setn bytecode (#15)Maxime Chevalier-Boisvert
2021-10-20Implement calls to methods with simple optional paramsAlan 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-20Fix 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-20Update README.mdMaxime Chevalier-Boisvert
2021-10-20Try 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-20Update README.mdMaxime Chevalier-Boisvert
2021-10-20Update common.mkMaxime Chevalier-Boisvert
2021-10-20Update README.mdMaxime Chevalier-Boisvert
2021-10-20Implement 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-20Make gen_opt_aref() delegate to gen_opt_send_without_block() (#9)Alan Wu
Basically mirroring the interpreter for the general case.
2021-10-20Create 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-20Comment editsAlan Wu
2021-10-20Aesthetic changes and add missing counterMaxime Chevalier-Boisvert
2021-10-20EnglishAlan Wu
2021-10-20Use jmp with memory operand for smaller code sizeAlan Wu
2021-10-20YJIT: 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-20Don't check if value is immediate if context has type infoMaxime Chevalier-Boisvert
2021-10-20Remove redundant movMaxime Chevalier-Boisvert
2021-10-20Fix frozen check (use jnz) and move heap object check.Maxime Chevalier-Boisvert
2021-10-20Add setivar exit reasons to --yjit-statsMaxime Chevalier-Boisvert
2021-10-20Improve set instance variableAaron Patterson
This commit improves the set ivar implementation.
2021-10-20Remove token_paste.h dep from common.mkMaxime Chevalier-Boisvert
2021-10-20cYjitCodeComment is only defined if we're not in debugging modeAaron 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-20Pass self type through method callsMaxime Chevalier-Boisvert
2021-10-20Delete codeql-analysis-2.ymlMaxime Chevalier-Boisvert
2021-10-20Create codeql-analysis-2.ymlMaxime Chevalier-Boisvert
2021-10-20Rename YJIT readme to README.mdMaxime Chevalier-Boisvert
2021-10-20Rename Ruby README to README_ruby.mdMaxime Chevalier-Boisvert
2021-10-20Malloc 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-20Merge pull request #114 from Shopify/yjit-dup-commentsMaxime Chevalier-Boisvert
YJIT: Avoid adding duplicate code comments
2021-10-20Switch to 2-comparison heap object checkMaxime Chevalier-Boisvert
2021-10-20Improve codegen and type tracking in putobjectMaxime Chevalier-Boisvert
2021-10-20Remove debug printsMaxime Chevalier-Boisvert
2021-10-20Fix local type tracking in getlocal, setlocal. Add test.Maxime Chevalier-Boisvert
2021-10-20WIPMaxime Chevalier-Boisvert
2021-10-20add a couple of getivar tests for symbolsAlan Wu
2021-10-20Use a insn_opnd instead of a boolAlan Wu
2021-10-20Temporarily increase MAX_BRANCHES until we have a better solutionMaxime Chevalier-Boisvert
2021-10-20Diff the local types in ctx_diff()Maxime Chevalier-Boisvert
2021-10-20move assert. opnd.idx doesn't make sense for OPND_SELFAlan Wu
2021-10-20YJIT: implement calls to ivar getter methodsAlan Wu
2021-10-20Fix bug in ctx_set_local_type()Maxime Chevalier-Boisvert
2021-10-20Re-enable local type tracking, until first callMaxime Chevalier-Boisvert