Hi,
the attached test fails. It raises an exception in __init; if it is resumed
parrot exists after leaving __init.
jens
use strict;
use Parrot::Test tests => 1;
output_is(<<'CODE', <<'OUTPUT', "exceptions and different runloops");
_main:
newsub P0, .Exception_Handler, _eh
set_eh P0
newclass P0, "Foo"
newsub P0, .Sub, __init
store_global "Foo", "__init", P0
print "new\n"
find_type I0, "Foo"
new P2, I0
print "back in main\n"
end
_eh:
print "eh!\n"
set P0, P5["_invoke_cc"]
invoke P0
__init:
set P10, P1
print "in __init\n"
# raise an exception
set S0, "qux"
callmethod
print "back in __init\n"
invoke P10
CODE
new
in __init
eh!
back in __init #1
back in main
OUTPUT