merge revision(s) 44535,44536: [Backport #9321]

* vm.c (rb_vm_pop_cfunc_frame): added.  It cares c_return event.
	  The patch base by drkaes (Stefan Kaes).
	  [Bug #9321]

	* variable.c (rb_mod_const_missing): use rb_vm_pop_cfunc_frame()
	  instead of rb_frame_pop().

	* vm_eval.c (raise_method_missing): ditto.

	* vm_eval.c (rb_iterate): ditto.

	* internal.h (rb_vm_pop_cfunc_frame): add decl.

	* test/ruby/test_settracefunc.rb: add tests.
	  provided by drkaes (Stefan Kaes).

	* vm.c, eval.c, include/ruby/intern.h (rb_frame_pop): 
	  move definition of rb_frame_pop() and deprecate it.
	  It doesn't care about `return' events.

	* vm.c, eval.c, include/ruby/intern.h (rb_frame_pop):


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@46671 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
usa 2014-07-03 06:20:05 +00:00
parent c669702738
commit 6ece90852b
9 changed files with 137 additions and 17 deletions

View file

@ -1517,7 +1517,7 @@ const_missing(VALUE klass, ID id)
VALUE
rb_mod_const_missing(VALUE klass, VALUE name)
{
rb_frame_pop(); /* pop frame for "const_missing" */
rb_vm_pop_cfunc_frame();
uninitialized_constant(klass, rb_to_id(name));
UNREACHABLE;