[Openmcl-cvs-notifications] r14754 - /trunk/source/lisp-kernel/arm-exceptions.c
gb at clozure.com
gb at clozure.com
Fri Apr 29 13:23:52 CDT 2011
Author: gb
Date: Fri Apr 29 13:23:52 2011
New Revision: 14754
Log:
In pc_luser_xp(), recognize that the alloc_trap is now immediately
preceded by a branch around it; the COMPARE_ALLOCPTR_TO_RM that we're
looking for precedes the branch. Note that the LinuxARM heap image
in the trunk currently does things this way; older images may not.
This seems to fix ticket:855 (the test case from ticket:717 runs
to completion, and other things that cons hysterically while creating
threads for no apparent reason - like SLIME - will hopefully not
be affected by this.)
Modified:
trunk/source/lisp-kernel/arm-exceptions.c
Modified: trunk/source/lisp-kernel/arm-exceptions.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/arm-exceptions.c (original)
+++ trunk/source/lisp-kernel/arm-exceptions.c Fri Apr 29 13:23:52 2011
@@ -1657,16 +1657,23 @@
and the trap may or may not be taken.
*/
} else {
+ Boolean ok =3D false;
update_bytes_allocated(tcr, (void *) ptr_from_lispobj(cur_allocptr=
+ disp));
xpGPR(xp, allocptr) =3D VOID_ALLOCPTR + disp;
instr =3D program_counter[-1];
- if (IS_COMPARE_ALLOCPTR_TO_RM(instr)){
- xpGPR(xp,RM_field(instr)) =3D VOID_ALLOCPTR;
+ if (IS_BRANCH_AROUND_ALLOC_TRAP(instr)) {
+ instr =3D program_counter[-2];
+ if (IS_COMPARE_ALLOCPTR_TO_RM(instr)){
+ xpGPR(xp,RM_field(instr)) =3D VOID_ALLOCPTR;
+ ok =3D true;
+ }
+ }
+ if (ok) {
+ /* Clear the carry bit, so that the trap will be taken. */
+ xpPSR(xp) &=3D ~PSR_C_MASK;
} else {
Bug(NULL, "unexpected instruction preceding alloc trap.");
}
- /* Clear the carry bit, so that the trap will be taken. */
- xpPSR(xp) &=3D ~PSR_C_MASK;
}
} else {
/* we may be before or after the alloc trap. If before, set
More information about the Openmcl-cvs-notifications
mailing list