aboutsummaryrefslogtreecommitdiffstats
path: root/gc.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-09-15 10:38:58 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-09-15 10:38:58 +0000
commitabbd388431b570395db0806ebbb4626c86cfd973 (patch)
treee23f2ed77d0b126c051439bc867bb445bd99c9bc /gc.c
parent70b2af3b211f9746a5f9fe6bd76cc0fff3fbe2b0 (diff)
downloadruby-abbd388431b570395db0806ebbb4626c86cfd973.tar.gz
gc.c: define objspace functions always
* gc.c (rb_objspace_alloc, rb_objspace_free): define always regardless ENABLE_VM_OBJSPACE, and free heap pages. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51867 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/gc.c b/gc.c
index 9fc3549df4..2b844479e1 100644
--- a/gc.c
+++ b/gc.c
@@ -1256,11 +1256,14 @@ RVALUE_WHITE_P(VALUE obj)
--------------------------- ObjectSpace -----------------------------
*/
-#if defined(ENABLE_VM_OBJSPACE) && ENABLE_VM_OBJSPACE
rb_objspace_t *
rb_objspace_alloc(void)
{
+#if defined(ENABLE_VM_OBJSPACE) && ENABLE_VM_OBJSPACE
rb_objspace_t *objspace = calloc(1, sizeof(rb_objspace_t));
+#else
+ rb_objspace_t *objspace = &rb_objspace;
+#endif
malloc_limit = gc_params.malloc_limit_min;
return objspace;
@@ -1303,9 +1306,11 @@ rb_objspace_free(rb_objspace_t *objspace)
objspace->eden_heap.pages = NULL;
}
free_stack_chunks(&objspace->mark_stack);
+#if !(defined(ENABLE_VM_OBJSPACE) && ENABLE_VM_OBJSPACE)
+ if (objspace == &rb_objspace) return;
+#endif
free(objspace);
}
-#endif
static void
heap_pages_expand_sorted(rb_objspace_t *objspace)
@@ -3662,7 +3667,6 @@ pop_mark_stack_chunk(mark_stack_t *stack)
stack->index = stack->limit;
}
-#if (defined(ENABLE_VM_OBJSPACE) && ENABLE_VM_OBJSPACE) || (RGENGC_CHECK_MODE >= 4)
static void
free_stack_chunks(mark_stack_t *stack)
{
@@ -3675,7 +3679,6 @@ free_stack_chunks(mark_stack_t *stack)
chunk = next;
}
}
-#endif
static void
push_mark_stack(mark_stack_t *stack, VALUE data)