summaryrefslogtreecommitdiff
path: root/thread.c
AgeCommit message (Collapse)Author
2009-07-13merges r23959 from trunk into ruby_1_9_1.yugui
-- * thread.c (rb_threadptr_exec_event_hooks): new function to execute event hooks, with preserving errinfo. [ruby-core:24118] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@24068 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-06-21merges r23720 from trunk into ruby_1_9_1.yugui
-- * thread.c (ruby_thread_stack_overflow): call rb_exc_raise() on stack overflows in the signal handler, if sigaltstack is available. On stack overflow (and with sigaltstack), the signal handler is more likely to have room to create an exception object. [ruby-core:23813] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@23794 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-06-20merges r23557 and r23563 from trunk into ruby_1_9_1.yugui
-- * thread.c (rb_exec_recursive_paired): new function for proper handling of recursive arrays. [EXPERIMENTAL] [ruby-core:23402] * array.c (rb_ary_equal, rb_ary_eql, rb_ary_cmp): use above. * hash.c (hash_equal): ditto. -- * test/ruby/test_hash.rb (TestHash::test_equal2): recursive hashes are handled properly now. ref: [ruby-core:23402] * test/ruby/test_m17n.rb (TestM17N#test_sprintf_p): test fixed git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@23759 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-03merges r22577, r22578 and r22642 from trunk into ruby_1_9_1.yugui
-- * thread.c (thread_cleanup_func): unlock all locked mutexes even when forking. [ruby-core:22269] -- * bootstraptest/test_thread.rb: fix for environment where fork is not available. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@22733 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-22merges r22389 from trunk into ruby_1_9_1.yugui
* thread.c (thread_start_func_2): do not delete main thread from living_threads. [ruby-core:19385], [ruby-core:22158] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@22537 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-28merges r21659 from trunk into ruby_1_9_1.yugui
* vm.c: add a prefix "rb_" to exposed functions vm_get_ruby_level_next_cfp(), rb_vm_make_env_object(), vm_stack_to_heap(), vm_make_proc(), vm_invoke_proc(), vm_get_sourceline(), vm_cref(), vm_localjump_error(), vm_make_jump_tag_but_local_jump(), vm_jump_tag_but_local_jump(). This changes may affect only core because most of renamed functions require a pointer of not-exposed struct such as rb_thread_t or NODE. In short, they are core functions. * cont.c, eval.c, eval_intern.h, load.c, proc.c, thread.c, vm_core.h, vm_dump.c, vm_eval.c, vm_exec.c, vm_insnhelper.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-28merges r21725 from trunk into ruby_1_9_1.yugui
* thread.c (rb_time_timeval): made a real prototype. a patch from Marcus Rueckert <darix AT opensu.se> at [ruby-core:21492]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21819 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-20merges r21662 from trunk into ruby_1_9_1.yugui
* thread.c (rb_thread_execute_interrupts): needs rb_signal_buff_size to be declared. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-16merges r21592 from trunk into ruby_1_9_1.yugui
* thread.c (thread_start_func_2): call ruby_cleanup() if thread is main thread. [ruby-dev:37624] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21597 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-16merges r21582 from trunk into ruby_1_9_1.yugui
* thread.c (rb_thread_execute_interrupts): if signal is already buffered, main thread should wait until timer thread delivers it. * thread.c (timer_thread_function): should defer delivery of a signal if main thread does not yet trap a previous one. [ruby-dev:37676] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21594 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-16merges r21578 from trunk into ruby_1_9_1.yugui
* thread.c (call_trace_proc): as Matz said ([ruby-core:21183]), should skip rb_str_new2() if rb_sourcefile() returns NULL. rb_sourcefile() returns NULL if frame is toplevel of Fiber. [ruby-core:21161] [Bug #985] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21593 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-15merges r21487 from trunk into ruby_1_9_1.yugui
* include/ruby/intern.h, thread.c, win32/Makefile.sub (rb_fdset_t, rb_fd_init, rb_fd_term, rb_fd_zero, rb_fd_set, rb_fd_clr, rb_fd_isset, rb_fd_select, rb_fd_ptr, rb_fd_max, HAVE_RB_FD_INIT): new type, functions, and macros for Windows. * win32/win32.c (extract_fd, rb_w32_select): use rb_fdset_t to expand fd_array if needed. [ruby-core:19946] * win32/win32.c (copy_fd): new funcion for rb_w32_select(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-12merges r21438 from trunk into ruby_1_9_1.yugui
* thread.c: fix comment (terminology: Global VM Lock). * thread.c (blocking_region_begin, blocking_region_end): save and clear th->blocking_region_buffer. * thread.c (rb_thread_call_with_gvl): check if it has GVL. * thread.c (ruby_thread_has_gvl_p): added. * vm_core.h: add decls. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21462 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-09merges r21338 from trunk into ruby_1_9_1.yugui
* rdoc update. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21398 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-30merges r21185 from trunk into ruby_1_9_1.yugui
* thread.c (rb_thread_blocking_region): add a comment. * thread.c (rb_thread_call_without_gvl): added as a alias of rb_thread_blocking_region(). * thread.c (rb_thread_call_with_gvl): added. * vm_core.h (rb_thread_t#blocking_region_buffer): added for rb_thread_call_with_gvl(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21198 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-29merges r21148 from trunk into ruby_1_9_1.yugui
* thread.c (rb_mutex_trylock): return false if Mutex owned by current thread. [ruby-core:20943] * thread.c (rb_mutex_lock): check dead lock (recursive lock) here. * test/ruby/test_thread.rb: add a test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21160 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-28merges r21105 and r21106 from trunk into ruby_1_9_1.yugui
* thread.c (mutex_free): GC thread (main thread) has failed to unlock a mutex that is locked by another thread, which makes the mutex dangling in keeping_mutexes and causes [BUG] or stuck finally. Now unlocking is performed as locking thread. * thread.c (mutex_unlock, rb_mutex_unlock, rb_mutex_unlock_all): mutex_unlock receives a thread. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21132 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-28merges r21097 from trunk into ruby_1_9_1.yugui
* process.c (after_exec): needs to reset before restart timer thread. * thread.c (thread_start_func_2): stops timer thread if forked in the new thread. [ruby-core:19385] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21126 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-28merges r21096 from trunk into ruby_1_9_1.yugui
* thread.c (rb_thread_atfork, rb_thread_atfork_before_exec): DRY. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21125 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-25merges r20976 from trunk into ruby_1_9_1.yugui
* thread.c (thread_start_func_2): sets native thread key. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21030 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-25merges r20917 from trunk into ruby_1_9_1.yugui
rdoc update. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@21004 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-23* thread.c (Thread#set_trace_func, #add_trace_func): removed.yugui
This is an unsupported feature in 1.9.1 and will be supported in 1.9.2. [ruby-core:19581] (thread_add_trace_func): removes unnecessary function. (thread_add_trace_func_m): ditto. (thread_set_trace_func_m): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20925 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-17merges r20766 from trunk into ruby_1_9_1.yugui
* thread.c (sleep_timeval): cast tv_usec to long to shut up warnings on OSX. [ruby-dev:37449] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20821 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-13merges r20615 from trunk into ruby_1_9_1.yugui
* thread.c (rb_mutex_unlock): shut up warning. a patch from Kazuhiro NISHIYAMA in [ruby-dev:37345]. fix #846 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20693 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-13merges r20593 from trunk into ruby_1_9_1.yugui
* compile.c (iseq_compile_each), gc.c (assign_heap_slot), (gc_mark_children), parse.y (vtable_alloc, vtable_free, vtable_add), proc.c (proc_to_s), thread.c (terminate_i, rb_thread_terminate_all), (thread_start_func_2, blocking_region_begin, blocking_region_end), (rb_thread_kill), thread_pthread.c (native_thread_create), (ubf_pthread_cond_signal), vm.c (check_env, thread_free), vm_dump.c (vm_env_dump_raw, vm_stack_dump_each, vm_thread_dump_state), (vm_call0): use void pointer for %p. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20687 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-04merges r20444 and r20447 from trunk into ruby_1_9_1.yugui
add comment for select behavior on file descriptors over FD_SETSIZE. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20486 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-30merges r20372-r20375 and r20380 from trunk into ruby_1_9_1.yugui
* signal.c (register_sigaltstack): minimum size is insufficient for method calls. * signal.c (sigsegv): handles stack overflow if possible. * thread.c (ruby_thread_stack_overflow): helper function to raise sysstack_error. * thread_pthread.c (ruby_stack_overflowed_p): checks for stack overflow. * signal.c (ruby_sigaction_t): added. * signal.c (register_sigaltstack): stores alt stack for debug purpose. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20422 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-30* thread.c, thread_pthread.c, thread_win32.c: merges nobu's commits -yugui
r20117, r20123, r20124, r20127, r20132-r20134, r20138, r20140, r20141 and r20160 - from trunk into ruby_1_9_1. * thread_pthread.c (thread_timer): checks working flags again. * thread_pthread.c (rb_thread_create_timer_thread): do not wait never coming signal if failed to create tiemr thread. * thread_pthread.c (native_cond_timedwait): returns error code. * thread_pthread.c (thread_timer, rb_thread_create_timer_thread): handshakes properly. * thread_pthread.c (thread_timer): initializes mutex each time. * thread_win32.c (thread_start_func_1): use already gotten stack info. * thread.c (thread_timer): pthread_cond_timedwait returns ETIMEDOUT when timed out. * thread_pthread.c (thread_timer): uses pthread_cond_timedwait always instead of pthread_kill. * thread.c (thread_timer): uses timedwait on cygwin. * thread.c (rb_thread_stop_timer_thread): terminates timer thread immediately. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20407 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-30merges r20346 from trunk into ruby_1_9_1.yugui
* process.c (rb_fork): stops the timer thread during fork. [ruby-dev:37117] * thread.c (rb_thread_start_timer_thread): timer thread needs system_working to be set. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20406 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-18merges r20229 and r20230 from trunk into ruby_1_9_1.yugui
* thread.c (rb_barrier_{new,wait,release,destroy}): use Mutex so that circular requires fail with deadlock. [ruby-core:19821] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20263 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-18merges r20223 from trunk into ruby_1_9_1.yugui
* load.c (rb_require_safe): destroys barrier after successfully loaded, to get rid of loading same library again. [ruby-core:19798] * thread.c (rb_barrier_wait): can not wait destroyed barrier. * thread.c (rb_barrier_destroy): destroys barrier so that no longer waited. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20260 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-04merges r20102 from trunk into ruby_1_9_1.yugui
* include/ruby/intern.h (rb_mutex_synchronize): fixed prototype. * thread.c (rb_mutex_synchronize): fixed function name. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20110 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-26* thread.c (blocking_region_{begin,end}): declared as inline.nobu
* util.c (freedtoa): used only when MULTIPLE_THREADS is not defined. * win32/win32.c (rb_w32_pipe): serial is DWORD. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-08* thread.c (rb_thread_wait_fd_rw): should not block by select ifmatz
there's only one thread living. fixed [ruby-dev:36646]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19719 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-26* thread.c (thlist_signal): clears the woken thread if nothing woke.nobu
* thread.c (rb_barrier_wait): achieves the lock if no thread was waiting yet. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19573 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-26* include/rubysig.h: old macros for backward compatibility.nobu
* thread.c (BLOCKING_REGION): rewritten using helper functions. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19562 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-23* thread.c (rb_thread_blocking_region): fix typo in a document.ko1
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19479 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-23* thread.c (rb_thread_blocking_region): write a documentko1
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19478 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-23* thread.c, include/ruby/intern.h (rb_thread_interrupted): added.ko1
* io.c: use VALUE of thead instead of rb_tread_t to check interrupts. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19477 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-23* common.mk: clean upko1
- remove blockinlining.$(OBJEXT) to built - make ENCODING_H_INCLDUES variable (include/ruby/encoding.h) - make VM_CORE_H_INCLUDES variable (vm_core.h) - simplify rules. - make depends rule to output depend status using gcc -MM. * include/ruby/mvm.h, include/ruby/vm.h: rename mvm.h to vm.h. * include/ruby.h: ditto. * load.c: add inclusion explicitly. * enumerator.c, object.c, parse.y, thread.c, vm_dump.c: remove useless inclusion. * eval_intern.h: cleanup inclusion. * vm_core.h: rb_thread_t should be defined in this file. * vm_evalbody.c, vm_exec.c: rename vm_evalbody.c to vm_exec.c. * vm.h, vm_exec.h: rename vm.h to vm_exec.h. * insnhelper.h, vm_insnhelper.h: rename insnhelper.h to vm_insnhelper.h. * vm.c, vm_insnhelper.c, vm_insnhelper.h: - rename vm_eval() to vm_exec_core(). - rename vm_eval_body() to vm_exec(). - cleanup include order. * vm_method.c: fix comment. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19466 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-04* iseq.c (iseq_data_to_ary): make it static.ko1
* thread.c (thgroup_enclose): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19146 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-04* thread.c (rb_thread_critical): removed.ko1
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19144 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-04* thread.c (rb_thread_check_trap_pending): added for compatibility.ko1
* ext/tk/tcltklib.c, ext/tk/tkutil/tkutil.c: remove ruby/signal.h dependency. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19128 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-04* vm_core.h (struct rb_vm_struct): replaced signal staff with trapnobu
staff. * signal.c (signal_buff): per process resouce now. * signal.c (trap_list): moved to VM. * signal.c (rb_get_next_signal): reverted. * signal.c (rb_trap_exit): trap_pending_list was no longer used. * thread.c (timer_thread_function): delivers buffered per-process signals to each VMs. * vm.c (rb_vm_mark): marks trap_list. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19119 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-31fix a typo.akr
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18988 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-31* include/ruby/intern.h: rename RB_UBF_DFL toko1
RUBY_UBF_IO and RUBY_UBF_PROCESS. Because there is no default (universal) unblocking function. * ext/socket/socket.c, file.c, io.c, process.c, thread.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18985 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-16* include/ruby/ruby.h (rb_intern_const): tiny optimization.nobu
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-14* thread.c (rb_thread_priority_set): get rid of C99 feature.nobu
* transcode.c (transcode_search_path): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18606 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-13* thread.c (rb_thread_execute_interrupts): switch eventko1
should be occur only once. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18596 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-13* thread.c (rb_thread_check_ints): added. please note thatko1
this function may cause ruby's thread switching. * include/ruby/intern.h: ditto. * regint.h: use rb_thread_check_ints() instead of RUBY_CHECK_INTS() directly. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18572 b2dd03c8-39d4-4d8f-98ff-823fe69b080e