merge revision(s) 49266: [Backport #10689]

* eval_intern.h, vm.c, vm_eval.c, vm_insnhelper.c:
	  change throw mechanism (not save target ep, but save target cfp).
	  It fixes `unexpected break' bug that occurs when
	  TracePoint#binding is called.
	  [ruby-dev:48797] [Bug #10689]

	* test/ruby/test_settracefunc.rb: add a test.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@49374 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
naruse 2015-01-22 02:46:06 +00:00
parent a45cd37557
commit 0ee6afe2c1
7 changed files with 232 additions and 209 deletions

View file

@ -207,7 +207,7 @@ enum ruby_tag_type {
(RNODE((obj))->u3.value = (val))
#define GET_THROWOBJ_VAL(obj) ((VALUE)RNODE((obj))->u1.value)
#define GET_THROWOBJ_CATCH_POINT(obj) ((VALUE*)RNODE((obj))->u2.value)
#define GET_THROWOBJ_CATCH_POINT(obj) ((rb_control_frame_t*)RNODE((obj))->u2.value)
#define GET_THROWOBJ_STATE(obj) ((int)RNODE((obj))->u3.value)
#define SCOPE_TEST(f) (rb_vm_cref()->nd_visi & (f))