[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