summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-07-09 16:19:13 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-07-09 16:19:13 +0000
commit96815f1ebe945a802ca2e35a1bb6e3b564339732 (patch)
tree6ab8921694d8207b6758823f3a38157701cfb3c7 /gc.c
parent996ff90744d79b60ef40a03d16bc185e64d1b5af (diff)
* symbol.c: remove rb_gc_mark_symbols().
fstrings refered by static symbols and pinned dynamic symbols are registerd by rb_gc_register_mark_object(). frstring refered by dynamic symbols (not pinned symbols) are refered from global_symbols.dsymbol_fstr_hash (Hash object). Note that fstrings refered from dynamic symbols must live loger than symbol objects themselves because rb_gc_free_dsymbol() uses fstring to remove from symbol tables. This is why we can not mark fstrings from dynamic symbols. This technique reduces root objects for GC marking. * gc.c (gc_mark_roots): ditto. * internal.h: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46772 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c9
1 files changed, 0 insertions, 9 deletions
diff --git a/gc.c b/gc.c
index fd84749dd5..23b1e075f4 100644
--- a/gc.c
+++ b/gc.c
@@ -4230,15 +4230,6 @@ gc_mark_roots(rb_objspace_t *objspace, int full_mark, const char **categoryp)
MARK_CHECKPOINT("machine_context");
mark_current_machine_context(objspace, th);
- MARK_CHECKPOINT("symbols");
-#if USE_RGENGC
- objspace->rgengc.parent_object_is_old = TRUE;
- rb_gc_mark_symbols(full_mark);
- objspace->rgengc.parent_object_is_old = FALSE;
-#else
- rb_gc_mark_symbols(full_mark);
-#endif
-
MARK_CHECKPOINT("encodings");
rb_gc_mark_encodings();