[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(®s[REG_EAX]);
- if (node_regs_mask & (1<<1)) update_noderef(®s[REG_EBX]);
- if (node_regs_mask & (1<<2)) update_noderef(®s[REG_ECX]);
+ if (node_regs_mask & (1<<1)) update_noderef(®s[REG_ECX]);
=
if (regs[REG_EFL] & EFL_DF) {
/* then EDX is an imm reg */
;
} else
- if (node_regs_mask & (1<<3)) update_noderef(®s[REG_EDX]);
-
+ if (node_regs_mask & (1<<2)) update_noderef(®s[REG_EDX]);
+
+ if (node_regs_mask & (1<<3)) update_noderef(®s[REG_EBX]);
if (node_regs_mask & (1<<4)) update_noderef(®s[REG_ESP]);
if (node_regs_mask & (1<<5)) update_noderef(®s[REG_EBP]);
if (node_regs_mask & (1<<6)) update_noderef(®s[REG_ESI]);
More information about the Openmcl-cvs-notifications
mailing list