зеркало из https://github.com/github/ruby.git
RUBY_VM_CHECK_INTS: eval the argument only once
* vm_core.h (RUBY_VM_CHECK_INTS): evaluate the argument only once to get rid of inadvertent side effects. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51281 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
ce7fdcf0f8
Коммит
df62161d7e
13
vm_core.h
13
vm_core.h
|
@ -1090,11 +1090,14 @@ void rb_threadptr_pending_interrupt_clear(rb_thread_t *th);
|
|||
void rb_threadptr_pending_interrupt_enque(rb_thread_t *th, VALUE v);
|
||||
int rb_threadptr_pending_interrupt_active_p(rb_thread_t *th);
|
||||
|
||||
#define RUBY_VM_CHECK_INTS(th) do { \
|
||||
if (UNLIKELY(RUBY_VM_INTERRUPTED_ANY(th))) { \
|
||||
rb_threadptr_execute_interrupts(th, 0); \
|
||||
} \
|
||||
} while (0)
|
||||
#define RUBY_VM_CHECK_INTS(th) ruby_vm_check_ints(th)
|
||||
static inline void
|
||||
ruby_vm_check_ints(rb_thread_t *th)
|
||||
{
|
||||
if (UNLIKELY(RUBY_VM_INTERRUPTED_ANY(th))) {
|
||||
rb_threadptr_execute_interrupts(th, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/* tracer */
|
||||
struct rb_trace_arg_struct {
|
||||
|
|
Загрузка…
Ссылка в новой задаче