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

ruby-changes:14409

From: yugui <ko1@a...>
Date: Mon, 4 Jan 2010 21:37:05 +0900 (JST)
Subject: [ruby-changes:14409] Ruby:r26239 (trunk): * gc.c: added UNLIKELY to probes for optimization.

yugui	2010-01-04 21:36:46 +0900 (Mon, 04 Jan 2010)

  New Revision: 26239

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

  Log:
    * gc.c: added UNLIKELY to probes for optimization.
    
    * vm.c: ditto.
    
    * thread.c: ditto.

  Modified files:
    trunk/ChangeLog
    trunk/gc.c
    trunk/thread.c
    trunk/vm.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 26238)
+++ ChangeLog	(revision 26239)
@@ -1,3 +1,11 @@
+Mon Jan  4 21:24:18 2010  Yuki Sonoda (Yugui)  <yugui@y...>
+
+	* gc.c: added UNLIKELY to probes for optimization.
+
+	* vm.c: ditto.
+
+	* thread.c: ditto.
+
 Mon Jan  4 09:30:54 2010  NAKAMURA Usaku  <usa@r...>
 
 	* win32/Makefile.sub (TRACING_MODEL): follow yugui's previous changes.
Index: thread.c
===================================================================
--- thread.c	(revision 26238)
+++ thread.c	(revision 26239)
@@ -376,7 +376,7 @@
 {
     rb_thread_t *th = th_ptr;
 
-    if (TRACE_THREAD_TERM_ENABLED()) FIRE_THREAD_TERM(th->self, rb_sourcefile(), rb_sourceline());
+    if (UNLIKELY(TRACE_THREAD_TERM_ENABLED())) FIRE_THREAD_TERM(th->self, rb_sourcefile(), rb_sourceline());
 
     /* unlock all locking mutexes */
     if (th->keeping_mutexes) {
@@ -429,7 +429,7 @@
 		    th->errinfo = Qnil;
 		    th->local_lfp = proc->block.lfp;
 		    th->local_svar = Qnil;
-		    if (TRACE_THREAD_ENTER_ENABLED()) {
+		    if (UNLIKELY(TRACE_THREAD_ENTER_ENABLED())) {
 			VALUE filename = proc->block.iseq->filename;
 			int lineno = proc->block.iseq->line_no;
 			FIRE_THREAD_ENTER(th->self, (TYPE(filename) == T_STRING ? RSTRING_PTR(filename) : 0), lineno);
@@ -438,7 +438,7 @@
 						  (int)RARRAY_LEN(args), RARRAY_PTR(args), 0);
 		}
 		else {
-		    if (TRACE_THREAD_ENTER_ENABLED()) FIRE_THREAD_ENTER(th->self, 0, 0);
+		    if (UNLIKELY(TRACE_THREAD_ENTER_ENABLED())) FIRE_THREAD_ENTER(th->self, 0, 0);
 		    th->value = (*th->first_func)((void *)args);
 		}
 	    });
@@ -469,7 +469,7 @@
 
 	th->status = THREAD_KILLED;
 	thread_debug("thread end: %p\n", (void *)th);
-	if (TRACE_THREAD_LEAVE_ENABLED()) FIRE_THREAD_LEAVE(th->self, 0, 0);
+	if (UNLIKELY(TRACE_THREAD_LEAVE_ENABLED())) FIRE_THREAD_LEAVE(th->self, 0, 0);
 
 	main_th = th->vm->main_thread;
 	if (th != main_th) {
@@ -542,7 +542,7 @@
     native_mutex_initialize(&th->interrupt_lock);
     /* kick thread */
     st_insert(th->vm->living_threads, thval, (st_data_t) th->thread_id);
-    if (TRACE_THREAD_INIT_ENABLED()) FIRE_THREAD_INIT(th->self, rb_sourcefile(), rb_sourceline());
+    if (UNLIKELY(TRACE_THREAD_INIT_ENABLED())) FIRE_THREAD_INIT(th->self, rb_sourcefile(), rb_sourceline());
     err = native_thread_create(th);
     if (err) {
 	st_delete_wrap(th->vm->living_threads, th->self);
@@ -992,7 +992,7 @@
 	rb_thread_t *th = GET_THREAD();
 
 	thread_debug("rb_thread_schedule/switch start\n");
-        if (TRACE_THREAD_LEAVE_ENABLED()) FIRE_THREAD_LEAVE(th->self, rb_sourcefile(), rb_sourceline());
+        if (UNLIKELY(TRACE_THREAD_LEAVE_ENABLED())) FIRE_THREAD_LEAVE(th->self, rb_sourcefile(), rb_sourceline());
 
 	RB_GC_SAVE_MACHINE_CONTEXT(th);
 	native_mutex_unlock(&th->vm->global_vm_lock);
@@ -1003,7 +1003,7 @@
 
 	rb_thread_set_current(th);
 	thread_debug("rb_thread_schedule/switch done\n");
-        if (TRACE_THREAD_ENTER_ENABLED()) FIRE_THREAD_ENTER(th->self, rb_sourcefile(), rb_sourceline());
+        if (UNLIKELY(TRACE_THREAD_ENTER_ENABLED())) FIRE_THREAD_ENTER(th->self, rb_sourcefile(), rb_sourceline());
 
         if (!sched_depth && UNLIKELY(GET_THREAD()->interrupt_flag)) {
             rb_threadptr_execute_interrupts_rec(GET_THREAD(), sched_depth+1);
Index: gc.c
===================================================================
--- gc.c	(revision 26238)
+++ gc.c	(revision 26239)
@@ -1977,7 +1977,7 @@
 	break;
     }
 
-    if (TRACE_OBJECT_FREE_ENABLED()) FIRE_OBJECT_FREE(rb_obj_id(obj));
+    if (UNLIKELY(TRACE_OBJECT_FREE_ENABLED())) FIRE_OBJECT_FREE(rb_obj_id(obj));
 
     if (FL_TEST(obj, FL_EXIVAR)) {
 	rb_free_generic_ivar((VALUE)obj);
@@ -2159,7 +2159,7 @@
     during_gc++;
     objspace->count++;
 
-    if (TRACE_GC_BEGIN_ENABLED()) FIRE_GC_BEGIN();
+    if (UNLIKELY(TRACE_GC_BEGIN_ENABLED())) FIRE_GC_BEGIN();
     GC_PROF_TIMER_START;
     GC_PROF_MARK_TIMER_START;
     SET_STACK_END;
@@ -2208,7 +2208,7 @@
     GC_PROF_SWEEP_TIMER_STOP;
 
     GC_PROF_TIMER_STOP;
-    if (TRACE_GC_END_ENABLED()) FIRE_GC_END();
+    if (UNLIKELY(TRACE_GC_END_ENABLED())) FIRE_GC_END();
     if (GC_NOTIFY) printf("end garbage_collect()\n");
     return TRUE;
 }
Index: vm.c
===================================================================
--- vm.c	(revision 26238)
+++ vm.c	(revision 26239)
@@ -2072,7 +2072,7 @@
     rb_thread_t * th = malloc(sizeof(*th));
     if (!vm || !th) {
 	fprintf(stderr, "[FATAL] failed to allocate memory\n");
-        if (TRACE_RAISE_ENABLED()) FIRE_RAISE_FATAL();
+        if (UNLIKELY(TRACE_RAISE_ENABLED())) FIRE_RAISE_FATAL();
 	exit(EXIT_FAILURE);
     }
     MEMZERO(th, rb_thread_t, 1);

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

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