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]