summaryrefslogtreecommitdiff
path: root/tool/mjit
AgeCommit message (Collapse)Author
2023-03-06Rename MJIT filenames to RJITTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7462
2023-03-05Implement struct arefTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Implement bmethodTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Optimize Thread.currentTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Implement opt_str_freezeTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Check for classes consistentlyTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Implement objtostringTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Implement getblockparamproxyTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Optimize BasicObject#!Takashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Implement known class guard for flonumTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Guard against GC of random ISEQsTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Implement invokesuperTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Implement optimized sendTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Implement opt_invokebuiltin_delegateTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Count optimized method typesTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Implement duparray and expandarrayTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Implement opt_eq and opt_neqTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Implement opt_and and opt_orTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Implement setlocal_WC_0Takashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Implement opt_modTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Implement Array#[]Takashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Implement opt_le, opt_ge, and opt_gtTakashi Kokubun
Notes: Merged: https://github.com/ruby/ruby/pull/7448
2023-03-05Do not compile C calls when C tracing is enabledTakashi Kokubun
2023-03-05Partially implement send of cfuncTakashi Kokubun
2023-03-05Implement attr_readerTakashi Kokubun
2023-03-05Count unsupported method typesTakashi Kokubun
2023-03-05Implement opt_aref for HashTakashi Kokubun
2023-03-05Implement jit_guard_known_classTakashi Kokubun
2023-03-05Implement getlocal_WC_1Takashi Kokubun
2023-03-05Implement getivarTakashi Kokubun
2023-03-05Refactor BranchStubTakashi Kokubun
2023-03-05Implement opt_plusTakashi Kokubun
2023-03-05Implement method callTakashi Kokubun
2023-03-05Initial implementation of sendTakashi Kokubun
2023-03-05Implement opt_minusTakashi Kokubun
2023-03-05Implement initial opt_ltTakashi Kokubun
2023-03-05Partly implement BOP assumptionTakashi Kokubun
2023-03-05Implement --mjit-statsTakashi Kokubun
2023-03-05Implement asm commentsTakashi Kokubun
2022-12-24MJIT: Cancel all on disastrous situations (#7019)Takashi Kokubun
I noticed this while running test_yjit with --mjit-call-threshold=1, which redefines `Integer#<`. When Ruby is monkey-patched, MJIT itself could be broken. Similarly, Ruby scripts could break MJIT in many different ways. I prepared the same set of hooks as YJIT so that we could possibly override it and disable it on those moments. Every constant under RubyVM::MJIT is private and thus it's an unsupported behavior though. Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2022-12-07Stop transitioning to UNDEF when undefining an instance variableAaron Patterson
Cases like this: ```ruby obj = Object.new loop do obj.instance_variable_set(:@foo, 1) obj.remove_instance_variable(:@foo) end ``` can cause us to use many more shapes than we want (and even run out). This commit changes the code such that when an instance variable is removed, we'll walk up the shape tree, find the shape, then rebuild any child nodes that happened to be below the "targetted for removal" IV. This also requires moving any instance variables so that indexes derived from the shape tree will work correctly. Co-Authored-By: Jemma Issroff <jemmaissroff@gmail.com> Co-authored-by: John Hawthorn <jhawthorn@github.com> Notes: Merged: https://github.com/ruby/ruby/pull/6866
2022-12-01MJIT: Use install = true for bundler/inlineTakashi Kokubun
It prints a `bundle install`-like output, which seems more useful than a silent output.
2022-11-28MJIT: Rename mjit_compiler.h to mjit_c.hTakashi Kokubun
because it exists primarily for generating mjit_c.rb.
2022-11-27MJIT: Clear .cache/clangd on bindgen if existsTakashi Kokubun
2022-11-18rename SHAPE_BITS to SHAPE_ID_NUM_BITSAaron Patterson
Notes: Merged: https://github.com/ruby/ruby/pull/6737
2022-11-15Let mjit-bindgen use BASERUBY and bundle/inline (#6740)Takashi Kokubun
Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2022-11-15MJIT: Fix vm_cc_cme(cc).def.type to use bit fieldTakashi Kokubun
access properly. Because the libclang node had two children, it wasn't handled well by the pattern matching for the bit field case. In addition to that, this bit field has a non-1 width. Because we're returning true/false for a width-1 bit field, I added another behavior that works like a char value for bit fields with width 2-8.
2022-11-14Remove USE_RVARGC codeAaron Patterson
We don't need this constant to be exposed anymore, so remove it Notes: Merged: https://github.com/ruby/ruby/pull/6728
2022-11-14Import shape constants with mjit-bindgenTakashi Kokubun
2022-11-14Import class constants with mjit-bindgenTakashi Kokubun