Dan Sugalski wrote:

> This:
> 
>    new P0, .PerlScalar
>    new P1, .PerlArray
>    assign P0, P1
> 
> isn't code that a compiler should be emitting. 
   (snip alternative compiler output)
> Though I freely admit that's a big punt on the real problem, which we 
> still need to address.
> 
> I'm up for suggestions, since sooner or later someone's going to emit 
> code like that, and its nice to know what its supposed to do...

How about something along the following lines:

<perlarray.pmc>
void get_preferred_type(INTVAL context)
{
    switch (context) {
        case CONTEXT_SCALAR: return BASETYPE_INTVAL;
    }
}

<perlscalar.pmc>
void set_pmc(PMC* value)
{
    switch (value->get_preferred_type(INTERP, value, CONTEXT_SCALAR)) {
        case BASETYPE_INTVAL:
            set_integer(INTERP, SELF, value);
            break;
    }
}

-- 
Peter Gibbs
EmKel Systems


Reply via email to