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 | ac17da0f60d9bd0168128a2af6729ee210c36687 (patch) | |
| tree | da88b4389e0df8385407695139d7a4d228381cec /gc.c | |
| parent | 59bd3fda628636815964d9d39f45b941c1a56ade (diff) | |
| download | ruby-ac17da0f60d9bd0168128a2af6729ee210c36687.tar.gz ruby-ac17da0f60d9bd0168128a2af6729ee210c36687.tar.xz ruby-ac17da0f60d9bd0168128a2af6729ee210c36687.zip | |
* 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: http://svn.ruby-lang.org/repos/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 |
