Commit graph

883 commits

Author SHA1 Message Date
shyouhei
fe9c4e615b merge revision(s) 20578:
* 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_7@22442 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-19 08:19:34 +00:00
shyouhei
79c3f54d78 merge revision(s) 20225:
* 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_7@22205 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-10 11:01:59 +00:00
shyouhei
d896aedf3d merge revision(s) 20214:
* 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_7@22201 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-02-10 10:41:23 +00:00
shyouhei
8e7303ae4e merge revision(s) 19690:
* 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_7@21857 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-28 13:54:21 +00:00
shyouhei
78c5478af8 merge revision(s) 18485:
* 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_7@21585 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-16 02:00:48 +00:00
shyouhei
3c848f79b7 merge revision(s) 18463:
* 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_7@21524 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-15 05:40:26 +00:00
shyouhei
46e4dcf09d merge revision(s) 18355:
* 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_7@21359 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-07 01:12:20 +00:00
shyouhei
7e57588677 merge revision(s) 18316,18319:
* rubysig.h (CHECK_INTS): gives the chance to perform to deferred
	  finalizers before explicit GC.start or the process termination.
	  [ruby-core:18045]
	* 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_7@21334 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-05 02:16:18 +00:00
shyouhei
d1911459ae merge revision(s) 17833:17837:
* gc.c (Init_GC): fix syntax error.
	* 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_7@18327 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-04 03:24:26 +00:00
shyouhei
c14831d7f1 merge revision(s) 17832:
* 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_7@17930 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-07 06:17:24 +00:00
shyouhei
313a909418 merge revision(s) 17636:
* 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_7@17717 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-29 12:41:36 +00:00
shyouhei
716ed3d630 merge revision(s) 17581:
* 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_7@17696 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-29 09:31:47 +00:00
shyouhei
b53240a526 merge revision(s) 17547:
* 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_7@17680 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-29 09:20:47 +00:00
knu
f072d4e34a Merge from ruby_1_8.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@16719 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-31 11:44:49 +00:00
knu
c4f26e46db Merge from ruby_1_8.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@16636 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-27 10:07:07 +00:00
knu
c46c73c7a2 Merge from ruby_1_8.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@16606 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-26 03:12:58 +00:00
knu
35ec34fa2f Merge from ruby_1_8, including r16205.
Note that passing a block to a Proc is experimental and partly broken.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@16605 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-26 03:08:26 +00:00
knu
fa0c521a21 Merge from ruby_1_8.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@16578 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-24 18:16:10 +00:00
knu
072673ee41 Merge from ruby_1_8.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@16575 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-24 17:49:34 +00:00
knu
280f8df370 Merge from ruby_1_8.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@16539 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-22 16:07:42 +00:00
knu
ab3d450a54 Merge from ruby_1_8.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@16521 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-22 03:31:43 +00:00
knu
b524523217 Merge from ruby_1_8.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@16511 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-21 17:27:56 +00:00
knu
8480bcc8d5 Merge -r16241:16456 from ruby_1_8.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@16458 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-18 15:02:36 +00:00
knu
32378c5abe Merge r16206 and r16239 from ruby_1_8.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@16457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-18 14:48:15 +00:00
knu
74efef0be8 Merge from ruby_1_8.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@16193 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-25 06:51:21 +00:00
knu
a47dfe2763 Merge from ruby_1_8.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@16166 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-22 17:29:39 +00:00
knu
7f6df101ca Merge from ruby_1_8.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@16127 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-21 09:43:44 +00:00
knu
09f5560c57 Merge everything from ruby_1_8.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@16084 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-19 11:45:39 +00:00
kazu
3be6ebc5ce * eval.c (method_receiver, method_name, method_owner): New
methods; backported from 1.9. bug#19007


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@16039 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-15 10:07:59 +00:00
knu
badb865567 * enumerator.c (rb_eStopIteration), eval.c (rb_f_loop), ruby.h:
Add a new exception class StopIteration, which breaks Kernel#loop
  iteration when raised; backported from 1.9.

* enumerator.c (enumerator_next, enumerator_rewind): Implement
  #next and #rewind using the "generator" library.

* lib/generator.rb: Implement Enumerable::Enumerator#next and
  #rewind.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@15954 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-10 10:52:50 +00:00
knu
e6de1a384e * eval.c (rb_obj_method, rb_proc_call), intern.h: Export.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@15932 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-09 10:47:13 +00:00
matz
7bd34cdb70 * eval.c (EXEC_TAG): remove unnecessary FLUSH_REGISTER_WINDOWS for
better performance on SPARC.  [ruby-core:16159]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@15927 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-08 02:13:25 +00:00
nobu
ba570c7378 * configure.in (RUBY_SETJMP, RUBY_LONGJMP, RUBY_JMP_BUF): prefers
__builtin_setjmp, _setjmp over setjmp and sigsetjmp.
  [ruby-core:16023], [ruby-core:16086]

* configure.in (--with-setjmp-type): new option to override the
  default rule in the above.

* eval.c (ruby_setjmp, ruby_longjmp), gc.c (rb_setjmp),
  node.h (rb_jmpbuf_t): use RUBY_SETJMP, RUBY_LONGJMP and
  RUBY_JMP_BUF.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@15870 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-03-31 17:58:14 +00:00
knu
058c981311 * eval.c (rb_eval): Call trace hook for if expression after the
condition has been evaluated, not before; submitted by Rocky
  Bernstein in #18722.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@15833 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-03-24 11:09:51 +00:00
nobu
6017f19422 * eval.c (rb_call0): yields the last executed node line number at
return event.  [ruby-core:15855]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@15759 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-03-12 15:37:22 +00:00
nobu
9041dfdefc * eval.c, gc.c (setjmp): sigsetjmp is a macro on cygwin.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@15151 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-21 03:50:14 +00:00
nobu
475449aa18 * configure.in (sigsetjmp): check if available.
* eval.c, gc.c (setjmp): do not use _setjmp if sigsetjmp is available.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@15124 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-19 02:21:55 +00:00
nobu
5dd6a853ed * eval.c (eval): check if backtrace is empty. [ruby-core:15040]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@15054 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-14 18:41:44 +00:00
nobu
0d7451ba82 * eval.c (rb_define_alloc_func, rb_undef_alloc_func): should
define/undef on a signleton class.  [ruby-core:09959]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@15005 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-01-12 09:27:48 +00:00
nobu
a953db445d * eval.c (error_print): put newline unless multiple line message ends
with a newline.  [ruby-dev:32429]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@14086 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-02 13:43:47 +00:00
nobu
58721916bc * eval.c (rb_alias): do not call hook functions until initialization
finishes.  [ruby-talk:279538]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@13957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-18 05:03:50 +00:00
matz
ac7497416d * eval.c (remove_method): should not remove undef place holder.
[ruby-dev:31817]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@13586 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-10-01 13:44:21 +00:00
nobu
02da16b167 * eval.c, intern.h, ext/thread/thread.c: should not free queue while
any live threads are waiting.  [ruby-dev:30653]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@13476 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-09-20 18:05:40 +00:00
matz
9a19613e43 * eval.c (mnew): should preserve noex as safe_level.
* eval.c (rb_call0): tighten security check condition..

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@13115 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-08-20 08:28:04 +00:00
nobu
f47618f89b * eval_error.ci (get_backtrace): check the result more.
[ruby-dev:31261] [ruby-bugs-12398]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@12815 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-19 10:24:17 +00:00
nobu
b6ddf55de9 * eval.c (rb_interrupt): suppress a gcc's officious warning.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@12714 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-07-06 06:22:59 +00:00
nobu
2edae81a18 * eval.c (ruby_cleanup): return EXIT_FAILURE if any exceptions occured
in at_exit blocks.  [ruby-core:11263]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@12568 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-18 04:52:59 +00:00
nobu
93e93af5c0 * eval.c (rb_kill_thread): renamed in order to get rid of conflict
with a BeOS system function.  [ruby-core:10830]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@12530 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-06-12 20:46:23 +00:00
nobu
22b9c0a4db * eval.c (rb_eval): get rid of SEGV at ZSUPER in a block
[ruby-dev:30836]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@12410 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-05-29 20:16:35 +00:00
nobu
390d25f0f5 * eval.c (thread_timer): timer thread should not receive any signals.
submitted by Sylvain Joyeux.  [ruby-core:08546]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@12409 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-05-29 19:28:25 +00:00