ruby/tool
k0kubun bdb4268928 _mjit_compile_pc_and_sp.erb: make sure no uninitialized
area on VM stack to prevent SEGV on GC. GC may mark every value in VM
stack.

Unfortunately I couldn't write a test for it... So let me explain the
situation.

SEGV example:
https://gist.github.com/k0kubun/c7cea2b5761ffdff29ec79ea1a8f7f91

```
$ ruby --dump=insns -e 'def oct(num, len); "%0#{len}o" % num; end'
== disasm: #<ISeq:oct@-e:1 (1,0)-(1,41)> (catch: FALSE)
local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
[ 2] num@0<Arg> [ 1] len@1<Arg>
0000 putobject                    "%0"                                (   1)[LiCa]
0002 getlocal_WC_0                len@1
0004 dup
0005 checktype                    T_STRING
0007 branchif                     14
0009 dup
0010 opt_send_without_block       <callinfo!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>, <callcache>
0013 tostring
0014 putobject                    "o"
0016 concatstrings                3
0018 getlocal_WC_0                num@0
0020 opt_mod                      <callinfo!mid:%, argc:1, ARGS_SIMPLE>, <callcache>
0023 leave                        [Re]
```

Prior to this commit, after arguments are pushed on 0010, stacks were:
VM stack: [uninitialized, uninitialized, len]
JIT stack: ["%0", len, len]

And then, when GC is invoked on 0016, VM stack will be [uninitialized, uninitialized]
and those uninitialized values will be marked by GC.

With this commit, after arguments are pushed on 0010, stacks will be:
VM stack: [len]
JIT stack: ["%0", len, len]

And VM stack will be [] on 0016.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63360 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-05-08 15:06:11 +00:00
..
m4 Honor --silent option 2018-04-03 08:29:51 +00:00
ruby_vm _mjit_compile_pc_and_sp.erb: make sure no uninitialized 2018-05-08 15:06:11 +00:00
test * enc/trans/EMOJI/*.src, enc/trans/emoji*, enc/x-emoji.c, test/ruby/enc/test_emoji.rb, tool/enc-emoji-citrus-gen.rb, tool/enc-emoji4unicode.rb, tool/jisx0208.rb, tool/test/test_jisx0208.rb: new encodings to support emoji charsets, which are used by Japanese mobile phones [ruby-dev:40528]. Thanks Yoji Shidara for a lot of contribution. 2010-03-09 09:15:42 +00:00
asm_parse.rb tool: add descriptions and fix typos 2016-07-02 21:01:04 +00:00
bisect.sh tool/bisect.sh: extracted build part [ci skip] 2018-03-01 03:26:05 +00:00
build-transcode
change_maker.rb tool: add descriptions and fix typos 2016-07-02 21:01:04 +00:00
checksum.rb checksum.rb: check the target 2015-05-07 07:09:43 +00:00
colorize.rb distinguish pass and fail by highlight [ci skip] 2017-10-14 02:17:07 +00:00
downloader.rb tool/downloader.rb: retry SocketError 2018-02-05 13:24:00 +00:00
enc-emoji-citrus-gen.rb * enc/trans/EMOJI/*.src, enc/trans/emoji*, enc/x-emoji.c, test/ruby/enc/test_emoji.rb, tool/enc-emoji-citrus-gen.rb, tool/enc-emoji4unicode.rb, tool/jisx0208.rb, tool/test/test_jisx0208.rb: new encodings to support emoji charsets, which are used by Japanese mobile phones [ruby-dev:40528]. Thanks Yoji Shidara for a lot of contribution. 2010-03-09 09:15:42 +00:00
enc-emoji4unicode.rb * enc/trans/EMOJI/*.src, enc/trans/emoji*, enc/x-emoji.c, test/ruby/enc/test_emoji.rb, tool/enc-emoji-citrus-gen.rb, tool/enc-emoji4unicode.rb, tool/jisx0208.rb, tool/test/test_jisx0208.rb: new encodings to support emoji charsets, which are used by Japanese mobile phones [ruby-dev:40528]. Thanks Yoji Shidara for a lot of contribution. 2010-03-09 09:15:42 +00:00
enc-unicode.rb support gperf 3.1 2017-12-08 05:51:19 +00:00
eval.rb tool: add descriptions and fix typos 2016-07-02 21:01:04 +00:00
expand-config.rb tool: add descriptions and fix typos 2016-07-02 21:01:04 +00:00
extlibs.rb downloader cache 2017-05-21 16:45:35 +00:00
fake.rb fake.rb: set libdir 2017-12-27 01:26:22 +00:00
fetch-bundled_gems.rb test-bundled-gems-fetch 2017-10-25 23:35:46 +00:00
file2lastrev.rb file2lastrev.rb: suppress_not_found 2017-12-06 11:18:53 +00:00
gem-unpack.rb * tool/downloader.rb: Removed verification of gem certification. 2016-10-12 06:24:59 +00:00
gen_dummy_probes.rb probes.dmyh: remove preprocessor directives 2016-07-06 05:03:14 +00:00
gen_ruby_tapset.rb get rid of ambiguous parentheses warnings 2016-11-29 16:06:54 +00:00
generate-backport-changelog.rb Missed `#` in usage 2017-08-09 08:17:52 +00:00
generic_erb.rb Refactor ERB version checking for keyword arguments 2018-02-27 11:12:23 +00:00
git-refresh git-refresh: fix for Solaris 2017-04-30 10:53:42 +00:00
gperf.sed gperf.sed: static declarations 2017-12-15 14:42:43 +00:00
id2token.rb tool: add descriptions and fix typos 2016-07-02 21:01:04 +00:00
ifchange ifchange: --debug option 2018-02-08 02:08:27 +00:00
insns2vm.rb insns2vm.rb: make #generate_parser private 2018-01-27 02:14:20 +00:00
install-sh configure.ac 2017-09-29 13:21:17 +00:00
jisx0208.rb tool: add descriptions and fix typos 2016-07-02 21:01:04 +00:00
make-snapshot Prefer to use %x instead of backtick. 2018-02-28 11:12:36 +00:00
make_hgraph.rb * tool/make_hgraph.rb: added. 2015-05-29 08:39:50 +00:00
mdoc2man.rb Add support for the `Lk` macro to tool/mdoc2man.rb 2016-09-23 12:40:16 +00:00
merger.rb aliases 2017-12-16 01:56:14 +00:00
mk_call_iseq_optimized.rb mk_call_iseq_optimized.rb: add mode string [ci skip] 2017-11-09 23:02:52 +00:00
mkconfig.rb mkconfig.rb: hide MJIT configurations 2018-02-08 15:19:01 +00:00
mkrunnable.rb rename ruby-runner as bin/ruby 2017-09-15 17:42:00 +00:00
node_name.rb tool: add descriptions and fix typos 2016-07-02 21:01:04 +00:00
parse.rb tool: add descriptions and fix typos 2016-07-02 21:01:04 +00:00
prereq.status extract prereq.status 2017-05-07 13:06:34 +00:00
probes_to_wiki.rb probes_to_wiki.rb: fix comment and reduce unnecessary array 2013-07-11 01:46:40 +00:00
rbinstall.rb rbinstall.rb: fix timing to read stub 2018-04-27 01:58:29 +00:00
rbuninstall.rb tool: add descriptions and fix typos 2016-07-02 21:01:04 +00:00
redmine-backporter.rb * tool/redmine-backporter.rb (show): just report and ignore if a feature ticket 2017-07-07 02:14:57 +00:00
release.sh * tool/release.sh: BRE accepts \{m,\} expression. use it for future many-digits 2016-04-01 03:27:17 +00:00
rmdirs tool: add descriptions and fix typos 2016-07-02 21:01:04 +00:00
run-gcov.rb tool/run-gcov.rb: ignore rubyspec_temp directory 2017-07-04 16:02:18 +00:00
run-lcov.rb Revamp method coverage to support define_method 2017-12-05 07:16:42 +00:00
runruby.rb tool/runruby.rb: fix RUNRUBY_USE_GDB case 2017-11-07 11:21:09 +00:00
strip-rdoc.rb tool: add descriptions and fix typos 2016-07-02 21:01:04 +00:00
sync_default_gems.rb Support upstream directory structure for ruby/csv. 2018-04-03 05:56:16 +00:00
test-coverage.rb `make test-all COVERAGE=true` supports directory-separated build 2018-04-05 01:05:16 +00:00
transcode-tblgen.rb Refactor ERB version checking for keyword arguments 2018-02-27 11:12:23 +00:00
transform_mjit_header.rb transform_mjit_header.rb: read output and errors 2018-03-17 02:18:46 +00:00
update-deps mjit_compile.c: merge initial JIT compiler 2018-02-04 11:22:28 +00:00
vcs.rb vcs.rb: .git at export 2018-02-26 06:00:08 +00:00
vpath.rb prelude.c.tmpl: strip prefix 2014-11-19 01:08:00 +00:00
vtlh.rb tool: add descriptions and fix typos 2016-07-02 21:01:04 +00:00
ytab.sed more ytab.sed fixes 2018-01-15 02:39:32 +00:00