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
mame
caf3933bab
* thread.c (rb_enable_coverages): hide coverage array by setting 0 to
...
klass during measurement.
* parse.y (coverage, yycompile0): ditto.
* iseq.c (prepare_iseq_build): use rb_hash_lookup instead of
rb_hash_aref.
* thread.c (rb_coverage_result): restore klass of coverage array and
return it.
* theaad.c (update_coverage): chcek whether its klass is 0.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-08 13:57:06 +00:00
nobu
6bbbf9889d
* thread.c (thread_initialize): NUM2INT() returns int.
...
* thread.c (timer_thread_function), thread_pthread.c (thread_timer),
thread_win32.c (timer_thread_func), thread_{pthread,win32}.c
(rb_thread_create_timer_thread): passing VM.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17892 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-05 13:22:29 +00:00
mame
ae3a03eb07
* include/ruby/intern.h: remove prototypes about coverage.
...
* iseq.c (prepare_iseq_build): add prototype.
* parse.y (coverage): ditto.
* thread.c (clear_coverage): ditto.
* thread.c (update_coverage): use rb_sourceline.
* thread.c (rb_get_coverages): rename and move to vm.c.
* vm.c (rb_vm_get_coverages): ditto.
* ext/coverage/coverage.c: add rdoc.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17859 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-03 14:27:43 +00:00
mame
f08581c7b6
* ext/coverage/coverage.c, ext/coverage/extconf.rb: eliminate
...
COVERAGE__ and introduce coverage.so instead. How to measure
coverage: (1) require "coverage.so", (2) require or load Ruby source
file, and (3) Coverage.result will return the same hash as COVERAGE__.
[ruby-dev:35324]
* thread.c (rb_enable_coverages): start coverage measurement by using
rb_add_event_hook.
* thread.c (rb_get_coverages): returns current results of coverage
measurement.
* include/ruby/intern.h: add prototype for above two functions.
* vm_core.h, vm.c: add field of coverages to rb_vm_t.
* insns.def (trace): remove special handling for COVERAGE__.
* iseq.c (prepare_iseq_build): switch COVERAGE__ to
rb_get_coverages().
* parse.y (coverage): ditto.
* thread.c (clear_coverage): ditto.
* lib/coverage.rb: use coverage.so instead of COVERAGE__.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17857 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-03 12:55:12 +00:00
mame
16519f1ff9
* thread.c (thread_initialize): NUM2INT returns long.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17856 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-03 12:21:11 +00:00
ko1
9a61579c16
* compile.h, insns.def: reduce insn operand of "trace".
...
* include/ruby/ruby.h: add RUBY_EVENT_COVERAGE event.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17785 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-01 18:13:22 +00:00
mame
5874de95e8
* Add coverage measurement constant COVERAGE__. This constant is not
...
for casual use. Usage: (1) assign {} to COVERAGE__, (2) require or
load Ruby source file, and (3) COVERAGE__["sourcefilepath"] will
return an array whose elements represent number of executions per
line of source code.
* vm_core.h: add field of coverage array to iseq.
* iseq.c (prepare_iseq_build): ditto.
* insns.def (trace): update coverage array.
* parse.y (coverage): create and initialize coverage array.
* compile.h (ADD_TRACE): add trace instruction to update covearge
array.
* thread.c (clear_coverage): delete coverage array when forking.
Otherwise, double count of coverage may occur.
* lib/coverage.rb: sample coverage measurement tool.
* error.c: distinguish explicitly between parse_in_eval and
mild_compile_error.
* load.c: ditto.
* vm_eval.c: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-01 16:55:30 +00:00
nobu
5669377a57
* iseq.c (COMPILE_OPTION_FALSE), time.c (timegm_noleapsecond),
...
thread.c (eKillSignal, eTerminateSignal),
missing/vsnprintf.c (BSD_vfprintf): constified.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17769 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-01 08:44:32 +00:00
akr
04739ba617
* string.c (rb_memhash): randomize hash to avoid algorithmic
...
complexity attacks.
(rb_str_hash): use rb_memhash.
* include/ruby/intern.h (rb_reset_random_seed): declared.
* thread.c (rb_thread_atfork): call rb_reset_random_seed.
* inits.c (rb_call_inits): call Init_RandomSeed at first.
* random.c (seed_initialized): defined.
(fill_random_seed): extracted from random_seed.
(make_seed_value): extracted from random_seed.
(rb_f_rand): initialize random seed at first.
(initial_seed): defined.
(Init_RandomSeed): defined.
(Init_RandomSeed2): defined.
(rb_reset_random_seed): defined.
(Init_Random): call Init_RandomSeed2.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17465 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-20 02:46:17 +00:00
mame
4394ffe521
* thread.c: try to remove false positive of deadlock detection (second
...
trial).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17451 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-19 18:02:40 +00:00
mame
4b645dc8f3
* thread.c, thread_win32.c, vm_core.h: try to remove false positive of
...
deadlock detection.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17435 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-19 14:18:46 +00:00
nobu
1723931102
* thread.c (thread_start_func_2): use PRIxVALUE to format a VALUE.
...
* thread.c (ruby_native_thread_p): removed unused declaration.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17367 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-16 14:56:14 +00:00
ko1
9ead0d771b
* vm_core.h, thread.c: rename global_interpreter_lock to
...
global_vm_lock.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17349 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-15 16:48:02 +00:00
nobu
fc3c60f608
* gc.h (STACK_UPPER): moved from gc.c
...
* thread.c, thread_{pthread,win32}.c (ruby_init_stack,
ruby_thread_init_stack): moved stack initialization from gc.c.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17155 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-14 02:59:19 +00:00
mame
5734e59aed
* thread.c (mutex_unlock): fix cond_notified consistency.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17113 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-12 14:33:07 +00:00
mame
6f5aaff73b
* thread.c, vm_core.h, vm.c, thread_pthread.c, thread_win32.c: add
...
deadlock detection. [ruby-dev:35044]
* bootstraptest/test_thread.rb: add tests for above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17110 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-12 13:01:38 +00:00
ko1
ed4139e39b
* include/ruby/intern.h, proc.c: revert rb_proc_call() and
...
create rb_proc_call_with_block() instaed.
* include/ruby/ruby.h, eval_jump.c, thread.c, vm_insnhelper.c:
rb_blockptr should not be exposed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17081 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-10 16:33:51 +00:00
mame
f2400eca0b
* include/ruby/ruby.h, vm_core.h: add a type rb_blockptr.
...
* vm_insnhelper.c (vm_yield_with_cfunc): vm_yield_with_cfunc receives
blockptr and passes it to iterating block.
* proc.c (rb_proc_call), include/ruby/intern.h: rb_proc_call receives
blockptr. "rb_proc_call(self, args, blockptr)" in C corresponds to
"self.call(*args, &block)" in Ruby.
* proc.c (proc_call): pass blockptr to block that is written in C.
* proc.c (curry): receive blockptr and pass it to original proc.
[ruby-core:15551]
* vm.c (invoke_block_from_c): fix for change of vm_yield_with_cfunc.
* thread.c (call_trace_proc), eval_jump.c (rb_call_end_proc): fix for
change of rb_proc_call.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17065 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-09 15:52:51 +00:00
nobu
5a647a3f5f
* include/ruby/ruby.h (CONST_ID): constant ID cache for non-gcc.
...
* *.c: no cache in init functions.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17053 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-09 09:25:32 +00:00
ko1
72ba13aa8e
* array.c, bignum.c, cont.c, dir.c, dln.c, encoding.c, enumerator.c,
...
enumerator.c (enumerator_allocate), eval_jump.c, file.c, hash.c,
io.c, load.c, pack.c, proc.c, random.c, re.c, ruby.c, st.c,
string.c, thread.c, thread_pthread.c, time.c, util.c, variable.c,
vm.c, gc.c:
allocated memory objects by xmalloc (ruby_xmalloc) should be
freed by xfree (ruby_xfree).
* ext/curses/curses.c, ext/dbm/dbm.c, ext/digest/digest.c,
ext/gdbm/gdbm.c, ext/json/ext/parser/parser.c,
ext/json/ext/parser/unicode.c, ext/openssl/ossl_cipher.c,
ext/openssl/ossl_hmac.c, ext/openssl/ossl_pkey_ec.c,
ext/sdbm/init.c, ext/strscan/strscan.c, ext/zlib/zlib.c:
ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17017 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-08 10:01:40 +00:00
mame
cbbc06dcf7
* eval.c (ruby_finalize_0): clear trace_func after executing END
...
procs.
* thread.c: fix typo.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16846 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-05 14:27:09 +00:00
mame
83b4c1c424
* thread.c (thread_set_trace_func_m): fix check for proc argument.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16841 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-05 11:24:40 +00:00
nobu
7c5e3348f7
* suppress warnings on cygwin, mingw and mswin.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16740 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-01 19:55:25 +00:00
nobu
075530a685
* suppress warnings with -Wwrite-string.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16716 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-31 09:28:20 +00:00
nobu
1b63d7bc92
* vm_core.h (struct rb_unblock_callback), thread.c
...
(set_unblock_function), thread_{pthread,win32}.c (native_sleep):
extracted from struct rb_thread_struct.
* thread.c (reset_unblock_function): not check interrupts at leaving
blocking region. [ruby-dev:34874]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16699 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-30 01:52:38 +00:00
nobu
bcb57421cb
* thread.c (rb_thread_execute_interrupts): delay interrupts during
...
raising exceptions. [ruby-dev:34855]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16651 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-27 12:53:51 +00:00
akr
14a97fd48a
* thread.c (thread_cleanup_func_before_exec): extracted from
...
thread_cleanup_func not to touch pthread data.
pthread_cond_destroy in forked process may cause deadlock on
Debian GNU/Linux Etch on x86, x86-64 and IA64.
this doesn't cause resource leak because the process will exec soon.
(terminate_atfork_before_exec_i): defined.
(rb_thread_atfork_before_exec): defined.
* include/ruby/intern.h (rb_thread_atfork_before_exec): declared.
* process.c (rb_exec_atfork): call rb_thread_atfork_before_exec
instead of rb_thread_atfork.
* io.c (popen_exec): call rb_thread_atfork_before_exec instead of
rb_thread_atfork.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16355 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-11 04:15:29 +00:00
matz
0f1baad5a3
* thread.c (timeofday): use monotonic clock. based on a patch
...
from zimbatm <zimbatm@oree.ch> in [ruby-core:16627].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16338 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-09 10:17:15 +00:00
akr
611e287498
* thread.c (rb_gc_save_machine_context): call FLUSH_REGISTER_WINDOWS
...
to mark the register stack from GC on another thread.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16328 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-08 06:59:03 +00:00
nobu
86afcfe402
* thread.c (rb_thread_key_p): thread local storage stores ID.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16318 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-07 21:27:34 +00:00
matz
98ad274974
* thread.c (rb_thread_key_p): should always convert symbol to ID.
...
[ruby-dev:34588]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16315 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-07 13:24:03 +00:00
nobu
87e4ad0a23
* io.c, signal.c, thread.c, thread_win32.c, include/ruby/intern.h:
...
suppress warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16204 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-26 09:36:35 +00:00
matz
707c50d341
* thread.c (rb_thread_stop_timer_thread): should clear
...
timer_thread_id after stopping it.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16136 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-22 04:26:44 +00:00
nobu
9c77076296
* thread.c (thread_join): remove the current thread from the join list
...
of the target thread.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16135 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-22 04:13:01 +00:00
nobu
31a060f7bd
* thread_pthread.c (lock_func): should not check interrupts in
...
blocking region. [ruby-dev:34378]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15990 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-13 09:52:29 +00:00
nobu
69352c0d4d
* thread.c (lock_func): optimized and checks for interrupt_flag.
...
based on a patch from Sylvain Joyeux in [ruby-Patches-19361] and
[ruby-Patches-19362].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15931 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-09 05:43:29 +00:00
nobu
d7b8efd872
* thread.c (rb_mutex_sleep): ensures to re-acquire at waking up.
...
[ruby-Patches-19361]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15928 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-08 12:36:42 +00:00
akr
0ef84dcefc
* io.c: IO.copy_stream implemented. [ruby-dev:33843]
...
* thread.c (rb_fd_select): new function.
* configure.in (sys/sendfile.h): check the header file.
(sendfile): check the function.
(pread): check the function.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15858 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-03-30 06:38:05 +00:00
matz
207b8292ba
* eval_method.c (rb_get_method_body): ent->method may be freed by
...
GC. [ruby-dev:31819]
* thread.c (remove_event_hook): should not access freed memory.
[ruby-dev:31820]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15654 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-03-01 03:36:33 +00:00
nobu
ecd35c0d96
* eval.c (stack_check): made flag per threads.
...
* thread.c (rb_thread_set_raised, rb_thread_reset_raised): prefixed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15625 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-02-28 04:52:01 +00:00
matz
4920980d17
* thread.c (thread_create_core): prohibit thread creation in the
...
frozen thread group. a patch in [ruby-dev:33176] from sheepman
<sheepman AT sheepman.sakura.ne.jp>.
* thread.c (thread_create_core): should inherit ThreadGroup from
the current thread.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15118 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-18 18:48:12 +00:00
nobu
3882b07c3a
* thread.c (thread_create_core): set thread group before creating
...
thread.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15115 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-18 14:49:43 +00:00
nobu
3a4bfbad09
* thread.c (thread_cleanup_func): ignore errors from destroying mutex
...
of dead thread. [ruby-core:15069]
* thread_pthread.c, thread_win32.c (native_thread_destroy): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15111 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-18 06:57:08 +00:00