[Openmcl-cvs-notifications] r11087 - /trunk/source/lisp-kernel/x86-gc.c

gb at clozure.com gb at clozure.com
Tue Oct 14 02:27:00 EDT 2008


Author: gb
Date: Tue Oct 14 02:27:00 2008
New Revision: 11087

Log:
In the x8632 versions of mark_xp() and forward_xp(), the bits in
the mask correspond to the register's encoded/ordinal value; we
were acting as if that order was alphabetical for the first 4
registers.

Modified:
    trunk/source/lisp-kernel/x86-gc.c

Modified: trunk/source/lisp-kernel/x86-gc.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/x86-gc.c (original)
+++ trunk/source/lisp-kernel/x86-gc.c Tue Oct 14 02:27:00 2008
@@ -1337,15 +1337,14 @@
   int i;
 =

   if (node_regs_mask & (1<<0)) mark_root(regs[REG_EAX]);
-  if (node_regs_mask & (1<<1)) mark_root(regs[REG_EBX]);
-  if (node_regs_mask & (1<<2)) mark_root(regs[REG_ECX]);
-
+  if (node_regs_mask & (1<<1)) mark_root(regs[REG_ECX]);
   if (regs[REG_EFL] & EFL_DF) {
     /* DF set means EDX should be treated as an imm reg */
     ;
   } else
-    if (node_regs_mask & (1<<3)) mark_root(regs[REG_EDX]);
-
+    if (node_regs_mask & (1<<2)) mark_root(regs[REG_EDX]);
+
+  if (node_regs_mask & (1<<3)) mark_root(regs[REG_EBX]);
   if (node_regs_mask & (1<<4)) mark_root(regs[REG_ESP]);
   if (node_regs_mask & (1<<5)) mark_root(regs[REG_EBP]);
   if (node_regs_mask & (1<<6)) mark_root(regs[REG_ESI]);
@@ -1709,15 +1708,15 @@
   natural *regs =3D (natural *) xpGPRvector(xp);
 =

   if (node_regs_mask & (1<<0)) update_noderef(&regs[REG_EAX]);
-  if (node_regs_mask & (1<<1)) update_noderef(&regs[REG_EBX]);
-  if (node_regs_mask & (1<<2)) update_noderef(&regs[REG_ECX]);
+  if (node_regs_mask & (1<<1)) update_noderef(&regs[REG_ECX]);
 =

   if (regs[REG_EFL] & EFL_DF) {
     /* then EDX is an imm reg */
     ;
   } else
-    if (node_regs_mask & (1<<3)) update_noderef(&regs[REG_EDX]);
-
+    if (node_regs_mask & (1<<2)) update_noderef(&regs[REG_EDX]);
+
+  if (node_regs_mask & (1<<3)) update_noderef(&regs[REG_EBX]);
   if (node_regs_mask & (1<<4)) update_noderef(&regs[REG_ESP]);
   if (node_regs_mask & (1<<5)) update_noderef(&regs[REG_EBP]);
   if (node_regs_mask & (1<<6)) update_noderef(&regs[REG_ESI]);



More information about the Openmcl-cvs-notifications mailing list