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

ruby-changes:4879

From: ko1@a...
Date: Mon, 12 May 2008 11:16:02 +0900 (JST)
Subject: [ruby-changes:4879] yugui - Ruby:r16372 (trunk): * gc.c (assign_heap_slot): put the binary-search routine in order.

yugui	2008-05-12 11:15:55 +0900 (Mon, 12 May 2008)

  New Revision: 16372

  Modified files:
    trunk/gc.c

  Log:
     * gc.c (assign_heap_slot): put the binary-search routine in order.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/gc.c?r1=16372&r2=16371&diff_format=u

Index: gc.c
===================================================================
--- gc.c	(revision 16371)
+++ gc.c	(revision 16372)
@@ -548,32 +548,31 @@
     if (p == 0)
 	rb_memerror();
 
+    membase = p;
+    if ((VALUE)p % sizeof(RVALUE) != 0) {
+	p = (RVALUE*)((VALUE)p + sizeof(RVALUE) - ((VALUE)p % sizeof(RVALUE)));
+	if ((membase + HEAP_SIZE) < (p + HEAP_SIZE)) {
+	    objs--;
+	}
+    }
+    	
+
     lo = 0;
     hi = heaps_used;
     while (lo < hi) {
+	register RVALUE *mid_membase;
 	mid = (lo + hi) / 2;
-	membase = heaps[mid].membase;
-	if (membase < p) {
+	mid_membase = heaps[mid].membase;
+	if (mid_membase < membase) {
 	    lo = mid + 1;
 	}
-	else if (membase > p) {
+	else if (mid_membase > membase) {
 	    hi = mid;
 	}
 	else {
-	    rb_bug("same heap slot is allocated: %p at %ld", p, mid);
+	    rb_bug("same heap slot is allocated: %p at %ld", membase, mid);
 	}
     }
-
-    membase = p;
-
-    if ((VALUE)p % sizeof(RVALUE) != 0) {
-	p = (RVALUE*)((VALUE)p + sizeof(RVALUE) - ((VALUE)p % sizeof(RVALUE)));
-	if ((membase + HEAP_SIZE) < (p + HEAP_SIZE)) {
-	    objs--;
-	}
-    }
-    	
-
     if (hi < heaps_used) {
 	MEMMOVE(&heaps[hi+1], &heaps[hi], struct heaps_slot, heaps_used - hi);
     }

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

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