nobu
072ccff04d
* eval.c (rb_thread_join), ext/thread/thread.c (wake_one): adjusts
...
targets of rest waiting threads to join. [ruby-core:23457]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@23432 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-05-15 08:33:52 +00:00
nobu
87d469b150
* eval.c, gc.c (_longjmp): never return. see [ruby-core:23241]
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@23316 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-05-01 04:12:40 +00:00
nobu
61c5c2e623
* eval.c (get_ts): use readtime clock. [ruby-dev:38354]
...
* eval.c (rb_thread_stop_timer): clear thread_init while locking.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@23305 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-04-28 14:05:07 +00:00
nobu
c35cb918f6
* eval.c (rb_thread_start_timer): guard condition was inverted.
...
[ruby-dev:38319]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@23268 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-04-24 05:55:16 +00:00
nobu
d09363d8c9
* eval.c (proc_invoke): shares dmethod scope local variables.
...
a patch from coderrr at [ruby-core:23050]
* gc.c (obj_free): do not free cloned scope local variables.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@23257 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-04-22 03:20:14 +00:00
nobu
0d6f4f3668
* eval.c (ruby_cleanup): the order of local variables on stack is
...
undefined. should use outermost VALUE for ruby_init_stack.
* gc.c (rb_stack_growup_p): returns stack grows up.
* gc.c (Init_stack, ruby_init_stack): allows volatile pointer.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@23209 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-04-19 05:31:58 +00:00
nobu
7a45568809
* eval.c (safe_mutex_lock): pthread_cleanup_push() must not be
...
inside parens.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@23202 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-04-18 10:44:55 +00:00
nobu
9e59bd2d0f
* eval.c (rb_thread_remove): stops timer thread unless other
...
threads exist. [ruby-core:18444]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@23201 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-04-18 09:25:55 +00:00
nobu
3175b6e7bb
* gc.c (Init_stack): use ruby_init_stack. [ruby-dev:34350]
...
* intern.h (Init_stack): make to call ruby_init_stack.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@23132 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-04-03 09:38:01 +00:00
nobu
92d6ce2e8d
------------------------------------------------------------------------
...
r15996 | nobu | 2008-04-14 12:52:27 +0900 (Mon, 14 Apr 2008) | 2 lines
* gc.c (Init_stack): use ruby_init_stack. [ruby-dev:34350]
------------------------------------------------------------------------
------------------------------------------------------------------------
r17036 | nobu | 2008-06-09 09:54:23 +0900 (Mon, 09 Jun 2008) | 2 lines
* include/ruby/intern.h (Init_stack): make to call ruby_init_stack.
------------------------------------------------------------------------
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@23127 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-04-03 04:52:48 +00:00
nobu
a1b9ce96e9
* eval.c (rb_eval): checks for interrupt, stack and finalizers too.
...
[ruby-dev:38208], [Bug #1329 ]
* eval.c (eval): replaces the message if frozen.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@23096 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-30 03:12:08 +00:00
nobu
19d95e8982
* eval.c (proc_arity): fixed rdoc. [ruby-core:18708]
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@22979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-16 06:33:04 +00:00
nobu
3b0bc50873
* eval.c (rb_thread_schedule): suppressed a warning.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@22978 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-16 06:31:37 +00:00
nobu
7e41cbbb49
* eval.c (stack_extend): suppressed a warning.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@22976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-16 06:30:54 +00:00
matz
694d70cace
* eval.c (rb_call0): should pass rest argument information even
...
when it's empty. [ruby-dev:38117]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@22939 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-13 16:14:40 +00:00
knu
5f7992aa35
* class.c (rb_singleton_class_clone): Qnil must be used for a null
...
class reference when we use NIL_P() to check class reference
validity. The bug was exposed by the spec test of Sequel.
* eval.c (ruby_init): Use NEW_CREF().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@22679 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-28 18:12:15 +00:00
nobu
1bcfe8bb74
* eval.c (rb_eval): needs to guard intermediate string objects.
...
based on a patch from Brent Roman <brent AT mbari.org> at
[ruby-core:22584].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@22674 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-28 09:05:59 +00:00
usa
5a31cfc885
* eval.c (rb_thread_schedule): mswin32 doesn't have F_GETFD, so check
...
with another method.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@22627 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-25 13:54:02 +00:00
akr
e509fb2c48
* eval.c (rb_thread_schedule): handle EBADF of select as well.
...
[ruby-core:21264]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@22299 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-14 09:58:46 +00:00
knu
c23f894d30
* proc.c (Init_Proc): add '===' operator to use procs in when
...
clause of the case statement. inspired by <http://www.aimred.com/news/developers/2008/08/14/unlocking_the_power_of_case_equality_proc/ >.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@21898 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-30 06:45:32 +00:00
nobu
e02ba9dc4a
* eval.c (Init_Cont): separated from Init_Thread() since
...
rb_provide() must be after Init_Array().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@21782 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-26 09:03:53 +00:00
nobu
2af5d793a8
* eval.c (Init_Thread): provides "continuation.so" for forward
...
compatibility.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@21778 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-26 05:15:03 +00:00
nobu
fd73d45833
* eval.c (rb_thread_start_0): must use ruby_longjmp instead of
...
longjmp.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@21444 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-12 04:40:48 +00:00
nobu
f1ef169861
* eval.c (TAG_THREAD): to start a new thread.
...
* eval.c (ruby_init, ruby_options, ruby_cleanup, rb_protect,
rb_load_protect, rb_thread_start_0): make thread anchor.
* eval.c (proc_alloc): clone proc object if klass is not Proc or
created in different thread.
* eval.c (rb_block_pass): call a function with a block. [new]
* eval.c (rb_thread_start_0): restore prot_tag before rewinding.
* eval.c (rb_thread_start_0): update curr_thread before raising
TAG_THREAD. [ruby-dev:25712]
* eval.c (rb_thread_start_1): outer block variables wasn't linked to
threads. fixed: [ruby-dev:25700]
* eval.c (rb_thread_start_1): initialize newly pushed frame.
fixed: [ruby-dev:25707]
* node.h (struct rb_thread): added anchor. backported r7954,
r7964, r7980, r7992, r8014 from trunk.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@21407 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-09 06:20:20 +00:00
nobu
65153acec1
* eval.c (stack_extend): streamlined rb_thread_restore_context()
...
to ensure O(1) time. based on a patch by Brent Roman <brent AT
mbari.org>.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@21354 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-06 09:34:55 +00:00
nobu
1a22daa462
* eval.c (cc_mark): frees the continuation's stack if its thread
...
is dead to avoid recursive gc that segfaults. [ruby-core:13889]
a patch by Brent Roman <brent AT mbari.org>.
* eval.c (rb_cont_check): checks for valid continuation instance.
* eval.c (rb_callcc): assigns th->thread before scope_dup() to
avoid segfaults if this scope_dup() triggers a gc pass.
a patch by Brent Roman <brent AT mbari.org>.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@21353 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-06 04:39:20 +00:00
akr
bfabd0a798
* eval.c (rb_thread_schedule): Don't change status of threads which
...
don't run next even if select notify readability/writability.
[ruby-core:20446]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@21165 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-29 08:05:52 +00:00
nobu
fb34f6652a
* eval.c (rb_yield_0): Qundef means no argument. [ruby-Bugs-22525]
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@20578 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-12-08 04:51:43 +00:00
nobu
e624b63367
* eval.c (yield_under): fixed initialization not being allowed in C90.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@20238 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-16 01:02:41 +00:00
nobu
cafb29479e
* eval.c (load_lock): makes circular require deadlock.
...
[ruby-core:19821]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@20225 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-11 18:49:45 +00:00
nobu
0be023cb6e
* eval.c (rb_feature_p): returns found feature name if loading.
...
[ruby-core:19798]
* eval.c (search_required): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@20214 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-11-11 14:54:14 +00:00
nobu
37a720e038
* eval.c (rb_mod_modfunc): method undefined in included module
...
may not have nd_body. [ruby-core:18738]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@19690 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-05 14:06:02 +00:00
matz
98183a08c7
* dln.c: newer BeOS support. a patch from Pete Goodeve
...
<pete.goodeve at computer.org> in [ruby-core:18712].
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@19424 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-19 00:32:22 +00:00
knu
6db402c258
* hash.c (rb_hash_set_default_proc): Add Hash#default_proc=;
...
submitted by Giuseppe Bilotta. #420
* eval.c (rb_obj_is_proc), intern.h: Export rb_obj_is_proc().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@18580 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-13 09:24:48 +00:00
matz
c27c68b8db
* class.c (clone_method): should copy cbase in cref as well.
...
[ruby-dev:35116]
* node.h (NEW_CREF): new NEW_ macro.
* eval.c (PUSH_CREF): use NEW_CREF().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@18485 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-11 05:42:31 +00:00
nobu
363cad3261
* gc.c (STACK_LEVEL_MAX, ruby_stack_length): returns size_t.
...
[ruby-core:18207]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@18463 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-09 23:56:17 +00:00
nobu
22af450ebc
* eval.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/branches/ruby_1_8@18355 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-04 06:04:57 +00:00
nobu
42ec1fa621
* eval.c (rb_thread_schedule): runs deferred finalizers.
...
* gc.c (gc_sweep): sets rb_thread_pending to run deferred finalizers.
* rubysig.h (CHECK_INTS): now checks rb_thread_pending even on
platforms where setitimer is not available. [ruby-core:18045]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@18319 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-02 07:08:18 +00:00
nobu
db391b5d66
* eval.c (rb_thread_value): missed to change at r17874. [ruby-core:17595]
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@17886 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-05 04:09:49 +00:00
nobu
cdd1d98ef2
* eval.c (rb_thread_join): new API.
...
* ext/thread/thread.c (wait_mutex, lock_mutex): wait until the locking
thread exits. [ruby-dev:34856]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@17874 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-04 11:31:35 +00:00
nobu
86c58b7813
* error.c (rb_exc_new3): keeps the given string itself.
...
* eval.c (Init_Proc), gc.c (Init_GC): freeze messages of preallocated
special exceptions also.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@17834 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-02 22:03:24 +00:00
nobu
a9d25a31ee
* eval.c (rb_longjmp): duplicate the thrown exception to set backtrace
...
if it was frozen. clear all raised flags.
* eval.c (stack_check): leave clearing flag to rb_longjmp.
* eval.c (rb_thread_set_raised, rb_thread_reset_raised): use generic
flags.
* eval.c (Init_Proc), gc.c (Init_GC): freeze preallocated special exceptions.
* gc.c (rb_memerror): use thread raised flag instead of static flag,
and raise nomem_error without backtrace if failed to make backtrace.
[ruby-dev:34724]
* gc.c (ruby_xmalloc): increase malloc_increase only if malloc
succeeds. failed malloc size can be huge. it may increase
malloc_limit too big which cause less GC and memory full.
(ruby_xrealloc): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@17832 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-02 21:17:31 +00:00
nobu
bf67d8a89b
* eval.c (PUSH_FRAME): suppress warnings.
...
* eval.c (arg_defined): constified.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@17831 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-02 20:11:53 +00:00
akr
d85fc22700
* eval.c (rb_obj_respond_to): use RTEST to test the result of
...
respond_to? method.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@17636 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-28 15:14:30 +00:00
matz
4bbdc4c4d5
* eval.c (rb_call0): wrong condition to check insecure method.
...
a patch from Keita Yamaguchi <keita.yamaguchi at gmail.com>.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@17581 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-26 08:50:47 +00:00
knu
2e8b16b48b
* eval.c (PUSH_FRAME, PUSH_CLASS): Add volatile to avoid a
...
possible optimization bug on OS X/PPC. This at least makes
build with gcc -O1 and `make test' pass.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@17547 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-23 11:01:00 +00:00
nobu
397ee1a315
* eval.c (rb_thread_select), string.c (str_gsub): suppress warnings.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@17070 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-10 04:40:40 +00:00
nobu
1378795e08
* suppress warnings with -Wwrite-string.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@16716 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-31 09:28:20 +00:00
knu
266be04a8d
* eval.c (rb_mod_module_exec, Init_eval): Add
...
Module#{module_exec,class_exec}.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@16630 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-27 07:03:21 +00:00
knu
42ef66d945
* eval.c (yield_under, yield_under_i, yield_args_under_i)
...
(specific_eval, rb_obj_instance_exec, Init_eval): Implement
Object#instance_exec(), a 1.9 feature.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@16601 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-26 01:13:53 +00:00