mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
f41b4d44f9
Previously, YJIT assumed that basic blocks never consume more than 1 KiB of memory. This assumption does not hold for long Ruby methods such as the one in the following: ```ruby eval(<<RUBY) def set_local_a_lot #{'_=0;'*0x40000} end RUBY set_local_a_lot ``` For low `--yjit-exec-mem-size` values, one basic block could exhaust the entire buffer. Introduce a new field `codeblock_t::dropped_bytes` that the assembler sets whenever it runs out of space. Check this field in gen_single_block() to respond to out of memory situations and other error conditions. This design avoids making the control flow graph of existing code generation functions more complex. Use POSIX shell in misc/test_yjit_asm.sh since bash is expanding `0%/*/*` differently. Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org> |
||
---|---|---|
.. | ||
expand_tabs.rb | ||
lldb_cruby.py | ||
lldb_disasm.py | ||
lldb_yjit.py | ||
rb_optparse.bash | ||
rb_optparse.zsh | ||
README | ||
ruby-style.el | ||
test_lldb_cruby.rb | ||
test_yjit_asm.sh | ||
yjit_asm_tests.c |
README this file rb_optparse.bash bash completion script rb_optparse.zsh zsh completion script ruby-style.el Ruby's C/C++ mode style for emacs lldb_cruby.py LLDB port of debug utility test_lldb_cruby.rb test file for LLDB port