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