Граф коммитов

386 Коммитов

Автор SHA1 Сообщение Дата
ko1 0a71db8a74 * vm_core.h: remove lfp (local frame pointer) and rename
dfp (dynamic frame pointer) to ep (environment pointer).
  This change make VM `normal' (similar to other interpreters).
  Before this commit:
  Each frame has two env pointers lfp and dfp.  lfp points
  local environment which is method/class/toplevel frame.
  lfp[0] is block pointer.
  dfp is block local frame. dfp[0] points previous (parent)
  environment pointer.
  lfp == dfp when frame is method/class/toplevel.
  You can get lfp from dfp by traversing previous environment
  pointers.
  After this commit:
  Each frame has only `ep' to point respective enviornoment.
  If there is parent environment, then ep[0] points parent
  envioenment (as dfp).  If there are no more environment,
  then ep[0] points block pointer (as lfp).  We call such ep
  as `LEP' (local EP).  We add some macros to get LEP and to
  detect LEP or not.
  In short, we replace dfp and lfp with ep and LEP.
  rb_block_t and rb_binding_t member `lfp' and `dfp' are removed
  and member `ep' is added.
  rename rb_thread_t's member `local_lfp' and `local_svar' to
  `root_lep' and `root_svar'.
  (VM_EP_PREV_EP(ep)): get previous environment pointer.  This macro
  assume that ep is not LEP.
  (VM_EP_BLOCK_PTR(ep)): get block pointer.  This macro assume
  that ep is LEP.
  (VM_EP_LEP_P(ep)): detect ep is LEP or not.
  (VM_ENVVAL_BLOCK_PTR(ptr)): make block pointer.
  (VM_ENVVAL_BLOCK_PTR_P(v)): detect v is block pointer.
  (VM_ENVVAL_PREV_EP_PTR(ptr)): make prev environment pointer.
  (VM_ENVVAL_PREV_EP_PTR_P(v)): detect v is prev env pointer.
* vm.c: apply above changes.
  (VM_EP_LEP(ep)): get LEP.
  (VM_CF_LEP(cfp)): get LEP of cfp->ep.
  (VM_CF_PREV_EP(cfp)): utility function VM_EP_PREV_EP(cfp->ep).
  (VM_CF_BLOCK_PTR(cfp)): utility function VM_EP_BLOCK_PTR(cfp->ep).
* vm.c, vm_eval.c, vm_insnhelper.c, vm_insnhelper.h, insns.def:
  apply above changes.
* cont.c: ditto.
* eval.c, eval_intern.h: ditto.
* proc.c: ditto.
* thread.c: ditto.
* vm_dump.c: ditto.
* vm_exec.h: fix function name (on vm debug mode).



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36030 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-11 03:14:59 +00:00
naruse 190d319dab * thread.c (vm_living_thread_num): suppress a warning.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35883 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-06-03 10:47:45 +00:00
nobu b0dd250dc9 use RB_TYPE_P() instead of comparison of TYPE()
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35763 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-05-23 07:13:21 +00:00
yugui 82983e834d * thread.c, thread_pthread.c: Moved pthread-specific preprocessor
hacks to thread_pthread.c


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35674 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-05-17 03:54:50 +00:00
yugui 76bc2d1ed7 Imports Ruby's port to NativeClient (a.k.a NaCl).
Patch by Google Inc. [ruby-core:45073].

* configure.in (RUBY_NACL): New M4 func to configure variables for
  NaCl.
  (RUBY_NACL_CHECK_PEPPER_TYPES): New M4 func to check the old names
  of Pepper interface types.
  (BTESTRUBY): New variable to specify which ruby should be run on
  "make btest". NaCl can run the built binary by sel_ldr, but it need
  rbconfig.rb. So this variable is distinguished from $MINIRUBY.
  
* thread_pthread.c: Disabled some features on NaCl.

* io.c: ditto.

* process.c: ditto.

* signal.c: ditto.

* file.c: ditto.

* missing/flock.c: ditto.

* nacl/pepper_main.c: An example implementation of Pepper application
  that embeds Ruby.

* nacl/example.html: An example of web page that uses the Pepper
  application.

* nacl/nacl-config.rb: Detects variants of NaCl SDK.

* nacl/GNUmakefile.in: Makefile template for NaCl specific build
  process.

* nacl/package.rb: script for packaging a NaCl-Ruby embedding
  application. 

* nacl/reate_nmf.rb: Wrapper script of create_nmf.py

* dln.c (dln_load): Added a hack to call on NaCl.

* util.c (ruby_getcwd): Path to the current directort is not available
  on NaCl.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35672 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-05-17 02:48:59 +00:00
naruse cc08e95b20 Revert r35622.
It breaks bootstraptest/test_exception.rb:388.

"* thread.c (rb_threadptr_execute_interrupts_common): th->errinfo is"

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35623 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-05-11 15:24:27 +00:00
naruse 38d3b013b7 * thread.c (rb_threadptr_execute_interrupts_common): th->errinfo is
not Fixnum, but exception object.
  This causes test_signal_requiring of test/ruby/test_signal.rb fail
  if the sub process is killed on waiting IO in lex_io_gets in require
  itself, not sleep.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35622 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-05-11 14:03:40 +00:00
ko1 6978b8ca67 * vm_core.h (rb_thread_t#yielding): add a field.
* thread.c (rb_thread_schedule_limits): set th#yielding while
  release GVL to yield CPU time.
* thread.c (timer_thread_function): skip timer interrupt when
  th#yielding is true.  This patch fixes r35480.
* thread.c (rb_threadptr_execute_interrupts_common): revert
  a patch of r35480.
* ChangeLog: add an extended memo of r35480.
  http://bugs.ruby-lang.org/projects/ruby-trunk/wiki/R35480_ExtendedMemo



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35486 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-28 09:59:44 +00:00
naruse c746b6fa42 * thread.c (rb_threadptr_execute_interrupts_common):
handle timer_interrupt only on the first loop for the case to avoid
  the infinite loop like following case:
  * there is 2 Ruby threads (3 pthreads)
  (1) main thread is waiting at gvl_yield:112 (native_cond_wait)
  (2) sub thread works
  (3) sub thread waits at gvl_yield:133 (native_mutex_unlock)
  (4) main thread works
  (5) main thread goes to gvl_acquire_common
  (6) main thread call rb_wakeup_timer_thread
  (7) timer thread set timer interrupt to the main thread
  (8) main thread works
  (9) main thread waits at gvl_acquire_common:64 (native_cond_wait)
  (10) sub tread works
  (11) set sub thread as the current thread
  (12) run Ruby thread
  (13) ...100ms
  (14) sub thread goes to rb_threadptr_execute_interrupts_common
  (15) sub thread call rb_thread_schedule_limits
  (16) sub thread call gvl_release_common
  (17) sub threads waits at gvl_yield:121 (native_cond_wait)
  (18) main threads works
  (19) main thread back to gvl_yield
  (20) set main thread as the current thread
  (21) main thread call gvl_yield
  (22) main thread waits at gvl_yield:112 (native_cond_wait)
  As described above, the main thread can't escape from
  rb_threadptr_execute_interrupts_common.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35480 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-26 23:19:11 +00:00
mame 7320d83753 * thread.c (rb_check_deadlock): refine an error message of deadlock
detection.  [ruby-core:44336] [Bug #6288]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35449 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-04-23 15:27:00 +00:00
usa fea7a74ee3 * thread.c (rb_threadptr_execute_interrupts_common): use defined
TIME_QUANTUM_USEC instead of a magic number.  there is no meanings
  to use different values for checking interval of interruption and
  thread switching limits.
  cf. [Bug #6098]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35163 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-29 01:15:37 +00:00
nobu 6b1bae9641 * thread.c (rb_mutex_unlock_th): simplified.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34294 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-13 09:29:13 +00:00
nobu 8032371462 * thread.c (rb_barrier_waiting): fix potential overflows.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34293 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-13 09:25:54 +00:00
ayumin 966d1f8962 * thread.c: changed documentation for "thread-local" variables.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34198 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-01-03 07:01:15 +00:00
naruse 82ab1e189b * thread.c (rb_barrier_waiting): save the number of waiting threads
in RBASIC()->flags. [ruby-dev:45002] [Bug #5768]

* thread.c (rb_barrier_wait): increment and decrement around
  rb_mutex_lock, and use rb_barrier_waiting().

* thread.c (rb_barrier_release): use rb_barrier_waiting().

* thread.c (rb_barrier_destroy): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34163 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-30 22:25:16 +00:00
nobu 50c1985555 * load.c (load_unlock): release loading barrier and then remove it
from loading_table if it is not in-use.  [Bug #5754]
* thread.c (rb_barrier_release, rb_barrier_destroy): return
  whether any other threads are waiting on it.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34039 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-14 03:20:02 +00:00
nobu f2fff83e96 * load.c (load_lock): delete the loading barrier if it has been
destroyed.
* thread.c (rb_barrier_wait): return nil for recursive lock
  instead of false, to distinguish it from destroyed barrier.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34036 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-14 01:20:11 +00:00
nobu ab6c8910f4 * load.c (load_unlock): all threads requiring one file should
share same loading barrier, so it must be kept alive while those
  are waiting on it.  [ruby-core:41618] [Bug #5754]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34027 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-13 07:13:31 +00:00
akr 3d25acdccc * io.c, thread.c, ext/pty/pty.c, ext/fiddle/closure.c: use
__linux__ macro for consistency.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33761 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-15 11:09:47 +00:00
naruse b10c3136b0 * thread.c (do_select): fix cast, tv_sec is time_t.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33682 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-09 02:06:49 +00:00
nobu ac46d76ce8 * thread.c (rb_fd_rcopy): suppress warnings on mingw32.
* win32/win32.c (overlapped_socket_io, recvmsg, sendmsg, dupfd):
  ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33621 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-03 13:50:55 +00:00
nobu 8e6e8e6288 * use RB_TYPE_P which is optimized for constant types, instead of
comparison with TYPE.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33357 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-29 11:07:45 +00:00
kosaki 1bdf1a5c6f * thread_pthread.c: make native_fd_select().
* thread.c (do_select): remove #ifdef _WIN32. Instead, use
  native_fd_select() always.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33346 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-27 00:59:04 +00:00
kosaki 2cc5eeaf6c * thread.c (do_select): remove cygwin specific hack. It's layer
violation and too large hack.
* thread.c (cmp_tv, subtract_tv): removed.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33345 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-27 00:50:29 +00:00
kosaki d24e1dac2b * thread.c (rb_fd_rcopy): added an argument guard.
Patch by NAKAMURA Usaku. [Bug #5306] [ruby-core:39435]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33266 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-14 02:44:57 +00:00
kosaki 2c9375ba69 * thread.c (rb_thread_select): fix to ignore an argument
modification of rb_thread_fd_select().
  based on a patch by Eric Wong. [Bug #5306] [ruby-core:39435]
* thread.c (rb_fd_rcopy): New. for reverse fd copy.

* test/-ext-/old_thread_select/test_old_thread_select.rb
(test_old_select_false_positive): test for bug5306.

* ext/-test-/old_thread_select/old_thread_select.c (fdset2array):
  New. convert fdsets to array.
* ext/-test-/old_thread_select/old_thread_select.c (old_thread_select):
  return 'read', 'write', 'except' argument of rb_thread_select()
  to ruby script.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33256 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-12 11:36:06 +00:00
nobu 61b062ba6d * thread.c (rb_thread_select): fix a typo to initialize efds
properly.  [Bug #5299] [ruby-core:39380]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33231 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-09 01:22:06 +00:00
usa a34f81561d * thread.c (rb_thread_select): critical typo in r33117.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33132 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-30 15:49:55 +00:00
usa ee7d523631 * win32/win32.c, include/ruby/intern.h (rb_w32_fd_copy): implement
for rb_thread_select() in thread.c.  the use of rb_fd_copy() is
  introduced in r33117.
  [Bug #5229] [ruby-core:39102]

* thread.c (rb_thread_select): must call rb_fd_init() before using
  rb_fdset_t.  see the implementations of rb_fd_init()s if you want to
  know the reason.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33128 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-30 15:04:11 +00:00
kosaki 0cebfad20a * thread.c (rb_thread_select): rewrite by using
rb_thread_fd_select(). old one is EINTR unsafe.
  Patch by Eric Wong. [Bug #5229] [ruby-core:39102]

* test/-ext-/old_thread_select/test_old_thread_select.rb:
  a testcase for rb_thread_select().
* ext/-test-/old_thread_select/old_thread_select.c: ditto.
* ext/-test-/old_thread_select/depend: ditto.
* ext/-test-/old_thread_select/extconf.rb: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33117 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-30 00:33:05 +00:00
mame 54163e2b52 * thread.c (update_coverage): skip coverage count up if the current
line is out of the way.  rb_sourceline() is unreliable when source
  code is big.  [ruby-dev:44413]

* test/coverage/test_coverage.rb: add a test for above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33030 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-23 15:44:26 +00:00
mrkn 248d589b55 * thread.c: add a description for the behavior of select(2) on
Mac OS X 10.7 (Lion).

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33005 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-19 04:17:04 +00:00
mame 9752864b88 * thread.c (set_trace_func, thread_set_trace_func_m): reset tracing
state when set_trace_func hook is removed.  This is workaround patch
  to force to reset tracing state that is broken by continuation call.
  a patch from James M. Lawrence.  [Feature #4347] [ruby-core:34998]

* test/ruby/test_continuation.rb (class TestContinuation): add a test
  for above.  a patch from James M. Lawrence.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32597 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-21 11:09:52 +00:00
kosaki b9a13f4962 * thread_pthread.c (mutex_debug): use exit(EXIT_FAILURE) instad of
exit(1).
* thread_pthread.c (add_signal_thread_list): ditto.
* thread.c (rb_thread_call_with_gvl): ditto.
* util.c (Bug): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32494 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-10 08:29:46 +00:00
kosaki a119b9d146 * vm_core.h (typedef struct rb_vm_struct): create a new
'inhibit_thread_createion' field.
* thread.c (rb_thread_terminate_all): set inhibit_thread_creation.
* thread.c (thread_s_new): don't permit to create new thread
  if the VM is under destruction. Otherwise evil finalizer code
  can make SEGV. [Bug #4992][ruby-core:37858]

* bootstraptest/test_objectspace.rb: new test for this fix.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32492 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-10 07:46:00 +00:00
nobu 837e73ab6d * thread.c (cmp_tv, subtract_tv): no longer used on Win32.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32454 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-08 07:01:12 +00:00
kosaki 554a33d838 * thread.c (rb_mutex_unlock_all): folded into
rb_threadptr_unlock_all_locking_mutexes.
* thread.c (rb_threadptr_unlock_all_locking_mutexes) ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32447 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-08 04:50:25 +00:00
kosaki 8741274529 * thread.c (thread_unlock_all_locking_mutexes): rename to
rb_threadptr_unlock_all_locking_mutexes and remove static.
* vm_core.h: add rb_threadptr_unlock_all_locking_mutexes declaration.
* thread.c (thread_start_func_2): adjust the above rename.

* eval.c (ruby_cleanup): call rb_threadptr_unlock_all_locking_mutexes
  again after finalizer. [Bug #4988] [ruby-dev:44049]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32446 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-08 04:40:01 +00:00
kosaki c05fd75bef * thread.c (do_select): fix memory leak.
Patch by Eric Wong. Thank you! [Bug #4953] [ruby-core:37702]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32348 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-07-01 02:08:48 +00:00
ko1 fa4514e4fe * thread.c (rb_threadptr_check_signal): only wake up main thread.
* thread.c (rb_threadptr_execute_interrupts_common): check signal
  deliverly if it is main thread.
  fixes [ruby-dev:44005] [Ruby 1.9 - Bug #4950]
* bootstraptest/test_fork.rb: add a test for above.
* signal.c (rb_get_next_signal): skip if signal_buff is empty.
  (check signal_buff.size first)
* vm_core.h: remove unused variable rb_thread_t::exec_signal.
* thread.c (rb_thread_check_trap_pending): check
  rb_signal_buff_size() because rb_thread_t::exec_signal
  is no longer available.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32345 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-30 22:29:34 +00:00
ko1 065fe8b7a4 * vm_insnhelper.c (vm_call_bmethod): fix to hook call/return event
for methods defined by define_method().
* thread.c (call_trace_proc): Fix to skip if class is not given (0).
  Note that ID and Class object are passed for call/return event
  if the called method was defined by define_method().
  If you are author of tracer/profiler/debugger, this may be an
  important change.  You should check passed class as zero or
  non-zero instead of checking the event type.
* test/ruby/test_settracefunc.rb: add a test for above.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32334 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-30 13:34:53 +00:00
drbrain be9d096cc9 * thread.c (ruby_thread_s_pass): Fix typo.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32306 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-29 21:23:36 +00:00
kosaki 6f1ce28d62 * thread.c (rb_threadptr_execute_interrupts_common): remove
meaningless native_thread_yield(). It never close a race.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32304 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-29 17:55:03 +00:00
kosaki c90ff68d32 * thread.c (rb_thread_schedule_limits): minor optimization.
eliminate machine context saving when running time is enough small.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32303 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-29 17:43:58 +00:00
kosaki 5e15194561 * thread.c (rb_thread_schedule_rec): move interrupt_flag check to
rb_thread_schedule().
  And also rename to rb_thead_schedule_limits() and remove
  sched_depth argument. It's no longer called recursive.
* thread.c (rb_thread_schedule): add to check interrupt_flag as
  above explained.

* thread.c (rb_threadptr_execute_interrupts_rec): rename to
  rb_threadptr_execute_interrupts_common() and remove sched_depth
  argument. It's no longer called recursive.

* thread.c (rb_thread_sleep): adapt the renaming.
* thread.c (rb_threadptr_execute_interrupts): ditto.
* thread.c (rb_thread_execute_interrupts): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32302 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-29 17:36:00 +00:00
kosaki ed0876f66d * thread.c (thread_s_pass): change RDoc description and remove
a sample code. The actual implementaion never behave as explained by
  an example. It's a documentation bug.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32301 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-29 16:34:51 +00:00
kosaki 3a9117011f * thread.c (rb_thread_stop): change RDoc sample code. The old
example is buggy and may cause deadlock. The patch is
  suggested by Heesob Park <phasis@gmail.com>. Thank you!
  [Bug #3606][ruby-core:31454]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32300 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-29 15:55:44 +00:00
kosaki b3ad7b9ea1 * thread.c (rb_thread_wakeup): change RDoc sample code. The old
example is buggy and may not display anything by a race.
  The patch is suggested by Heesob Parrk <phasis@gmail.com>.
  Thank you! [Bug #3606][ruby-core:31454]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32299 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-29 15:51:54 +00:00
kosaki b07b51f7fc * thread.c (rb_thread_run): change RDoc. The old example is buggy
and may cause deadlock. The patch is suggested by Heesob Park
  <phasis@gmail.com>. Thank you! [Bug #3606][ruby-core:31454]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32298 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-29 15:47:24 +00:00
nahi 4a42dda482 * thread.c (rb_thread_local_aref): RDoc fix. Thread#[] example
had a race. See #4480.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32260 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-27 20:09:59 +00:00