On Tue, Sep 16, 2008 at 09:01:06PM -0700, Stephen Simmons wrote:
> Using the more elaborate version of the testcase behind #58294, which has a
> two and a three argument version of max, what use to compile and execute
> incorrectly before the bug fix now compiles and segfaults. I suspect this
> has nothing to do with the changes that fixed #58294, and everything to do
> with recent MMD changes. But that's speculation
> I've stripped it down to the max(a,b) and max(a,b,c) definitions and one
> three-arg call, though a two-arg call produces a similar result. The result
> is:
>
> sully:perl6 stephensimmons$ perl6 experiment/max3.p6
> Null PMC access in invoke()
> current instr.: '_block11' pc 44 (EVAL_14:19)
I think there's something wrong with Rakudo's code generation
here; see the --target=pir output for max3.p6. The code generated
for the 2-arg and 3-arg forms of max are coming out as:
## 2 argument form
.sub "max" :multi() :lexid("25") :outer("23")
.param pmc param_16
.param pmc param_19
## 3 argument form
.sub "max" :multi() :lexid("33") :outer("23")
.param pmc param_101
.param pmc param_104
.param pmc param_107
Those two empty :multi() declarations look very suspicious to me,
but I'm not familiar enough with the new MMD implementation to know
how it's supposed to work.
Pm