[前][次][番号順一覧][スレッド一覧]

ruby-changes:39786

From: nobu <ko1@a...>
Date: Tue, 15 Sep 2015 19:39:16 +0900 (JST)
Subject: [ruby-changes:39786] nobu:r51867 (trunk): gc.c: define objspace functions always

nobu	2015-09-15 19:38:58 +0900 (Tue, 15 Sep 2015)

  New Revision: 51867

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=51867

  Log:
    gc.c: define objspace functions always
    
    * gc.c (rb_objspace_alloc, rb_objspace_free): define always
      regardless ENABLE_VM_OBJSPACE, and free heap pages.

  Modified files:
    trunk/ChangeLog
    trunk/gc.c
    trunk/vm.c
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 51866)
+++ ChangeLog	(revision 51867)
@@ -1,3 +1,8 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Tue Sep 15 19:38:55 2015  Nobuyoshi Nakada  <nobu@r...>
+
+	* gc.c (rb_objspace_alloc, rb_objspace_free): define always
+	  regardless ENABLE_VM_OBJSPACE, and free heap pages.
+
 Tue Sep 15 15:15:41 2015  Nobuyoshi Nakada  <nobu@r...>
 
 	* win32/win32.c (rb_w32_sysinit, rb_w32_readdir): compare by
Index: gc.c
===================================================================
--- gc.c	(revision 51866)
+++ gc.c	(revision 51867)
@@ -1256,11 +1256,14 @@ RVALUE_WHITE_P(VALUE obj) https://github.com/ruby/ruby/blob/trunk/gc.c#L1256
   --------------------------- 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 https://github.com/ruby/ruby/blob/trunk/gc.c#L1306
 	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 https://github.com/ruby/ruby/blob/trunk/gc.c#L3667
     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) https://github.com/ruby/ruby/blob/trunk/gc.c#L3679
         chunk = next;
     }
 }
-#endif
 
 static void
 push_mark_stack(mark_stack_t *stack, VALUE data)
Index: vm.c
===================================================================
--- vm.c	(revision 51866)
+++ vm.c	(revision 51867)
@@ -1861,9 +1861,7 @@ ruby_vm_destruct(rb_vm_t *vm) https://github.com/ruby/ruby/blob/trunk/vm.c#L1861
 
     if (vm) {
 	rb_thread_t *th = vm->main_thread;
-#if defined(ENABLE_VM_OBJSPACE) && ENABLE_VM_OBJSPACE
 	struct rb_objspace *objspace = vm->objspace;
-#endif
 	vm->main_thread = 0;
 	if (th) {
 	    rb_fiber_reset_root_local_storage(th->self);
@@ -1872,11 +1870,9 @@ ruby_vm_destruct(rb_vm_t *vm) https://github.com/ruby/ruby/blob/trunk/vm.c#L1870
 	rb_vm_living_threads_init(vm);
 	ruby_vm_run_at_exit_hooks(vm);
 	rb_vm_gvl_destroy(vm);
-#if defined(ENABLE_VM_OBJSPACE) && ENABLE_VM_OBJSPACE
 	if (objspace) {
 	    rb_objspace_free(objspace);
 	}
-#endif
 	/* after freeing objspace, you *can't* use ruby_xfree() */
 	ruby_mimfree(vm);
 	ruby_current_vm = 0;
@@ -2800,9 +2796,7 @@ Init_BareVM(void) https://github.com/ruby/ruby/blob/trunk/vm.c#L2796
     rb_thread_set_current_raw(th);
 
     vm_init2(vm);
-#if defined(ENABLE_VM_OBJSPACE) && ENABLE_VM_OBJSPACE
     vm->objspace = rb_objspace_alloc();
-#endif
     ruby_current_vm = vm;
 
     Init_native_thread();

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]