1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/tool
ko1 c4bc9b5758 * iseq.c, vm_eval.c: set th->base_block properly.
th->base_block is information for (a) parsing, (b) compiling
  and (c) setting up the frame to execute the program passed by
  `eval' method.  For example, (1) parser need to know up-level
  variables to detect it is variable or method without paren.
  Befor (a), (b) and (c), VM set th->base_block by passed bindng
  (or previous frame information).  After execute (a), (b) and (c),
  VM should clear th->base_block.  However, if (a), (b) or (c)
  raises an exception, then th->base_block is not cleared.
  Problem is that the uncleared value th->balo_block is used for
  irrelevant iseq compilation.  It causes SEGV or critical error.
  I tried to solve this problem: to clear them before exception,
  but finally I found out that it is difficult to do it (Ruby
  program can be run in many places).
  Because of this background, I set th->base_block before
  compiling iseq and restore it after compiling.
  Basically, th->base_block is dirty hack (similar to global
  variable) and this patch is also dirty.
* bootstraptest/test_eval.rb: add a test for above.
* internal.h: remove unused decl.
* iseq.c (rb_iseq_compile_with_option): add base_block parameter.
  set th->base_block before compation and restore it after
  compilation.
* ruby.c (require_libraries): pass 0 as base_block instead of
  setting th->base_block
* tool/compile_prelude.rb (prelude_eval): apply above changes.
* vm.c, vm_eval.c: ditto.
* vm_core.h: add comments.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36179 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-22 09:32:56 +00:00
..
test
asm_parse.rb
build-transcode
change_maker.rb
compile_prelude.rb * iseq.c, vm_eval.c: set th->base_block properly. 2012-06-22 09:32:56 +00:00
config.guess
config.sub
enc-emoji-citrus-gen.rb
enc-emoji4unicode.rb
enc-unicode.rb * Makefile.in: don't remove macros. now name2ctype uses macros. 2012-06-13 17:54:14 +00:00
eval.rb
file2lastrev.rb
generic_erb.rb
ifchange
insns2vm.rb
install-sh
instruction.rb
jisx0208.rb
make-snapshot tool/make-snapshot MKDIR_P 2012-06-14 15:14:05 +00:00
mdoc2man.rb
merger.rb * tool/merger.rb (interactive): allow editing commit message. 2012-03-26 03:57:07 +00:00
mkconfig.rb
node_name.rb
parse.rb
rbinstall.rb * tool/rbinstall.rb (capi): install to capi directory. 2012-05-03 14:56:39 +00:00
rmdirs
rubytest.rb common test options 2012-05-30 01:24:05 +00:00
runruby.rb [Bug #6598] 2012-06-15 22:12:58 +00:00
strip-rdoc.rb
transcode-tblgen.rb * enc/euc_jp.c: added EUC-JP-2004 and its alias EUC-JISX0213. 2012-04-24 11:14:18 +00:00
update-deps
vtlh.rb
ytab.sed