[M3devel] Strange behavior in recent CM3-compiled code...
Mika Nystrom
mika at async.caltech.edu
Tue Jun 16 09:50:18 CEST 2009
Operator precedence? This isn't C, you know! You can't do NIL AND
x in Modula-3. Nevertheless, AND has lower precedence than anything
else I'm using here. OR is the lowest. Green Book, section 2.6.2
(p. 49).
But to allay your fears, I can report that adding parens around
each of the terms doesn't change the behavior, either printing or
the IF.
My q, w, e was an attempt at isolating the problem but it didn't. I don't
know what to start cutting back.
I was hoping someone would see it and think "oops, I touched ...
the other day and it must have broken this".
And yes as I mentioned I tried both with and without optimization.
Unfortunately x86 assembly is pretty much gibberish to me.
It's part of a rather large software system... I'll see what I can
do about getting it up on birch or making a smaller test case...
Meanwhile I'll write the code at the end of this message.
Mika
Jay writes:
>--_55f6c801-7d57-4602-a131-dda139b64dfd_
>Content-Type: text/plain; charset="iso-8859-1"
>Content-Transfer-Encoding: quoted-printable
>
>
>Kneejerk generic response:
>
>=20
>
>I don't know the operator precedence. Can you put in parens?
>
>Have you looked at the code?
>
>Can you mail us a small self contained repro?
>
>Can you test it on birch?
>
> (That way -- all your files are there and easily gotten/investigated by o=
>thers.)
>
>Optimization enabled? Works without? I know=2C I shouldn't even ask this so=
>rt of thing without evidence.
>
>=20
>
> - Jay
>=20
>> To: m3devel at elegosoft.com
>> Date: Tue=2C 16 Jun 2009 00:01:18 -0700
>> From: mika at async.caltech.edu
>> CC: mika at camembert.async.caltech.edu
>> Subject: [M3devel] Strange behavior in recent CM3-compiled code...
>>=20
>>=20
>> Hello everyone=2C
>>=20
>> I'm trying to update to the latest CM3 again=2C so that I can get my
>> Mac working=2C and push my project of migrating a largish codebase
>> from PM3 to CM3 a little further.
>>=20
>> I updated CM3 today from CVS=2C on both my Mac and on a FreeBSD system=2C
>> and ... my Scheme interpreter broke. Here's what the code looks like=2C
>> with annotations:
>>=20
>> 49 Debug.Out("t.rest =3D NIL? " & Fmt.Bool(t.rest=3DNIL))=3B
>> 50 Debug.Out("ISTYPE(t.rest=2CT)? " & Fmt.Bool(ISTYPE(t.rest=2CT)))=3B
>> 51 Debug.Out("Rest(t.rest) =3D NIL? " & Fmt.Bool(Rest(t.rest)=3DNIL))=3B
>> 52
>> 53 IF t.rest # NIL AND ISTYPE(t.rest=2CT) AND Rest(t.rest) =3D NIL THEN
>> 54 Debug.Out("in IF clause...")=3B
>> 55
>> 56 IF SymEq(t.first=2C "quote") THEN special :=3D "'"
>> 57 ELSIF SymEq(t.first=2C "quasiquote") THEN special :=3D "`"
>> 58 ELSIF SymEq(t.first=2C "unquote") THEN special :=3D "=2C"
>> 59 ELSIF SymEq(t.first=2C "unquote-splicing") THEN special :=3D "=2C@"
>> 60 END
>> 61 ELSE
>> 62 Debug.Out("in ELSE clause...")
>> 63 END=3B
>>=20
>> all you need to know is that Debug.Out prints out debugging information
>> to the terminal. What I see is...
>>=20
>> t.rest =3D NIL? FALSE
>> ISTYPE(t.rest=2CT)? TRUE
>> Rest(t.rest) =3D NIL? TRUE
>> in ELSE clause...
>>=20
>> What gives!?
>>=20
>> Note this behavior occurs on both the Mac and on FreeBSD4 with a
>> compiler and runtime bootstrapped today from some previous CM3.
>> My old CM3 compiler was timestamped... April 30=2C I believe=2C and the
>> code behaved properly under that one.
>>=20
>> I believe I have also tried it both with and without compiler
>> optimizations.
>>=20
>> I find it baffling that so much stuff (mentor!) can work if "AND" isn't
>> working right. This is the only if statement in many=2C many source files
>> that seems to be working wrong.
>>=20
>> Is it possible I'm missing something?? No I don't think so... here's a mo=
>re
>> explicit version:
>>=20
>> Debug.Out("t.rest # NIL? " & Fmt.Bool(t.rest#NIL))=3B
>> Debug.Out("ISTYPE(t.rest=2CT)? " & Fmt.Bool(ISTYPE(t.rest=2CT)))=3B
>> Debug.Out("Rest(t.rest) =3D NIL? " & Fmt.Bool(Rest(t.rest)=3DNIL))=3B
>> Debug.Out("conjunction? " & Fmt.Bool(
>> t.rest # NIL AND ISTYPE(t.rest=2CT) AND Rest(t.rest) =3D NIL ))=3B
>> IF t.rest # NIL AND ISTYPE(t.rest=2CT) AND Rest(t.rest) =3D NIL THEN
>> ...
>>=20
>> output is:
>>=20
>> t.rest # NIL? TRUE
>> ISTYPE(t.rest=2CT)? TRUE
>> Rest(t.rest) =3D NIL? TRUE
>> conjunction? FALSE
>> in ELSE clause...
>>=20
>> TRUE AND TRUE AND TRUE is FALSE??
>>=20
>> Note that:=20
>>=20
>> VAR q=2C w=2C e :=3D TRUE=3B
>>=20
>> Debug.Out("conjunction? " & Fmt.Bool(
>> q AND w AND e))=3B
>>=20
>> results in TRUE (as it should).
>>=20
>>=20
>> Mika
>>=20
>
(* $Id: SchemePair.m3,v 1.8 2009/03/29 07:27:13 mika Exp $ *)
MODULE SchemePair;
IMPORT Wx;
IMPORT SchemeObject, SchemeUtils, SchemeSymbol;
FROM Scheme IMPORT E;
FROM SchemeUtils IMPORT Error, StringifyT;
IMPORT RefSeq;
IMPORT Debug, Fmt;
PROCEDURE StringifyPair(t : T; quoted : BOOLEAN; buf : Wx.T; seen : RefSeq.T) RAISES { E } =
CONST SymEq = SchemeSymbol.SymEq;
StringifyB = SchemeUtils.StringifyB;
Rest = SchemeUtils.Rest;
Second = SchemeUtils.Second;
VAR special : TEXT := NIL;
BEGIN
Debug.Out("t.rest # NIL? " & Fmt.Bool(t.rest#NIL));
Debug.Out("ISTYPE(t.rest,T)? " & Fmt.Bool(ISTYPE(t.rest,T)));
Debug.Out("Rest(t.rest) = NIL? " & Fmt.Bool(Rest(t.rest)=NIL));
Debug.Out("conjunction? " & Fmt.Bool(
( t.rest # NIL) AND (ISTYPE(t.rest,T)) AND (Rest(t.rest) = NIL) ));
IF (t.rest # NIL) AND ISTYPE(t.rest,T) AND (Rest(t.rest) = NIL) THEN
Debug.Out("in IF clause...");
IF SymEq(t.first, "quote") THEN special := "'"
ELSIF SymEq(t.first, "quasiquote") THEN special := "`"
ELSIF SymEq(t.first, "unquote") THEN special := ","
ELSIF SymEq(t.first, "unquote-splicing") THEN special := ",@"
END
ELSE
Debug.Out("in ELSE clause...")
END;
IF special # NIL THEN
Wx.PutText(buf, special);
StringifyB(Second(t), quoted, buf, seen)
ELSE
Wx.PutChar(buf, '(');
StringifyB(t.first, quoted, buf, seen);
VAR tail := t.rest;
BEGIN
WHILE tail # NIL AND ISTYPE(tail,T) DO
Wx.PutChar(buf, ' ');
StringifyB(NARROW(tail,T).first, quoted, buf, seen);
tail := NARROW(tail,T).rest
END;
IF tail # NIL THEN
Wx.PutText(buf, " . ");
StringifyB(tail, quoted, buf, seen)
END;
Wx.PutChar(buf, ')')
END
END
END StringifyPair;
PROCEDURE Pair(x : SchemeObject.T) : T RAISES { E } =
BEGIN
IF ISTYPE(x,T) THEN RETURN x (* NIL is OK for Pair! *)
ELSE RETURN Pair(Error("expected a pair, got: " & StringifyT(x)))
END
END Pair;
BEGIN END SchemePair.
----------------------------------------------------------------------
.file "SchemePair.mc"
.stabs "/big/home/mika/t-cm3/mscheme/FreeBSD4/",100,0,0,.Ltext0
.stabs "SchemePair.mc",100,0,0,.Ltext0
.text
.Ltext0:
.stabs "gcc2_compiled.",60,0,0,0
.stabs "procedures_have_extra_block.",60,0,0,0
.stabs "MP_CMGwxk_32_L1:T(0,1)=s0AAAAAA:(0,2)=r(0,2);-2147483648;2147483647;,0,32;DobPBR_t:(0,2),0,32;AicXUJ_quoted:(0,2),0,32;BYmXDz_buf:(0,2),0,32;AZx9O5_seen:(0,2),0,32;Scheme.E:(0,2),0,32;;",128,0,0,0
.stabs "MP_DkRnTw_32_L1:T(0,3)=s0DobPBR:(0,2),0,32;Af40ku_x:(0,2),0,32;Scheme.E:(0,2),0,32;;",128,0,0,0
.stabs "MX_BUgnwf_32:T(0,4)=s0DWIlZi:(0,2),0,32;;",128,0,0,0
.stabs "MX_CKMnXU_32:T(0,5)=s0Cgclyt:(0,2),0,32;;",128,0,0,0
.stabs "MX_BtKsLk_32:T(0,6)=s0C7ehAd:(0,2),0,32;;",128,0,0,0
.stabs "SchemePair__StringifyPair:F(0,7)=(0,7)",36,0,17,SchemePair__StringifyPair
.stabs "M3_DobPBR_t:p(0,8)=*(0,7)",160,0,74,8
.stabs "M3_AicXUJ_quoted:p(0,9)=@s8;r(0,9);0;255;",160,0,74,12
.stabs "M3_BYmXDz_buf:p(0,8)",160,0,74,16
.stabs "M3_AZx9O5_seen:p(0,8)",160,0,74,20
.globl SchemePair__StringifyPair
.type SchemePair__StringifyPair, @function
SchemePair__StringifyPair:
.stabd 46,0,0
.stabs "../src/SchemePair.m3",132,0,0,.Ltext1
.Ltext1:
.stabn 68,0,17,.LM0-.LFBB1
.LM0:
.LFBB1:
pushl %ebp
movl %esp, %ebp
pushl %ebx
subl $84, %esp
.LBB2:
.stabn 68,0,24,.LM1-.LFBB1
.LM1:
movl $0, -40(%ebp)
.stabn 68,0,27,.LM2-.LFBB1
.LM2:
movl 8(%ebp), %eax
addl $4, %eax
movl (%eax), %eax
movl %eax, -36(%ebp)
movl -36(%ebp), %eax
testl %eax, %eax
je .L2
movl -36(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L2
movl -36(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $9, %eax
shrl $31, %eax
xorl $1, %eax
testb %al, %al
jne .L2
movl -36(%ebp), %eax
movl %eax, (%esp)
call RTHooks__CheckLoadTracedRef
.L2:
movl -36(%ebp), %eax
testl %eax, %eax
setne %al
movzbl %al, %eax
movl %eax, (%esp)
call Fmt__Bool
movl %eax, -32(%ebp)
movl -32(%ebp), %eax
movl $L_1+24, %edx
movl %eax, 4(%esp)
movl %edx, (%esp)
call RTHooks__Concat
movl %eax, -28(%ebp)
movl -28(%ebp), %eax
movl $0, 12(%esp)
movl $1, 8(%esp)
movl $10, 4(%esp)
movl %eax, (%esp)
call Debug__Out
.stabn 68,0,28,.LM3-.LFBB1
.LM3:
movl 8(%ebp), %eax
addl $4, %eax
movl (%eax), %eax
movl %eax, -28(%ebp)
movl -28(%ebp), %eax
testl %eax, %eax
je .L3
movl -28(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L3
movl -28(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $9, %eax
shrl $31, %eax
xorl $1, %eax
testb %al, %al
jne .L3
movl -28(%ebp), %eax
movl %eax, (%esp)
call RTHooks__CheckLoadTracedRef
.L3:
movl $1, -24(%ebp)
movl -28(%ebp), %eax
testl %eax, %eax
je .L4
movl -28(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L5
movl -28(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $11, %eax
shrl $12, %eax
movl %eax, %edx
movl MM_SchemePair+176, %eax
cmpl %eax, %edx
je .L4
jmp .L6
.L5:
movl MM_SchemePair+176, %eax
cmpl $3, %eax
je .L4
.L6:
movl $0, -24(%ebp)
.L4:
movl -24(%ebp), %eax
movl %eax, (%esp)
call Fmt__Bool
movl %eax, -32(%ebp)
movl -32(%ebp), %eax
movl $L_1+52, %edx
movl %eax, 4(%esp)
movl %edx, (%esp)
call RTHooks__Concat
movl %eax, -36(%ebp)
movl -36(%ebp), %eax
movl $0, 12(%esp)
movl $1, 8(%esp)
movl $10, 4(%esp)
movl %eax, (%esp)
call Debug__Out
.stabn 68,0,29,.LM4-.LFBB1
.LM4:
movl 8(%ebp), %eax
addl $4, %eax
movl (%eax), %eax
movl %eax, -36(%ebp)
movl -36(%ebp), %eax
testl %eax, %eax
je .L7
movl -36(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L7
movl -36(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $9, %eax
shrl $31, %eax
xorl $1, %eax
testb %al, %al
jne .L7
movl -36(%ebp), %eax
movl %eax, (%esp)
call RTHooks__CheckLoadTracedRef
.L7:
movl -36(%ebp), %eax
movl %eax, (%esp)
call SchemeUtils__Rest
movl %eax, -32(%ebp)
movl -32(%ebp), %eax
testl %eax, %eax
sete %al
movzbl %al, %eax
movl %eax, (%esp)
call Fmt__Bool
movl %eax, -28(%ebp)
movl -28(%ebp), %eax
movl $L_1+84, %edx
movl %eax, 4(%esp)
movl %edx, (%esp)
call RTHooks__Concat
movl %eax, -20(%ebp)
movl -20(%ebp), %eax
movl $0, 12(%esp)
movl $1, 8(%esp)
movl $10, 4(%esp)
movl %eax, (%esp)
call Debug__Out
.stabn 68,0,30,.LM5-.LFBB1
.LM5:
movl $0, -24(%ebp)
movl 8(%ebp), %eax
addl $4, %eax
movl (%eax), %eax
movl %eax, -20(%ebp)
movl -20(%ebp), %eax
testl %eax, %eax
je .L8
movl -20(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L8
movl -20(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $9, %eax
shrl $31, %eax
xorl $1, %eax
testb %al, %al
jne .L8
movl -20(%ebp), %eax
movl %eax, (%esp)
call RTHooks__CheckLoadTracedRef
.L8:
movl -20(%ebp), %eax
testl %eax, %eax
je .L9
movl 8(%ebp), %eax
addl $4, %eax
movl (%eax), %eax
movl %eax, -28(%ebp)
movl -28(%ebp), %eax
testl %eax, %eax
je .L10
movl -28(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L10
movl -28(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $9, %eax
shrl $31, %eax
xorl $1, %eax
testb %al, %al
jne .L10
movl -28(%ebp), %eax
movl %eax, (%esp)
call RTHooks__CheckLoadTracedRef
.L10:
movl -28(%ebp), %eax
testl %eax, %eax
je .L11
movl -28(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L12
movl -28(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $11, %eax
shrl $12, %eax
movl %eax, %edx
movl MM_SchemePair+176, %eax
cmpl %eax, %edx
jne .L9
.L12:
movl MM_SchemePair+176, %eax
cmpl $3, %eax
jne .L9
.L11:
movl 8(%ebp), %eax
addl $4, %eax
movl (%eax), %eax
movl %eax, -32(%ebp)
movl -32(%ebp), %eax
testl %eax, %eax
je .L13
movl -32(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L13
movl -32(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $9, %eax
shrl $31, %eax
xorl $1, %eax
testb %al, %al
jne .L13
movl -32(%ebp), %eax
movl %eax, (%esp)
call RTHooks__CheckLoadTracedRef
.L13:
movl -32(%ebp), %eax
movl %eax, (%esp)
call SchemeUtils__Rest
movl %eax, -36(%ebp)
movl -36(%ebp), %eax
testl %eax, %eax
jne .L9
movl $1, -24(%ebp)
.L9:
movl -24(%ebp), %eax
movl %eax, (%esp)
call Fmt__Bool
movl %eax, -16(%ebp)
movl -16(%ebp), %eax
movl $L_1+120, %edx
movl %eax, 4(%esp)
movl %edx, (%esp)
call RTHooks__Concat
movl %eax, -12(%ebp)
movl -12(%ebp), %eax
movl $0, 12(%esp)
movl $1, 8(%esp)
movl $10, 4(%esp)
movl %eax, (%esp)
call Debug__Out
.stabn 68,0,32,.LM6-.LFBB1
.LM6:
movl 8(%ebp), %eax
addl $4, %eax
movl (%eax), %eax
movl %eax, -12(%ebp)
movl -12(%ebp), %eax
testl %eax, %eax
je .L14
movl -12(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L14
movl -12(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $9, %eax
shrl $31, %eax
xorl $1, %eax
testb %al, %al
jne .L14
movl -12(%ebp), %eax
movl %eax, (%esp)
call RTHooks__CheckLoadTracedRef
.L14:
movl -12(%ebp), %eax
testl %eax, %eax
je .L15
movl 8(%ebp), %eax
addl $4, %eax
movl (%eax), %eax
movl %eax, -16(%ebp)
movl -16(%ebp), %eax
testl %eax, %eax
je .L16
movl -16(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L16
movl -16(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $9, %eax
shrl $31, %eax
xorl $1, %eax
testb %al, %al
jne .L16
movl -16(%ebp), %eax
movl %eax, (%esp)
call RTHooks__CheckLoadTracedRef
.L16:
movl -16(%ebp), %eax
testl %eax, %eax
je .L17
movl -16(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L18
movl -16(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $11, %eax
shrl $12, %eax
movl %eax, %edx
movl MM_SchemePair+176, %eax
cmpl %eax, %edx
jne .L15
.L18:
movl MM_SchemePair+176, %eax
cmpl $3, %eax
jne .L15
.L17:
movl 8(%ebp), %eax
addl $4, %eax
movl (%eax), %eax
movl %eax, -36(%ebp)
movl -36(%ebp), %eax
testl %eax, %eax
je .L19
movl -36(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L19
movl -36(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $9, %eax
shrl $31, %eax
xorl $1, %eax
testb %al, %al
jne .L19
movl -36(%ebp), %eax
movl %eax, (%esp)
call RTHooks__CheckLoadTracedRef
.L19:
movl -36(%ebp), %eax
movl %eax, (%esp)
call SchemeUtils__Rest
movl %eax, -32(%ebp)
movl -32(%ebp), %eax
testl %eax, %eax
jne .L15
.stabn 68,0,33,.LM7-.LFBB1
.LM7:
movl $L_1+148, %eax
movl $0, 12(%esp)
movl $1, 8(%esp)
movl $10, 4(%esp)
movl %eax, (%esp)
call Debug__Out
.stabn 68,0,35,.LM8-.LFBB1
.LM8:
movl 8(%ebp), %eax
movl (%eax), %eax
movl %eax, -32(%ebp)
movl -32(%ebp), %eax
testl %eax, %eax
je .L20
movl -32(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L20
movl -32(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $9, %eax
shrl $31, %eax
xorl $1, %eax
testb %al, %al
jne .L20
movl -32(%ebp), %eax
movl %eax, (%esp)
call RTHooks__CheckLoadTracedRef
.L20:
movl $L_1+176, %eax
movl -32(%ebp), %edx
movl %eax, 4(%esp)
movl %edx, (%esp)
call SchemeSymbol__SymEq
movb %al, -5(%ebp)
movzbl -5(%ebp), %eax
xorl $1, %eax
testb %al, %al
jne .L21
movl $L_1+196, %eax
movl %eax, -40(%ebp)
jmp .L29
.L21:
.stabn 68,0,36,.LM9-.LFBB1
.LM9:
movl 8(%ebp), %eax
movl (%eax), %eax
movl %eax, -32(%ebp)
movl -32(%ebp), %eax
testl %eax, %eax
je .L23
movl -32(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L23
movl -32(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $9, %eax
shrl $31, %eax
xorl $1, %eax
testb %al, %al
jne .L23
movl -32(%ebp), %eax
movl %eax, (%esp)
call RTHooks__CheckLoadTracedRef
.L23:
movl $L_1+212, %eax
movl -32(%ebp), %edx
movl %eax, 4(%esp)
movl %edx, (%esp)
call SchemeSymbol__SymEq
movb %al, -5(%ebp)
movzbl -5(%ebp), %eax
xorl $1, %eax
testb %al, %al
jne .L24
movl $L_1+236, %eax
movl %eax, -40(%ebp)
jmp .L29
.L24:
.stabn 68,0,37,.LM10-.LFBB1
.LM10:
movl 8(%ebp), %eax
movl (%eax), %eax
movl %eax, -32(%ebp)
movl -32(%ebp), %eax
testl %eax, %eax
je .L25
movl -32(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L25
movl -32(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $9, %eax
shrl $31, %eax
xorl $1, %eax
testb %al, %al
jne .L25
movl -32(%ebp), %eax
movl %eax, (%esp)
call RTHooks__CheckLoadTracedRef
.L25:
movl $L_1+252, %eax
movl -32(%ebp), %edx
movl %eax, 4(%esp)
movl %edx, (%esp)
call SchemeSymbol__SymEq
movb %al, -5(%ebp)
movzbl -5(%ebp), %eax
xorl $1, %eax
testb %al, %al
jne .L26
movl $L_1+272, %eax
movl %eax, -40(%ebp)
jmp .L29
.L26:
.stabn 68,0,38,.LM11-.LFBB1
.LM11:
movl 8(%ebp), %eax
movl (%eax), %eax
movl %eax, -32(%ebp)
movl -32(%ebp), %eax
testl %eax, %eax
je .L27
movl -32(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L27
movl -32(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $9, %eax
shrl $31, %eax
xorl $1, %eax
testb %al, %al
jne .L27
movl -32(%ebp), %eax
movl %eax, (%esp)
call RTHooks__CheckLoadTracedRef
.L27:
movl $L_1+288, %eax
movl -32(%ebp), %edx
movl %eax, 4(%esp)
movl %edx, (%esp)
call SchemeSymbol__SymEq
movb %al, -5(%ebp)
movzbl -5(%ebp), %eax
xorl $1, %eax
testb %al, %al
jne .L29
movl $L_1+320, %eax
movl %eax, -40(%ebp)
jmp .L29
.L15:
.stabn 68,0,41,.LM12-.LFBB1
.LM12:
movl $L_1+336, %eax
movl $0, 12(%esp)
movl $1, 8(%esp)
movl $10, 4(%esp)
movl %eax, (%esp)
call Debug__Out
.L29:
.stabn 68,0,45,.LM13-.LFBB1
.LM13:
movl -40(%ebp), %eax
testl %eax, %eax
je .L30
.stabn 68,0,46,.LM14-.LFBB1
.LM14:
movl -40(%ebp), %eax
movl 16(%ebp), %edx
movl $0, 20(%esp)
movl $0, 16(%esp)
movl $0, 12(%esp)
movl $0, 8(%esp)
movl %eax, 4(%esp)
movl %edx, (%esp)
call Wx__PutText
.stabn 68,0,47,.LM15-.LFBB1
.LM15:
movl 8(%ebp), %eax
movl %eax, (%esp)
call SchemeUtils__Second
movl %eax, -32(%ebp)
movl 20(%ebp), %edx
movl 16(%ebp), %ecx
movzbl 12(%ebp), %eax
movzbl %al, %eax
movl -32(%ebp), %ebx
movl %edx, 12(%esp)
movl %ecx, 8(%esp)
movl %eax, 4(%esp)
movl %ebx, (%esp)
call SchemeUtils__StringifyB
jmp .L47
.L30:
.stabn 68,0,49,.LM16-.LFBB1
.LM16:
movl 16(%ebp), %eax
movl $40, 4(%esp)
movl %eax, (%esp)
call Wx__PutChar
.stabn 68,0,50,.LM17-.LFBB1
.LM17:
movl 8(%ebp), %eax
movl (%eax), %eax
movl %eax, -32(%ebp)
movl -32(%ebp), %eax
testl %eax, %eax
je .L32
movl -32(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L32
movl -32(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $9, %eax
shrl $31, %eax
xorl $1, %eax
testb %al, %al
jne .L32
movl -32(%ebp), %eax
movl %eax, (%esp)
call RTHooks__CheckLoadTracedRef
.L32:
movl 20(%ebp), %edx
movl 16(%ebp), %ecx
movzbl 12(%ebp), %eax
movzbl %al, %eax
movl -32(%ebp), %ebx
movl %edx, 12(%esp)
movl %ecx, 8(%esp)
movl %eax, 4(%esp)
movl %ebx, (%esp)
call SchemeUtils__StringifyB
.LBB3:
.stabn 68,0,51,.LM18-.LFBB1
.LM18:
movl 8(%ebp), %eax
addl $4, %eax
movl (%eax), %eax
movl %eax, -32(%ebp)
movl -32(%ebp), %eax
testl %eax, %eax
je .L33
movl -32(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L33
movl -32(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $9, %eax
shrl $31, %eax
xorl $1, %eax
testb %al, %al
jne .L33
movl -32(%ebp), %eax
movl %eax, (%esp)
call RTHooks__CheckLoadTracedRef
.L33:
movl -32(%ebp), %eax
movl %eax, -44(%ebp)
jmp .L34
.L35:
.stabn 68,0,54,.LM19-.LFBB1
.LM19:
movl 16(%ebp), %eax
movl $32, 4(%esp)
movl %eax, (%esp)
call Wx__PutChar
.stabn 68,0,55,.LM20-.LFBB1
.LM20:
movl -44(%ebp), %eax
testl %eax, %eax
je .L36
movl -44(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L37
movl -44(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $11, %eax
shrl $12, %eax
movl %eax, %edx
movl MM_SchemePair+176, %eax
cmpl %eax, %edx
je .L36
movl $1765, (%esp)
call _m3_fault
.L37:
movl MM_SchemePair+176, %eax
cmpl $3, %eax
je .L36
movl $1765, (%esp)
call _m3_fault
.L36:
movl -44(%ebp), %eax
movl (%eax), %eax
movl %eax, -32(%ebp)
movl -32(%ebp), %eax
testl %eax, %eax
je .L38
movl -32(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L38
movl -32(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $9, %eax
shrl $31, %eax
xorl $1, %eax
testb %al, %al
jne .L38
movl -32(%ebp), %eax
movl %eax, (%esp)
call RTHooks__CheckLoadTracedRef
.L38:
movl 20(%ebp), %edx
movl 16(%ebp), %ecx
movzbl 12(%ebp), %eax
movzbl %al, %eax
movl -32(%ebp), %ebx
movl %edx, 12(%esp)
movl %ecx, 8(%esp)
movl %eax, 4(%esp)
movl %ebx, (%esp)
call SchemeUtils__StringifyB
.stabn 68,0,56,.LM21-.LFBB1
.LM21:
movl -44(%ebp), %eax
testl %eax, %eax
je .L39
movl -44(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L40
movl -44(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $11, %eax
shrl $12, %eax
movl %eax, %edx
movl MM_SchemePair+176, %eax
cmpl %eax, %edx
je .L39
movl $1797, (%esp)
call _m3_fault
.L40:
movl MM_SchemePair+176, %eax
cmpl $3, %eax
je .L39
movl $1797, (%esp)
call _m3_fault
.L39:
movl -44(%ebp), %eax
addl $4, %eax
movl (%eax), %eax
movl %eax, -32(%ebp)
movl -32(%ebp), %eax
testl %eax, %eax
je .L41
movl -32(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L41
movl -32(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $9, %eax
shrl $31, %eax
xorl $1, %eax
testb %al, %al
jne .L41
movl -32(%ebp), %eax
movl %eax, (%esp)
call RTHooks__CheckLoadTracedRef
.L41:
movl -32(%ebp), %eax
movl %eax, -44(%ebp)
.L34:
.stabn 68,0,53,.LM22-.LFBB1
.LM22:
movl -44(%ebp), %eax
testl %eax, %eax
je .L45
movl -44(%ebp), %eax
testl %eax, %eax
je .L35
movl -44(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L43
movl -44(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $11, %eax
shrl $12, %eax
movl %eax, %edx
movl MM_SchemePair+176, %eax
cmpl %eax, %edx
je .L35
.L43:
movl MM_SchemePair+176, %eax
cmpl $3, %eax
je .L35
.L45:
.stabn 68,0,58,.LM23-.LFBB1
.LM23:
movl -44(%ebp), %eax
testl %eax, %eax
je .L46
.stabn 68,0,59,.LM24-.LFBB1
.LM24:
movl $L_1+368, %eax
movl 16(%ebp), %edx
movl $0, 20(%esp)
movl $0, 16(%esp)
movl $0, 12(%esp)
movl $0, 8(%esp)
movl %eax, 4(%esp)
movl %edx, (%esp)
call Wx__PutText
.stabn 68,0,60,.LM25-.LFBB1
.LM25:
movl 20(%ebp), %edx
movl 16(%ebp), %ecx
movzbl 12(%ebp), %eax
movzbl %al, %eax
movl -44(%ebp), %ebx
movl %edx, 12(%esp)
movl %ecx, 8(%esp)
movl %eax, 4(%esp)
movl %ebx, (%esp)
call SchemeUtils__StringifyB
.L46:
.stabn 68,0,62,.LM26-.LFBB1
.LM26:
movl 16(%ebp), %eax
movl $41, 4(%esp)
movl %eax, (%esp)
call Wx__PutChar
.L47:
.LBE3:
.LBE2:
.stabn 68,0,65,.LM27-.LFBB1
.LM27:
addl $84, %esp
popl %ebx
popl %ebp
ret
.size SchemePair__StringifyPair, .-SchemePair__StringifyPair
.stabn 192,0,0,.LFBB1-.LFBB1
.stabs "M3_Bd56fi_special:(0,8)",128,0,74,-40
.stabn 192,0,0,.LBB2-.LFBB1
.stabs "M3_Af40ku_tail:(0,8)",128,0,51,-44
.stabn 192,0,0,.LBB3-.LFBB1
.stabn 224,0,0,.LBE3-.LFBB1
.stabn 224,0,0,.LBE2-.LFBB1
.stabn 224,0,0,.Lscope1-.LFBB1
.Lscope1:
.stabs "",36,0,0,.Lscope1-.LFBB1
.stabd 78,0,0
.stabs "SchemePair__Pair:F(0,8)",36,0,67,SchemePair__Pair
.stabs "M3_Af40ku_x:p(0,8)",160,0,74,8
.globl SchemePair__Pair
.type SchemePair__Pair, @function
SchemePair__Pair:
.stabd 46,0,0
.stabn 68,0,67,.LM28-.LFBB2
.LM28:
.LFBB2:
pushl %ebp
movl %esp, %ebp
subl $56, %esp
.LBB4:
.stabn 68,0,69,.LM29-.LFBB2
.LM29:
movl 8(%ebp), %eax
testl %eax, %eax
je .L49
movl 8(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L50
movl 8(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $11, %eax
shrl $12, %eax
movl %eax, %edx
movl MM_SchemePair+176, %eax
cmpl %eax, %edx
jne .L51
.L50:
movl MM_SchemePair+176, %eax
cmpl $3, %eax
jne .L51
.L49:
movl 8(%ebp), %eax
testl %eax, %eax
je .L52
movl 8(%ebp), %eax
andl $1, %eax
testb %al, %al
jne .L53
movl 8(%ebp), %eax
subl $4, %eax
movl (%eax), %eax
sall $11, %eax
shrl $12, %eax
movl %eax, %edx
movl MM_SchemePair+176, %eax
cmpl %eax, %edx
je .L52
movl $2213, (%esp)
call _m3_fault
.L53:
movl MM_SchemePair+176, %eax
cmpl $3, %eax
je .L52
movl $2213, (%esp)
call _m3_fault
.L52:
movl 8(%ebp), %eax
movl %eax, -36(%ebp)
jmp .L48
.L51:
.stabn 68,0,70,.LM30-.LFBB2
.LM30:
movl 8(%ebp), %eax
movl %eax, (%esp)
call SchemeUtils__StringifyT
movl %eax, -20(%ebp)
movl -20(%ebp), %eax
movl $L_1+384, %edx
movl %eax, 4(%esp)
movl %edx, (%esp)
call RTHooks__Concat
movl %eax, -16(%ebp)
movl -16(%ebp), %eax
movl %eax, (%esp)
call SchemeUtils__Error
movl %eax, -12(%ebp)
movl -12(%ebp), %eax
movl %eax, (%esp)
call SchemePair__Pair
movl %eax, -8(%ebp)
movl -8(%ebp), %eax
movl %eax, -36(%ebp)
.L48:
.LBE4:
movl -36(%ebp), %eax
leave
ret
.size SchemePair__Pair, .-SchemePair__Pair
.stabn 192,0,0,.LFBB2-.LFBB2
.stabs "M3_DobPBR__result:(0,8)",128,0,74,-4
.stabn 192,0,0,.LBB4-.LFBB2
.stabn 224,0,0,.LBE4-.LFBB2
.stabn 224,0,0,.Lscope2-.LFBB2
.Lscope2:
.stabs "",36,0,0,.Lscope2-.LFBB2
.stabd 78,0,0
.stabs "SchemePair_M3:F(0,8)",36,0,74,SchemePair_M3
.stabs "M3_AcxOUs_mode:p(0,2)",160,0,74,8
.globl SchemePair_M3
.type SchemePair_M3, @function
SchemePair_M3:
.stabd 46,0,0
.stabn 68,0,74,.LM31-.LFBB3
.LM31:
.LFBB3:
pushl %ebp
movl %esp, %ebp
subl $4, %esp
.LBB5:
.stabn 68,0,74,.LM32-.LFBB3
.LM32:
movl 8(%ebp), %eax
movl $MM_SchemePair, %eax
.LBE5:
leave
ret
.size SchemePair_M3, .-SchemePair_M3
.stabn 192,0,0,.LFBB3-.LFBB3
.stabn 192,0,0,.LBB5-.LFBB3
.stabn 224,0,0,.LBE5-.LFBB3
.stabn 224,0,0,.Lscope3-.LFBB3
.Lscope3:
.stabs "",36,0,0,.Lscope3-.LFBB3
.stabd 78,0,0
.stabs "MR_zzzzzz_4032:T(0,10)=s0;",128,0,0,0
.stabs "MR_zzzzzz_1440:T(0,11)=s0;",128,0,0,0
.stabs "Mi_zzzzzz_SchemePair:T(0,12)=s0SchemePair:(0,2),0,32;;",128,0,0,0
.stabs "_m3_fault:f(0,7)",36,0,0,_m3_fault
.stabs "M3_AcxOUs_arg:p(0,13)=r(0,13);0;037777777777;",160,0,55,8
.type _m3_fault, @function
_m3_fault:
.stabd 46,0,0
.stabn 68,0,0,.LM33-.LFBB4
.LM33:
.LFBB4:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
movl 8(%ebp), %eax
movl %eax, 4(%esp)
movl $MM_SchemePair, (%esp)
call RTHooks__ReportFault
leave
ret
.size _m3_fault, .-_m3_fault
.stabn 192,0,0,.LFBB4-.LFBB4
.stabn 224,0,0,.Lscope4-.LFBB4
.Lscope4:
.stabs "",36,0,0,.Lscope4-.LFBB4
.stabd 78,0,0
.data
.align 32
.type L_1, @object
.size L_1, 504
L_1:
.long RTHooks__TextLitInfo
.long RTHooks__TextLitGetChar
.long RTHooks__TextLitGetWideChar
.long RTHooks__TextLitGetChars
.long RTHooks__TextLitGetWideChars
.long 2
.long L_1
.long 14
.ascii "t.rest # NIL? "
.zero 2
.long 2
.long L_1
.long 18
.ascii "ISTYPE(t.rest,T)? "
.zero 2
.long 2
.long L_1
.long 20
.ascii "Rest(t.rest) = NIL? "
.zero 4
.long 2
.long L_1
.long 13
.ascii "conjunction? "
.zero 3
.long 2
.long L_1
.long 15
.ascii "in IF clause..."
.zero 1
.long 2
.long L_1
.long 5
.ascii "quote"
.zero 3
.long 2
.long L_1
.long 1
.ascii "'"
.zero 3
.long 2
.long L_1
.long 10
.ascii "quasiquote"
.zero 2
.long 2
.long L_1
.long 1
.ascii "`"
.zero 3
.long 2
.long L_1
.long 7
.ascii "unquote"
.zero 1
.long 2
.long L_1
.long 1
.ascii ","
.zero 3
.long 2
.long L_1
.long 16
.ascii "unquote-splicing"
.zero 4
.long 2
.long L_1
.long 2
.ascii ",@"
.zero 2
.long 2
.long L_1
.long 17
.ascii "in ELSE clause..."
.zero 3
.long 2
.long L_1
.long 3
.ascii " . "
.zero 1
.long 2
.long L_1
.long 22
.ascii "expected a pair, got: "
.zero 2
.ascii "SchemePair_M3"
.zero 1
.ascii "Pair"
.zero 1
.ascii "StringifyPair"
.zero 4
.long SchemePair_M3
.long L_1+416
.long SchemePair__Pair
.long L_1+430
.long SchemePair__StringifyPair
.long L_1+435
.zero 4
.ascii "../src/SchemePair.m3"
.zero 4
.align 32
.type MM_SchemePair, @object
.size MM_SchemePair, 180
MM_SchemePair:
.long L_1+480
.zero 4
.long MM_SchemePair+172
.zero 8
.long L_1+452
.zero 12
.long MM_SchemePair+52
.zero 4
.long SchemePair_M3
.long 3
.zero 4
.long SchemePair_I3
.long MM_SchemePair+64
.zero 4
.long Fmt_I3
.long MM_SchemePair+76
.zero 4
.long Debug_I3
.long MM_SchemePair+88
.zero 4
.long RefSeq_I3
.long MM_SchemePair+100
.zero 4
.long Scheme_I3
.long MM_SchemePair+112
.zero 4
.long SchemeSymbol_I3
.long MM_SchemePair+124
.zero 4
.long SchemeUtils_I3
.long MM_SchemePair+136
.zero 4
.long SchemeObject_I3
.long MM_SchemePair+148
.zero 4
.long Wx_I3
.long MM_SchemePair+160
.zero 4
.long RTHooks_I3
.zero 8
.long -949022765
.stabs "L_1:S(0,14)=s504;",38,0,9,L_1
.stabs "MM_SchemePair:S(0,15)=s180;",38,0,9,MM_SchemePair
.text
.stabs "",100,0,0,.Letext0
.Letext0:
.ident "GCC: (GNU) 4.3.0"
More information about the M3devel
mailing list