ruby-changes:35383
From: ko1 <ko1@a...>
Date: Tue, 9 Sep 2014 13:12:29 +0900 (JST)
Subject: [ruby-changes:35383] ko1:r47465 (trunk): * gc.c: remvoe ruby_disable_gc_stress and add ruby_disable_gc
ko1 2014-09-09 13:12:14 +0900 (Tue, 09 Sep 2014) New Revision: 47465 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=47465 Log: * gc.c: remvoe ruby_disable_gc_stress and add ruby_disable_gc to speed-up newobj_of(). * gc.c (ready_to_gc): check ruby_disable_gc. * signal.c: use ruby_disable_gc. Modified files: trunk/ChangeLog trunk/gc.c trunk/signal.c Index: ChangeLog =================================================================== --- ChangeLog (revision 47464) +++ ChangeLog (revision 47465) @@ -1,3 +1,12 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Tue Sep 9 13:05:50 2014 Koichi Sasada <ko1@a...> + + * gc.c: remvoe ruby_disable_gc_stress and add ruby_disable_gc + to speed-up newobj_of(). + + * gc.c (ready_to_gc): check ruby_disable_gc. + + * signal.c: use ruby_disable_gc. + Tue Sep 9 12:11:41 2014 Koichi Sasada <ko1@a...> * gc.c: rename gc_stat entries and check stat transition. Index: gc.c =================================================================== --- gc.c (revision 47464) +++ gc.c (revision 47465) @@ -728,7 +728,7 @@ struct RZombie { https://github.com/ruby/ruby/blob/trunk/gc.c#L728 int ruby_gc_debug_indent = 0; VALUE rb_mGC; -int ruby_disable_gc_stress = 0; +int ruby_disable_gc = 0; void rb_gcdebug_print_obj_condition(VALUE obj); @@ -1599,7 +1599,7 @@ newobj_of(VALUE klass, VALUE flags, VALU https://github.com/ruby/ruby/blob/trunk/gc.c#L1599 rb_bug("object allocation during garbage collection phase"); } - if (UNLIKELY(ruby_gc_stress && !ruby_disable_gc_stress)) { + if (UNLIKELY(ruby_gc_stress)) { if (!garbage_collect(objspace, FALSE, FALSE, FALSE, GPR_FLAG_NEWOBJ)) { rb_memerror(); } @@ -5666,25 +5666,27 @@ enum { https://github.com/ruby/ruby/blob/trunk/gc.c#L5666 #define gc_stress_full_mark_after_malloc_p() \ (FIXNUM_P(ruby_gc_stress) && (FIX2LONG(ruby_gc_stress) & (1<<gc_stress_full_mark_after_malloc))) -static int +static void heap_ready_to_gc(rb_objspace_t *objspace, rb_heap_t *heap) { - if (dont_gc || during_gc) { - if (!heap->freelist && !heap->free_pages) { - if (!heap_increment(objspace, heap)) { - heap_set_increment(objspace, 1); - heap_increment(objspace, heap); - } + if (!heap->freelist && !heap->free_pages) { + if (!heap_increment(objspace, heap)) { + heap_set_increment(objspace, 1); + heap_increment(objspace, heap); } - return FALSE; } - return TRUE; } static int ready_to_gc(rb_objspace_t *objspace) { - return heap_ready_to_gc(objspace, heap_eden); + if (dont_gc || during_gc || ruby_disable_gc) { + heap_ready_to_gc(objspace, heap_eden); + return FALSE; + } + else { + return TRUE; + } } static void @@ -5792,7 +5794,7 @@ gc_start(rb_objspace_t *objspace, const https://github.com/ruby/ruby/blob/trunk/gc.c#L5794 gc_enter(objspace, "gc_start"); - if (ruby_gc_stress && !ruby_disable_gc_stress) { + if (ruby_gc_stress) { int flag = FIXNUM_P(ruby_gc_stress) ? FIX2INT(ruby_gc_stress) : 0; if ((flag & (1<<gc_stress_no_major)) == 0) { @@ -6927,7 +6929,7 @@ atomic_sub_nounderflow(size_t *var, size https://github.com/ruby/ruby/blob/trunk/gc.c#L6929 static void objspace_malloc_gc_stress(rb_objspace_t *objspace) { - if (ruby_gc_stress && !ruby_disable_gc_stress && ruby_native_thread_p()) { + if (ruby_gc_stress && ruby_native_thread_p()) { garbage_collect_with_gvl(objspace, gc_stress_full_mark_after_malloc_p(), TRUE, TRUE, GPR_FLAG_STRESS | GPR_FLAG_MALLOC); } } @@ -7738,7 +7740,7 @@ gc_prof_setup_new_record(rb_objspace_t * https://github.com/ruby/ruby/blob/trunk/gc.c#L7740 MEMZERO(record, gc_profile_record, 1); /* setup before-GC parameter */ - record->flags = reason | ((ruby_gc_stress && !ruby_disable_gc_stress) ? GPR_FLAG_STRESS : 0); + record->flags = reason | (ruby_gc_stress ? GPR_FLAG_STRESS : 0); #if MALLOC_ALLOCATED_SIZE record->allocated_size = malloc_allocated_size; #endif Index: signal.c =================================================================== --- signal.c (revision 47464) +++ signal.c (revision 47465) @@ -817,7 +817,7 @@ ruby_abort(void) https://github.com/ruby/ruby/blob/trunk/signal.c#L817 } static int segv_received = 0; -extern int ruby_disable_gc_stress; +extern int ruby_disable_gc; static RETSIGTYPE sigsegv(int sig SIGINFO_ARG) @@ -833,7 +833,7 @@ sigsegv(int sig SIGINFO_ARG) https://github.com/ruby/ruby/blob/trunk/signal.c#L833 CHECK_STACK_OVERFLOW(); segv_received = 1; - ruby_disable_gc_stress = 1; + ruby_disable_gc = 1; rb_bug_context(SIGINFO_CTX, "Segmentation fault" MESSAGE_FAULT_ADDRESS); } #endif -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/