зеркало из https://github.com/github/ruby.git
157095b3a4
Some platforms don't want memory to be marked as writeable and executable at the same time. When we write to the code block, we calculate the OS page that the buffer position maps to. Then we call `mprotect` to allow writes on that particular page. As an optimization, we cache the "last written" aligned page which allows us to amortize the cost of the `mprotect` call. In other words, sequential writes to the same page will only call `mprotect` on the page once. When we're done writing, we call `mprotect` on the entire JIT buffer. This means we don't need to keep track of which pages were marked as writeable, we let the OS take care of that. Co-authored-by: John Hawthorn <john@hawthorn.email> |
||
---|---|---|
.. | ||
README | ||
expand_tabs.rb | ||
lldb_cruby.py | ||
lldb_disasm.py | ||
lldb_yjit.py | ||
rb_optparse.bash | ||
rb_optparse.zsh | ||
ruby-style.el | ||
test_lldb_cruby.rb | ||
test_yjit_asm.sh | ||
yjit_asm_tests.c |
README
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