|author||Koichi Sasada <email@example.com>||2019-11-29 17:39:06 +0900|
|committer||Koichi Sasada <firstname.lastname@example.org>||2019-11-29 17:47:02 +0900|
check interrupts at each frame pop timing.
Asynchronous events such as signal trap, finalization timing, thread switching and so on are managed by "interrupt_flag". Ruby's threads check this flag periodically and if a thread does not check this flag, above events doesn't happen. This checking is CHECK_INTS() (related) macro and it is placed at some places (laeve instruction and so on). However, at the end of C methods, C blocks (IMEMO_IFUNC) etc there are no checking and it can introduce uninterruptible thread. To modify this situation, we decide to place CHECK_INTS() at vm_pop_frame(). It increases interrupt checking points. [Bug #16366] This patch can introduce unexpected events...
Diffstat (limited to 'enum.c')
1 files changed, 0 insertions, 3 deletions
@@ -543,7 +543,6 @@ collect_i(RB_BLOCK_CALL_FUNC_ARGLIST(i, ary))
rb_ary_push(ary, rb_enum_values_pack(argc, argv));
@@ -663,14 +662,12 @@ static VALUE
return rb_hash_set_pair(hash, i);
return rb_hash_set_pair(hash, rb_yield_values2(argc, argv));