summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-02-08 09:18:04 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-02-08 09:18:04 +0000
commit10f884d85a379d46b6155733d2aaded32f731bcb (patch)
tree83e85fb014e4165f543f01d42deea6c1f00b45c7 /gc.c
parentab65e3df29b8915cbf6c09ac3f8617b6392e3eb8 (diff)
* parse.y (parse_quotedwords): %w should allow parenthesis escape.
* parse.y (parse_qstring): %q should allow terminator escape. * re.c (rb_reg_equal): all option flags should be same to be equal. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_6@1166 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/gc.c b/gc.c
index 2e5bcf8871..f8cc4cff35 100644
--- a/gc.c
+++ b/gc.c
@@ -315,10 +315,7 @@ rb_data_object_alloc(klass, datap, dmark, dfree)
extern st_table *rb_class_tbl;
VALUE *rb_gc_stack_start = 0;
-#if defined(__GNUC__) && __GNUC__ >= 2
-__inline__
-#endif
-static int
+static inline int
is_pointer_to_heap(ptr)
void *ptr;
{
@@ -1053,6 +1050,7 @@ os_live_obj()
case T_CLASS:
if (FL_TEST(p, FL_SINGLETON)) continue;
default:
+ if (!p->as.basic.klass) continue;
rb_yield((VALUE)p);
n++;
}
@@ -1085,6 +1083,7 @@ os_obj_of(of)
case T_CLASS:
if (FL_TEST(p, FL_SINGLETON)) continue;
default:
+ if (!p->as.basic.klass) continue;
if (rb_obj_is_kind_of((VALUE)p, of)) {
rb_yield((VALUE)p);
n++;
@@ -1218,7 +1217,6 @@ run_final(obj)
}
if (finalizer_table && st_delete(finalizer_table, &obj, &table)) {
for (i=0; i<RARRAY(table)->len; i++) {
- printf("n finals=>%d\n", finalizer_table->num_entries);
args[0] = RARRAY(table)->ptr[i];
rb_protect(run_single_final, (VALUE)args, &status);
}
@@ -1247,7 +1245,6 @@ rb_gc_call_finalizer_at_exit()
if (FL_TEST(p, FL_FINALIZE)) {
FL_UNSET(p, FL_FINALIZE);
p->as.basic.klass = 0;
- printf("%p\n", p);
run_final((VALUE)p);
}
p++;