summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-10-20Update README.mdMaxime Chevalier-Boisvert
2021-10-20Update README.mdMaxime Chevalier-Boisvert
2021-10-20Stylize macOS correctlyAlan Wu
Yes, it's all very confusing.
2021-10-20Update README.mdMaxime Chevalier-Boisvert
2021-10-20Update README.mdMaxime Chevalier-Boisvert
2021-10-20Use builtin_inline_p to avoid pushing a frame for primitive C methods (#63)Maxime Chevalier-Boisvert
* Use builtin_inline_p to skip a frame of C methods * Fix bugs in primitive cfunc call code * Remove if (push_frame) {} * Remove if (push_frame) {} * Push Aaron's fix to avoid hardcoding insn lengths Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
2021-10-20Disable YJIT while running MJIT tests (#62)Aaron Patterson
Two JITs running at once may result in strange interactions. Lets disable YJIT while running the MJIT tests.
2021-10-20Add concatstrings to yjit codegen (#58)John Hawthorn
* Add ETYPE_TRUE and ETYPE_FALSE * Implement checktype * Implement concatstrings * Update deps
2021-10-20Add newhash and newarray instructions to yjit codegen (#48)John Hawthorn
* Implement gen_newarray * Implement newhash for n=0 * Add yjit tests for newhash/newarray * Fix integer size warning on clang * Save PC and SP in newhash and newarray Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com>
2021-10-20Disable extra T_OBJECT check added because of NokogiriMaxime Chevalier-Boisvert
2021-10-20Guard for T_OBJECT at compile time (#53)John Hawthorn
Previously this could crash on Nokogiri when JITing the getivar instruction because we would attempt to treat Nokogiri::XML::Document's T_DATA as a T_OBJECT in calling rb_iv_index_tbl_lookup. This commit also checks for T_OBJECT at compile time and emits the rb_ivar_get fallback in that case. Co-authored-by: HParker <HParker@github.com> Co-authored-by: Dinah Shi <dinahshi@github.com> Co-authored-by: HParker <HParker@github.com> Co-authored-by: Dinah Shi <dinahshi@github.com>
2021-10-20Implement opt_freeze and opt_uminus (#49)John Hawthorn
2021-10-20Increase default YJIT call threshold to 10. Add exec mem size arg. (#52)Maxime Chevalier-Boisvert
2021-10-20Merge pull request #50 from jhawthorn/detect_typeJohn Hawthorn
Detect types from putobject and getinlinecache
2021-10-20Update README.mdMaxime Chevalier-Boisvert
2021-10-20Recommend installing libcapstoneJohn Hawthorn
2021-10-20Add commentMaxime Chevalier-Boisvert
2021-10-20Add T_OBJECT check to getivarMaxime Chevalier-Boisvert
2021-10-20Implement opt_not with deferred compilation (#44)Maxime Chevalier-Boisvert
2021-10-20Try to fix MJIT symbol clash with cargo cultMaxime Chevalier-Boisvert
2021-10-20Avoid interrupt checks for forward branches (#41)Maxime Chevalier-Boisvert
2021-10-20Implement basic encodings for xchgMaxime Chevalier-Boisvert
2021-10-20Fix encoding of test x86 instructionMaxime Chevalier-Boisvert
2021-10-20Implement defined bytecode (#39)Maxime Chevalier-Boisvert
2021-10-20Update README.mdMaxime Chevalier-Boisvert
2021-10-20Implement opt_nil_p and opt_empty_b by delegating to send (#35)Maxime Chevalier-Boisvert
2021-10-20Implement setivar with a plain old function call (#34)Maxime Chevalier-Boisvert
* Implement setivar with a plain old function call * Remove return
2021-10-20Implement getblockparamproxyAlan Wu
* Implement getblockparamproxy * Parallel runner: wait for timeout thread to terminate after killing Or else the leak cheaker could sees the thread as running and cause test failures in test-tool. * Add a comment, use jne * Comment about where 0x3 comes from
2021-10-20Deletate to opt_send_without_block for opt_ltlt (#33)Maxime Chevalier-Boisvert
2021-10-20Implement opt_aset as interpreter handler callMaxime Chevalier-Boisvert
2021-10-20Implement opt_mod as call to interpreter function (#29)Maxime Chevalier-Boisvert
2021-10-20Implement opt_eq by calling interpreter function (#28)Maxime Chevalier-Boisvert
2021-10-20Implement branchnil bytecode (#26)Maxime Chevalier-Boisvert
2021-10-20Update README.mdMaxime Chevalier-Boisvert
2021-10-20Update README.mdMaxime Chevalier-Boisvert
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