I'd like to cleanup eval.pmc and dynamic code compiling a bit. But before that I'd like to know:

Which granularity do we allow for eval()ed code?
Can that be an expression or statement too or is it always at least an (anonymous) subroutine?
Does the compiled code see Parrot registers of the caller or is it more like a function call?
What about register preserving?


And finally what shall we do with such branches:

# #! perl -w
# my $i= 5;
# LAB:
#    $i++;
#    eval("goto LAB if ($i==6)");
#    print "$i\n";
#
# 7
#####

.sub _test
    I1 = 5
    $S0 = ".sub _e\nif I1 == 6 goto LAB\nend\n.end\n"
    compreg P2, "PIR"
    compile P0, P2, $S0
LAB:
    inc I1
    invoke
    print I1
    print "\n"
    end
.end

Force them to be continuations?

leo



Reply via email to