Commit graph

262 commits

Author SHA1 Message Date
naruse
ee3e66e7a6 Merged r22308. [ruby-dev:39637]
* hash.c (rb_hash): always return a fixnum value because a return
  value of rb_hash may be used as a hash value itself and bignums have
  no unique VALUE.

* test/ruby/test_hash.rb: add a test for above.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@25661 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-05 12:22:24 +00:00
naruse
60a40ecaf6 * gc.c (rb_obj_id): a Fixnum which is beyond signed long
was converted to a Bignum in calculating its hash.
  [ruby-dev:39637]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@25660 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-11-05 11:56:11 +00:00
nobu
3f0d0b9398 * *.[chy]: removed trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@25430 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-10-22 01:00:18 +00:00
nobu
d380745cc3 * gc.c (gc_sweep): makes new room if object space is full of
finalized objects and has no free objects.  [ruby-dev:39201]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@24713 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-30 06:12:37 +00:00
nobu
eac8433968 * gc.c: removed garbage spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@24712 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-08-30 05:51:13 +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
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
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
knu
e8b0f17319 * array.c (ary_resize_capa): Remove an unused function.
* array.c, bignum.c, dir.c, enumerator.c, gc.c, io.c, numeric.c,
  object.c, re.c, string.c, struct.c: Mixing two styles is not a
  good thing.  Stick with the K&R style in 1.8.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@23052 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-23 12:07:23 +00:00
nobu
6965e73d5f * gc.c (run_final): frees zombies only. [ruby-dev:38171]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@22971 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-15 03:50:25 +00:00
nobu
476eee9d1e * gc.c (rb_gc_call_finalizer_at_exit): leave Thread objects
unfinalized.  [ruby-dev:38168]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@22961 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-14 19:19:22 +00:00
nobu
979da2675a * gc.c (run_final): calls free function. [ruby-core:22578]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@22882 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-03-11 03:12:11 +00:00
nobu
3ec5526268 * gc.c (define_final): cannot define finalizer for immediate
values.  [ruby-core:21500]

* gc.c (define_final): freezes or hides internal values.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@21727 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-22 03:18:16 +00:00
nobu
547f4725fa * gc.c (rb_gc_call_finalizer_at_exit): deffers IO finalization.
[ruby-dev:36646]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@21726 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2009-01-22 02:56:14 +00:00
nobu
707b0e65bd * gc.c (gc_mark_children): ignores T_ZOMBIE.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@19701 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-06 06:26:21 +00:00
nobu
3ae723875b * gc.c: renamed T_DEFERRED to T_ZOMBIE.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@19695 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-10-06 02:21:58 +00:00
nobu
abbe26c60f * gc.c (rb_mark_set): new function to mark keys.
* marshal.c (struct dump_arg, struct load_arg): added wrappers to mark
  data entries.  backport from trunk r13527,r13528,r13961,r16533.
  [ruby-dev:36082]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@19078 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-09-03 07:53:19 +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
2a876ff2c6 * gc.c (run_final): runs finalizers with the object terminated.
* gc.c (rb_gc_call_finalizer_at_exit): ObjectSpace::finalizers needs
  to scan whole object space, although deprecated.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@18397 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-06 20:05:48 +00:00
nobu
3190304db7 * gc.c (chain_finalized_object): deletes finalizers to be invoked from
finalizer_table.

* gc.c (rb_gc_call_finalizer_at_exit): warns when could not invoke
  finalizers.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@18394 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-06 12:25:47 +00:00
nobu
9d93480190 * gc.c (gc_sweep, obj_free, run_final): defer finalizers of IO and
Data.  [ruby-dev:35578]

* gc.c (rb_gc_call_finalizer_at_exit): self-referencing finalizers
  cannot be invoked.  [ruby-dev:35681]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@18392 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-06 11:52:11 +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
akr
5daa2e16f0 * gc.c (Init_GC): fix syntax error.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@17837 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-03 01:03:51 +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
suke
77ec4ead90 * gc.c: add rb_during_gc(). based on a patch from arton <artonx AT
yahoo.co.jp> at [ruby-dev:35313].   

* intern.h: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@17827 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-07-02 17:54:25 +00:00
nobu
2cec384adc * gc.c (rb_memerror): exit with EXIT_FAILURE instead of magic number.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@17144 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-13 05:24:40 +00:00
nobu
043222ba7c * gc.c (CHECK_STACK): STACK_LENGTH should be less than
STACK_LEVEL_MAX.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@17143 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-13 05:19:14 +00:00
akr
2f5aa44b8e * gc.c (os_obj_of): assure to not free the scanning heap.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@16872 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-06-07 08:12:44 +00:00
nobu
722ad8f214 * eval.c (search_method, remove_method, error_print, rb_alias)
(rb_eval, rb_rescue2, search_required, Init_eval, rb_thread_create),
  gc.c (rb_source_filename, Init_stack), io.c (rb_io_getline),
  parse.y (rb_id2name, rb_parser_free): suppress warnings.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@16507 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-21 14:29:55 +00:00
kazu
b54786ffbc * signal.c, gc.c: New methods: GC.stress, GC.stress=;
backported from 1.9. a patch from Tadashi Saito
  in [ruby-dev:34394] and bug#19000


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@16030 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-15 07:54:11 +00:00
nobu
9cee075559 * rubyio.h (rb_io_t): renamed from OpenFile.
* ruby.h (struct RHash), file.c, gc.c, io.c, ext/dl/dl.c,
  ext/io/wait/wait.c, ext/pty/pty.c, ext/readline/readline.c,
  ext/socket/socket.c: ditto.

* win32/win32.h: removed workaround for OpenFile.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@16025 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-15 03:35:55 +00:00
knu
125d830eb8 * array.c (rb_ary_collect_bang, rb_ary_select): Return an
enumerator if no block is given.

* dir.c (dir_each, dir_foreach): Return an enumerator if no block
  is given.

* enum.c (enum_partition, enum_sort_by): Ditto.

* gc.c (os_each_obj): Ditto.

* hash.c (rb_hash_delete_if, rb_hash_reject_bang, rb_hash_select,
  rb_hash_each_value, rb_hash_each_key, rb_hash_each_pair,
  env_each_key, env_each_value, env_each, env_each_pair,
  env_reject_bang, env_delete_if, env_select): Ditto.

* numeric.c (num_step, int_upto, int_downto, int_dotimes): Ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@16008 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-04-14 08:57:23 +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
nobu
f5c66ea482 * gc.c: removed trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@15754 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-03-12 03:49:55 +00:00
akr
c90f8f0918 * gc.c (STACK_LENGTH) [SPARC] : 0x80 offset removed. [ruby-dev:33857]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@15548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-02-19 09:37:10 +00:00
shyouhei
e959c8cdc3 * gc.c (rb_newobj): prohibit call of rb_newobj() during gc.
Submitted by Sylvain Joyeux [ruby-core:12099].

* ext/dl/ptr.c: do not use LONG2NUM() inside dlptr_free().
  Slightly modified fix bassed on a patch by Sylvain Joyeux
  [ruby-core:12099] [ ruby-bugs-11859 ] [ ruby-bugs-11882 ]
  [ ruby-patches-13151 ].


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@15429 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-02-11 07:52:13 +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
akr
1202462b6f * gc.c (stack_end_address): use local variable address instead of
__builtin_frame_address(0) to avoid SEGV on SunOS 5.11 on x86 with 
  gcc (GCC) 3.4.3 (csl-sol210-3_4-20050802).


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@14255 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-17 04:47:24 +00:00
matz
02914c8a16 * gc.c (id2ref): valid id should not refer T_VALUE nor T_ICLASS.
[ruby-dev:31911]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@13587 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-10-01 13:45:06 +00:00
nobu
7522f72276 * gc.c (os_obj_of, os_each_obj): hide objects to be finalized.
[ruby-dev:31810]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@13497 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-09-23 00:05:07 +00:00
knu
deeafa0e17 * env.h (SCOPE_CLONE): Introduce a new scope flag to prevent a
local_tbl region from getting freed many times; submitted by
  Chikanaga Tomoyuki <chikanag AT nippon-control-system.co.jp> in
  [ruby-dev:30460].

* eval.c (proc_invoke): Ditto.

* gc.c (obj_free): Ditto.

* parse.y (top_local_setup_gen): Ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@11964 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-03-03 07:28:54 +00:00
usa
5fbfcbac15 * gc.c (ruby_init_stack): decrease "stack level too deep" in Windows.
merge from trunk.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@11318 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-12-01 08:03:31 +00:00
matz
bb39b1ea1f * eval.c (rb_eval): fix commit miss. [ruby-dev:29707]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@11241 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-10-30 03:40:11 +00:00
matz
fc9099e7e3 * gc.c (gc_mark_children): NODE_POSTEXE holds Ruby VALUE.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@11008 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-09-24 14:29:57 +00:00
akr
53cec657a1 * common.mk, configure.in, defines.h, eval.c, gc.c, main.c,
numeric.c, ruby.h, ia64.s: backport IA64 HP-UX support.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@10827 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-09-01 18:47:11 +00:00
matz
74483e11f5 * gc.c (gc_sweep): typo fixed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@10772 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-08-25 08:12:46 +00:00
matz
390aa97698 * dln.c, eval.c, gc.c, regex.c, ruby.h: shut up AIX alloca
warning.  [ruby-dev:29191]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@10694 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-08-07 03:43:42 +00:00