nobu
011fc2649d
* thread.c (thread_start_func_2): sets native thread key.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-24 16:52:38 +00:00
akr
b795b5c537
rdoc update.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20917 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-22 12:29:04 +00:00
matz
13919e068b
* 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/trunk@20766 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-15 14:49:31 +00:00
matz
bd4d9e9a35
* 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/trunk@20615 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-10 16:30:40 +00:00
nobu
541915b239
* 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/trunk@20593 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-09 04:33:55 +00:00
akr
e44a6c4708
move the previous comment.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-02 10:00:10 +00:00
nobu
7348aa6113
* gc.c (ruby_stack_check): no check if using sigaltstack.
...
* 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.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20372 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-27 06:05:07 +00:00
nobu
4d6d0a933e
* 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/trunk@20346 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-24 15:08:24 +00:00
nobu
5136031055
* thread.c (rb_barrier_wait): gets rid of recursive deadlock.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20230 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-13 02:31:16 +00:00
nobu
31f16d7729
* 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/trunk@20229 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-12 21:08:47 +00:00
nobu
99cd3c512b
* 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/trunk@20223 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-11 18:28:47 +00:00
nobu
641f43de97
* thread_pthread.c (thread_timer): checks working flags again.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20160 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-08 15:31:05 +00:00
nobu
5732566f4d
* thread.c (rb_thread_stop_timer_thread): terminates timer thread
...
immediately.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20117 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-06 13:21:26 +00:00
nobu
88a4f33121
* 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/trunk@20102 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-03 16:56:49 +00:00
nobu
860fad971d
* thread.c (blocking_region_{begin,end}): declared as inline.
...
* 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-26 09:01:23 +00:00
matz
22c8e88b41
* thread.c (rb_thread_wait_fd_rw): should not block by select if
...
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-10-08 23:49:22 +00:00
nobu
f8718692a2
* thread.c (thlist_signal): clears the woken thread if nothing woke.
...
* 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 08:02:07 +00:00
nobu
18684d9f7c
* include/rubysig.h: old macros for backward compatibility.
...
* 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-26 00:47:18 +00:00
ko1
c431879a68
* thread.c (rb_thread_blocking_region): fix typo in a document.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19479 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-23 08:58:13 +00:00
ko1
64c35be42c
* thread.c (rb_thread_blocking_region): write a document
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19478 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-23 08:51:33 +00:00
ko1
b9a12116fb
* thread.c, include/ruby/intern.h (rb_thread_interrupted): added.
...
* 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 08:17:17 +00:00
ko1
8cd252ac6f
* common.mk: clean up
...
- 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-23 00:20:28 +00:00
ko1
f0bf74a07b
* iseq.c (iseq_data_to_ary): make it static.
...
* 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 18:23:27 +00:00
ko1
ca253f40db
* thread.c (rb_thread_critical): removed.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19144 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-04 17:41:40 +00:00
ko1
80843ea156
* thread.c (rb_thread_check_trap_pending): added for compatibility.
...
* 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 12:00:24 +00:00
nobu
c5bf9ceef6
* vm_core.h (struct rb_vm_struct): replaced signal staff with trap
...
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-09-04 04:22:04 +00:00
akr
94f421c9c0
fix a typo.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18988 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-31 08:18:11 +00:00
ko1
ca6a8b1e2c
* include/ruby/intern.h: rename RB_UBF_DFL to
...
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-31 07:44:24 +00:00
nobu
5f9c188d97
* include/ruby/ruby.h (rb_intern_const): tiny optimization.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18653 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-16 00:20:31 +00:00
nobu
914969a040
* thread.c (rb_thread_priority_set): get rid of C99 feature.
...
* 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-14 05:56:51 +00:00
ko1
abfd87c230
* thread.c (rb_thread_execute_interrupts): switch event
...
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 21:26:49 +00:00
ko1
8f1e7a37e5
* thread.c (rb_thread_check_ints): added. please note that
...
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
2008-08-13 08:21:24 +00:00
ko1
16612b360b
* thread.c, vm_core.h: add manual priority support
...
using time slice. if you enable USE_NATIVE_THREAD_PRIORITY
macro, this mechanism is ignored. [ruby-dev:33124]
* thread_pthread.c, thread_win32.c: ditto.
* test/ruby/test_thread.rb: fix test parameter.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18570 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-13 07:53:35 +00:00
nobu
3af2559d17
* thread.c (thread_start_func_2): propagates fatal error and system
...
exit to the main thread.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18381 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-05 21:55:23 +00:00
nobu
ea79b2360a
* thread.c (rb_mutex_unlock_all): mutex is no longer a ruby object.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18278 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-30 16:25:46 +00:00
nobu
807fcf9d13
* win32/win32.c (rb_w32_select): recalc the rest of timeout for each
...
iterations. [ruby-core:18015]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18262 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-30 08:48:31 +00:00
usa
a73ba1def7
* thread_win32.[ch] (cond_every_entry, rb_thread_cond_struct): reverted
...
r18239 because r18245 made the changes unnecessary.
* thread.c (rb_mutex_struct): define after including thread_{pthread,
win32}.c.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18248 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-28 12:27:43 +00:00
mame
8d56defa55
* vm_core.h: move the definition of struct rb_mutex_struct.
...
* thread.c: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18245 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-28 11:17:43 +00:00
mame
13e0d5bc91
* thread.c (mutex_unlock): fix typo.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18244 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-28 09:59:12 +00:00
mame
d76ab40bea
* vm_core.h, thread.c: It is now prohibited to use Data_Get_Struct in
...
*_free against an object that is going to be free'ed. So, change type
of thread_t#keeping_mutexes from VALUE to mutex_t.
* vm.c: remove mark to keeping_mutexes.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18235 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-27 15:20:01 +00:00
ko1
60be3dc560
* include/ruby/ruby.h: add a type T_DEFERRED.
...
* gc.c: fix deferred finalizer system. finalize processes of
T_DATA and T_FILE are executed after gc process.
And fix to use BUILTIN_TYPE() instead of seeing flag.
* thread.c, vm_core.h: add RUBY_VM_SET_FINALIZER_INTERRUPT()
and check intterupt_flag at rb_thread_execute_interrupts().
* thread.c (mutex_mark): fix to mark next_mutex.
* vm.c (rb_thread_mark): fix to mark keeping_mutexes.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18231 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-27 05:59:32 +00:00
nobu
47e3f4e1ae
* thread.c (thread_start_func_2): wake up joining threads.
...
* thread.c (sleep_forever, sleep_timeval): return when interrupted.
[ruby-dev:35542]
* thread.c (timer_thread_function): restore main thread status.
[ruby-core:17270]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18094 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-16 19:19:36 +00:00
nobu
f3fcd2e4a0
* io.c (rb_io_wait_readable, rb_io_wait_writable): check if the file
...
descriptor is closed.
* thread.c (rb_thread_wait_fd_rw): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18027 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-11 11:51:39 +00:00
ko1
df91d39c94
* thread.c (thread_create_core): fix GC problem.
...
[ruby-core:17669]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18014 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-10 15:58:07 +00:00
nobu
3b9329e984
* thread.c (rb_thread_wait_for): fixed variable name.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17986 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-10 03:42:02 +00:00
nobu
7ad9faa528
* thread.c (rb_thread_wait_for): wait until timed out only when
...
sleeping with timeout.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17984 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-10 03:09:23 +00:00
nobu
a14682906f
* thread.c (sleep_forever): wait until timed out. [ruby-core:17270]
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-09 13:41:19 +00:00
nobu
a2ec2f8b59
* configure.in (rb_cv_va_args_macro): check for __VA_ARGS__.
...
* thread.c (thread_debug): show source name and line if possible.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17971 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-09 11:18:52 +00:00
nobu
a534e39a87
* thread_{pthread,win32}.c (rb_thread_create_timer_thread): needs more
...
stack for debug.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17970 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-09 09:17:09 +00:00
mame
91c07a5ac6
* thread.c (rb_set_coverages, rb_reset_coverages): enable and disable
...
coverage measurement.
* thread.c (rb_get_coverages): rename and move from vm.c.
* vm.c (rb_vm_get_coverages): ditto.
* iseq.c (prepare_iseq_build): ditto.
* thread.c (clear_coverage): ditto.
* parse.y (coverage): ditto.
* ext/coverage/coverage.c: use above functions, add new method
Coverage.start and fix rdoc .
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17961 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-08 15:13:22 +00:00