diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-09-15 10:38:58 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-09-15 10:38:58 +0000 |
commit | 9ab5e3f7e5cb5417937f06c48311b2709edee221 (patch) | |
tree | e23f2ed77d0b126c051439bc867bb445bd99c9bc /gc.c | |
parent | 524b33b1fd0aec2e5b889295197a946c9472867a (diff) | |
download | ruby-9ab5e3f7e5cb5417937f06c48311b2709edee221.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.c | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -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) |