diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-02-27 08:04:32 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-02-27 08:04:32 +0000 |
commit | e5c5576aeb40eb593d02cb00174ae5a8256f19f6 (patch) | |
tree | da88b4389e0df8385407695139d7a4d228381cec /gc.c | |
parent | 780e1aa291d41e065f799e35e02543206f912b4f (diff) |
* string.c (str_new): need no MEMZERO().
* numeric.c (fix_gt): use rb_num_coerce_cmp() instead of
rb_num_coerce_bin.
* numeric.c (fix_ge, fix_lt, fix_le): ditto.
* numeric.c (flo_gt, flo_ge, flo_lt, flo_le): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3536 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r-- | gc.c | 27 |
1 files changed, 25 insertions, 2 deletions
@@ -562,7 +562,7 @@ rb_mark_tbl(tbl) } static int -mark_hashentry(key, value) +mark_keyvalue(key, value) VALUE key; VALUE value; { @@ -576,7 +576,7 @@ rb_mark_hash(tbl) st_table *tbl; { if (!tbl) return; - st_foreach(tbl, mark_hashentry, 0); + st_foreach(tbl, mark_keyvalue, 0); } void @@ -1246,6 +1246,18 @@ rb_gc_start() return Qnil; } +#if !defined(__human68k__) +static int +stack_growup_p(addr) + VALUE *addr; +{ + SET_STACK_END; + + if (STACK_END > addr) return Qtrue; + return Qfalse; +} +#endif + void Init_stack(addr) VALUE *addr; @@ -1255,6 +1267,17 @@ Init_stack(addr) rb_gc_stack_start = _SEND; #else if (!addr) addr = (VALUE *)&addr; + if (rb_gc_stack_start) { + if (stack_growup_p(addr)) { + if (rb_gc_stack_start > addr) + rb_gc_stack_start = addr; + } + else { + if (rb_gc_stack_start < addr) + rb_gc_stack_start = addr; + } + return; + } rb_gc_stack_start = addr; #endif #ifdef HAVE_GETRLIMIT |