Skip to content
  • U.Nakamura's avatar
    fd8fbe37
    merge revision(s) 58262,58263: [Backport #13369] · fd8fbe37
    U.Nakamura authored
    	fix TracePoint#return_value with non-local exits
    
    	* vm.c: get return_value from imemo_throw_data object (THROW_DATA_VAL()).
    	  imemo_throw_data (TAG_BREAK) contains returned value.
    	  However, imemo_throw_data (TAG_BREAK) can skip several frames so that
    	  we need to use it only once (at most internal frame). To record it,
    	  we introduced THROW_DATA_CONSUMED and check it.
    
    	* internal.h: define THROW_DATA_CONSUMED flag.
    
    	* test/ruby/test_settracefunc.rb: add tests for [Bug #13369]
    
    	* vm_insnhelper.h: add THROW_DATA_CONSUMED_P() and
    	  THROW_DATA_CONSUMED_SET().
    
    	internal.h: parenthesize macro argument
    
    	* internal.h (THROW_DATA_P): parenthesize the argument which is
    	  casted.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59547 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    fd8fbe37
    merge revision(s) 58262,58263: [Backport #13369]
    U.Nakamura authored
    	fix TracePoint#return_value with non-local exits
    
    	* vm.c: get return_value from imemo_throw_data object (THROW_DATA_VAL()).
    	  imemo_throw_data (TAG_BREAK) contains returned value.
    	  However, imemo_throw_data (TAG_BREAK) can skip several frames so that
    	  we need to use it only once (at most internal frame). To record it,
    	  we introduced THROW_DATA_CONSUMED and check it.
    
    	* internal.h: define THROW_DATA_CONSUMED flag.
    
    	* test/ruby/test_settracefunc.rb: add tests for [Bug #13369]
    
    	* vm_insnhelper.h: add THROW_DATA_CONSUMED_P() and
    	  THROW_DATA_CONSUMED_SET().
    
    	internal.h: parenthesize macro argument
    
    	* internal.h (THROW_DATA_P): parenthesize the argument which is
    	  casted.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59547 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Loading