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

Reply via email to