On Wed, 29 Jun 2005, Leopold Toetsch wrote:

> Chip Salzenberg wrote:
> > { This is a partial reply; what with YAPC I didn't finish, but a new
> >   version of the patch from Leo will give me time to catch up }
> > 
> > I've reviewed the patch.  I appreciate what you're doing with it, but
> > there are some issues that will have to be addressed. 
> 
> Fixed. See attached file.   [context_4.patch]

Unfortunately, it doesn't work for me on Solaris 8/SPARC with Sun's cc.

First, the trivial problem:  Sun's compiler complained about the label
at the end of a block in classes/sub.pmc:

    "classes/sub.pmc", line 566: syntax error before or at: }

The lines in question are:

    is_tail_call:
            }

So I fixed that.  Then, 'make test' reported more than the usual number of 
errors:

Failed 7/157 test scripts, 95.54% okay. 22/2625 subtests failed, 99.16% okay.
Failed Test           Stat Wstat Total Fail  Failed  List of Failed
-------------------------------------------------------------------------------
imcc/t/syn/tail.t        1   256     6    1  16.67%  6
t/dynclass/gdbmhash.t   13  3328    13   13 100.00%  1-13
t/p6rules/builtins.t     1   256    10    1  10.00%  10
t/p6rules/capture.t      4  1024    38    4  10.53%  34-37
t/pmc/mmd.t              1   256    28    1   3.57%  25
t/pmc/object-meths.t     1   256    28    1   3.57%  28
t/src/hash.t             1   256    10    1  10.00%  6
4 tests and 74 subtests skipped.
*** Error code 11

Here's one of the failing tests under the debugger:  imcc/t/syn/tail_6.pir:

(dbx) run tail_6.pir
Running: miniparrot tail_6.pir
(process id 20346)
[EMAIL PROTECTED] ([EMAIL PROTECTED]) signal SEGV (no mapping at the fault 
address) in Parrot_tailcallmethod_sc at 0xa65cc
0x000a65cc: Parrot_tailcallmethod_sc+0x0050:    ld      [%o3 + 0x6c], %o3
(dbx) where
current thread: [EMAIL PROTECTED]
=>[1] Parrot_tailcallmethod_sc(0x379db8, 0x1d3480, 0x3a8270, 0x3a8268, 
0x2286b8, 0x5), at 0xa65cc
  [2] runops_slow_core(0x3a8268, 0x3a8118, 0x1d3480, 0x1cc418, 0x1cc414, 
0x1f3d70), at 0xeb65c
  [3] runops_int(0x1d3480, 0xeb700, 0xeb5d0, 0xeb56c, 0xe81d4, 0xe8164), at 
0xe8534
  [4] runops(0x1d3480, 0x0, 0x4, 0x3d7f10, 0x228850, 0x0), at 0xe99c4
  [5] Parrot_runcode(0x1d3480, 0x1, 0x71c00, 0x228808, 0x394d00, 0x1), at 
0x7283c
  [6] Parrot_runcode(0x1d3480, 0x1, 0xffbefa80, 0x10, 0xffbefa80, 0x4), at 
0x724b0
  [7] main(0x1d3480, 0x1cbc00, 0x1cbc00, 0x1cbc00, 0x17bc00, 0x0), at 0x4b7d0

And here's the output with -t:
$ ./miniparrot -t tail_6.pir
     0 newclass P30, "Foo"      - P30=PMCNULL,
     3 addattribute P30, "n"    - P30=Class=Foo:PMC(0x2287d8),
     6 new P16, "Foo"   - P16=PMCNULL,
     9 new P15, 31      - P15=PMCNULL,
    12 set P15, 2000    - P15=Integer=PMC(0x2286a0: 0),
    15 setattribute P16, "Foo\0n", P15          - 
P16=Object(Foo)=PMC(0x2286b8), , P15=Integer=PMC(0x2286a0: 2000)
    19 set I0, 1        - I0=0,
    22 set I1, 0        - I1=0,
    25 set I2, 0        - I2=0,
    28 set I3, 0        - I3=1,
    31 set I4, 0        - I4=0,
    34 set S1, "O"      - ,
    37 set P2, P16      - P2=PMCNULL, P16=Object(Foo)=PMC(0x2286b8)
    40 callmethodcc "go"
    51 interpinfo P14, 16       - P14=PMCNULL,
    54 getattribute P15, P14, "Foo\0n"          - P15=PMCNULL, 
P14=Object(Foo)=PMC(0x2286b8),
    58 dec P15          - P15=Integer=PMC(0x2286a0: 2000)
    60 unless P15, 26   - P15=Integer=PMC(0x2286a0: 1999),
    63 set I0, 1        - I0=1,
    66 set I1, 0        - I1=0,
    69 set I2, 0        - I2=0,
    72 set I3, 0        - I3=0,
    75 set I4, 0        - I4=0,
    78 set S1, "O"      - ,
    81 set P2, P14      - P2=PMCNULL, P14=Object(Foo)=PMC(0x2286b8)
    84 tailcallmethod "go"
Segmentation Fault(coredump)

Alas, I have no idea where to go from here.

-- 
    Andy Dougherty              [EMAIL PROTECTED]

Reply via email to