mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	
				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