| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 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 | |
| 2021-10-20 | Update yjit_codegen.c | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Assert for running out of branches in all builds | Alan Wu | |
| 2021-10-20 | Factor our guard_two_fixnums(). Implement opt_or. | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Remove unnamed enums because MSVC sux | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Introduce concept of YJIT instruction operands | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Use autogen.sh in YJIT's CI setup | Alan Wu | |
| See d825e34962540d345eb3c5a70eb264b415e915a5 | |||
| 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 | Fix stack-use-after-scope in gen_direct_jump() | Alan Wu | |
| ASAN can catch these type of things for us, but the scraper can't handle ASAN :/. To be more resilient to refactoring, extend the lifetime of `generic_ctx` in branch_stub_hit() too. | |||
| 2021-10-20 | Compute percentage of exits for top-10 exit ops | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Fix two stats bugs, refactor stats code, add total_insn_count print | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update yjit.md | Maxime Chevalier-Boisvert | |
| 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 | Update yjit_iface.c | Maxime Chevalier-Boisvert | |
| 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 | Add flag bits to avoid compiling stubs multiple times. | Maxime Chevalier-Boisvert | |
| Fixes bug involving ractors and branch stubs. | |||
| 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 | Add ctcx_stack_push_local() | Maxime Chevalier-Boisvert | |
| 2021-10-20 | update deps | Aaron Patterson | |
| 2021-10-20 | Fix case | Aaron Patterson | |
| 2021-10-20 | Collect statistics about binding allocations / local variable set | Aaron Patterson | |
| This commit collects statistics about how many binding objects are allocated as well as the number of local variables set on bindings. Statistics are output along with other YJIT stats. Here is an example of the output: ``` ***YJIT: Printing runtime counters from yjit.rb*** Number of Bindings Allocated: 195 Number of locals modified through binding: 0 opt_send_without_block exit reasons: ivar_get_method 7515891 (40.4%) se_cc_klass_differ 3081330 (16.6%) iseq_argc_mismatch 1564578 ( 8.4%) se_receiver_not_heap 1557663 ( 8.4%) ic_empty 1407064 ( 7.6%) optimized_method 995823 ( 5.4%) iseq_not_simple 819413 ( 4.4%) alias_method 706972 ( 3.8%) bmethod 685253 ( 3.7%) callsite_not_simple 225983 ( 1.2%) kw_splat 25999 ( 0.1%) ivar_set_method 902 ( 0.0%) cfunc_toomany_args 394 ( 0.0%) refined_method 42 ( 0.0%) cfunc_ruby_array_varg 29 ( 0.0%) invalid_cme 4 ( 0.0%) leave exit reasons: se_finish_frame 4067107 (100.0%) se_interrupt 24 ( 0.0%) getinstancevariable exit reasons: undef 121177 (100.0%) idx_out_of_range 5 ( 0.0%) opt_aref exit reasons: (all relevant counters are zero) compiled_iseq_count: 3944 main_block_code_size: 1.1 MiB side_block_code_size: 0.6 MiB vm_insns_count: 1137268516 yjit_exec_insns_count: 414015644 ratio_in_yjit: 26.7% avg_len_in_yjit: 7.5 total_exit_count: 55491789 most frequent exit op: opt_send_without_block: 18587628 (33.5%) opt_getinlinecache: 11075822 (20.0%) send: 4949300 (8.9%) leave: 4067131 (7.3%) defined: 3975196 (7.2%) setinstancevariable: 3567315 (6.4%) invokesuper: 2982163 (5.4%) getblockparamproxy: 2168852 (3.9%) opt_nil_p: 2104524 (3.8%) opt_aref: 2013858 (3.6%) ``` Running RailsBench allocates 195 binding objects but doesn't set any local variables. | |||
| 2021-10-20 | Add comments and asserts for clarity | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update yjit_asm.c | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Fill uninitialized memory with int3 | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Readd const arguments | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Fix branch rewrite issue | Maxime Chevalier-Boisvert | |
| 2021-10-20 | Update yjit_core.c | Maxime Chevalier-Boisvert | |
| 2021-10-20 | YJIT: adjust branch shape properly when target already exists | Alan Wu | |
| The old code decides branch->shape based on the write position of the native code block, which is unsound in case the block already exists and no new code is written to the write position. Make this decision with the start address of the target block instead. Also handle when the branch becomes smaller after patching. | |||
| 2021-10-20 | Rename first call => threshold one | Maxime Chevalier-Boisvert | |
