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/