Luke Palmer wrote:

> This patch re-implements the register backing stacks as PObjs (so
> they can be garbage-collected), honors their COW flags, and adds
> them to the interpreter context (where they should be, honest!).
>
> As a healthy side-effect, it encapsulates their behavior nicely into
> register.c, when before their guts were splattered all over the
> source.

Hey Luke,

I applied this patch, ran make realclean and rebuilt parrot.
All the parrot tests pass (except the two about numbers, and I
think they were failing before) but it doesn't like the code
that pirate's generating. I boiled the problem down to this:

#######
.sub __main__
    newsub $P0, .Closure, _func
    newsub $P1, .Continuation, done
    .pcc_begin non_prototyped
    .pcc_call $P0, $P1
done:
    .local object result
    .result result
    .pcc_end
    print result
    print "\n"
    end
.end

.pcc_sub _func non_prototyped
    .local object res
    res = new PerlString
    res = "hello!"
    .pcc_begin_return
    .return res
    .pcc_end_return
.end
########

When I run this, parrot says:

    No more I register frames to pop!

I think the problem is coming from the .pcc_begin_return
line. This code works fine if I change the .Continuation to
a .Closure or .Coroutine... It also worked before the patch.
Do I have my calling conventions screwed up or is this a bug?

Sincerely,

Michal J Wallace
Sabren Enterprises, Inc.
-------------------------------------
contact: [EMAIL PROTECTED]
hosting: http://www.cornerhost.com/
my site: http://www.withoutane.com/
--------------------------------------

Reply via email to