merge revision(s) r46419,r46429: [Backport #9940]

	* vm_trace.c: clear and restore recursive checking thread local data
	  to avoid unexpected throw from TracePoint.
	  [Bug #9940]

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

	* thread.c: adde
	  * rb_threadptr_reset_recursive_data(rb_thread_t *th);
	  * rb_threadptr_restore_recursive_data(rb_thread_t *th, VALUE old);

	* vm_core.h: ditto.

	* thread.c: added


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@47009 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
merge revision(s) r46463: [Backport #9957]

	* vm_core.h: add VM_FRAME_MAGIC_RESCUE to recognize normal block or
	  rescue clause.

	* vm.c (vm_exec): use VM_FRAME_MAGIC_RESCUE on at rescue/ensure.

	* test/ruby/test_settracefunc.rb: should not invoke b_return at rescue
	  clause.
	  [Bug #9957]

	* vm_dump.c (control_frame_dump): check VM_FRAME_MAGIC_RESCUE.

	* vm_dump.c (vm_stack_dump_each): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@47012 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
merge revision(s) r46464: [Backport #9959]

	* vm.c (invoke_block_from_c): move call/return event timing for
	  bmethod. It can invoke inconsistent call event if this call raises
	  argument error.
	  [Bug #9959]

	* vm_insnhelper.c (vm_call_bmethod_body): ditto.

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


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@47013 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
merge revision(s) r46471: [Backport #9964]

	* compile.c (rb_iseq_compile_node): put start label of block after
	  trace (b_call).
	  [Bug #9964]

	* test/ruby/test_settracefunc.rb: add a test.
	  added assert_consistent_call_return() method check call/return
	  consistency.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@47014 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
merge revision(s) r46649: [Backport #10005]

	* node.c (dump_node): handle nd_value == (NODE *)-1 to mean this
	  keyword argument is required


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@47035 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
merge revision(s) r44577,r45097,r45330,r45331,r45354,r45356: [Backport #10033]

	cptr.c: unused variable

	* ext/dl/cptr.c (rb_dlptr_inspect): remove no longer used variable.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@47036 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
merge revision(s) r44610,r44617:

	numeric.c: preserve encoding

	* numeric.c (coerce_failed): preserve encoding of error message.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@47050 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
merge revision(s) r46465,r46469,r46484: [Backport #9961]

	* vm.c (rb_vm_rewind_cfp): add new function to rewind specified cfp
	  with invoking RUBY_EVENT_C_RETURN.
	  [Bug #9961]

	* vm_core.h: ditto.

	* eval.c (rb_protect): use it.

	* eval.c (rb_rescue2): ditto.

	* vm_eval.c (rb_iterate): ditto.

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

	* vm_core.h (rb_name_err_mesg_new): 

	* vm_eval.c (rb_catch_protect): fix same problem of [Bug #9961].

	* vm_eval.c (rb_iterate): ditto.

	* vm_core.h (rb_vm_rewind_cfp): add the prototype declaration.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@47051 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
merge revision(s) r46345,r46346: [Backport #9903]

	re.c: reduce new strings

	* re.c (match_aref, rb_reg_regsub): reduce new strings creation
  for exceptions.
	* re.c (match_aref, rb_reg_regsub): consider encoding of captured
	  names, encoding-incompatible should not match.
	  [ruby-dev:48278] [Bug #9903]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@47052 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
merge revision(s) r46550: [Backport #9977]

	* hash.c (ruby_setenv): fix memory leak on Windows, free
	  environment strings block after check for the size.
	  [ruby-dev:48323] [Bug #9977]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@47053 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
merge revision(s) r46557,r46565: [Backport #9978]

	* hash.c (env_select): fix memory leak and crash on Windows, make
	  keys array first instead of iterating on envrion directly.
	  [ruby-dev:48325] [Bug #9978]
	  keys array first instead of iterating on environ directly.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@47054 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
merge revision(s) r46570: [Backport #9983]

	* hash.c (env_shift): fix memory leak on Windows, free environment
	  strings block always.  [ruby-dev:48332] [Bug #9983]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@47055 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
merge revision(s) r46585,r46595,r46822: [Backport #9977] [Backport #9978] [Backport #9983]

	test_env.rb: rehearsal

	* test/ruby/test_env.rb (test_memory_leak_{aset,select,shift}):
  have a rehearsal before the main loop.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@47056 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
merge revision(s) r45676,r45677: [Backport #9769]

	stringio.c: move GC guard

	* ext/stringio/stringio.c (strio_write): move GC guard after the
  last using position.
	* ext/stringio/stringio.c (strio_write): use rb_str_append to
	  reuse coderange bits other than ASCII-8BIT, and keep
	  taintedness.  [ruby-dev:48118] [Bug #9769]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@47106 b2dd03c8-39d4-4d8f-98ff-823fe69b080e