mod_parrot can load multiple HLL compilers in the same interpreter, and on
my server i'm using both perl6 and plumhead. this works fine if i load
perl6 before plumhead. however, if i load perl6 *after* plumhead, i get a
nasty error:
push_pmc() not implemented in class 'Sub'
i get the same error with this plain PIR:
.sub main :main
print "loading plumhead\n"
load_bytecode "languages/plumhead/plumhead.pbc"
print "loading perl6\n"
load_bytecode "languages/perl6/perl6.pbc"
print "done\n"
.end
[EMAIL PROTECTED]:~/build/parrot$ ./parrot foo.pir
loading plumhead
loading perl6
push_pmc() not implemented in class 'Sub'
current instr.: 'main' pc 6 (foo.pir:5)
any ideas? backtrace is below.
Breakpoint 2, cant_do_method (interp=0x804f048, pmc=0x829d204,
methname=0x403cda8d "push_pmc") at default.pmc:63
63 real_exception(interp, NULL, ILL_INHERIT,
(gdb) bt
#0 cant_do_method (interp=0x804f048, pmc=0x829d204,
methname=0x403cda8d "push_pmc") at default.pmc:63
#1 0x402a732e in Parrot_default_push_pmc (interp=0x804f048,
pmc=0x829d204, value=0x82fcbac) at default.c:1632
#2 0x4016130a in store_sub_in_multi (interp=0x804f048,
sub=0x82fcbac, ns=0x8092ec4) at src/global.c:739
#3 0x40161410 in Parrot_store_sub_in_namespace (interp=0x804f048,
sub=0x82fcbac) at src/global.c:777
#4 0x401934de in PackFile_Constant_unpack_pmc (interp=0x804f048,
constt=0x83271d0, self=0x81167e0, cursor=0x40aa94f4)
at src/packfile.c:3584
#5 0x401933d8 in PackFile_Constant_unpack (interp=0x804f048,
constt=0x83271d0, self=0x81167e0, cursor=0x40aa9428)
at src/packfile.c:3526
#6 0x401930dc in PackFile_ConstTable_unpack (interp=0x804f048,
seg=0x83271d0, cursor=0x40aa9424) at src/packfile.c:3322
#7 0x401907ea in PackFile_Segment_unpack (interp=0x804f048,
self=0x83271d0, cursor=0x40a9ff50) at src/packfile.c:1601
#8 0x40190cfd in directory_unpack (interp=0x804f048, segp=0x8327028,
cursor=0x40a9ff40) at src/packfile.c:1795
#9 0x401907ea in PackFile_Segment_unpack (interp=0x804f048,
self=0x8327028, cursor=0x40a24040) at src/packfile.c:1601
#10 0x4018f8b1 in PackFile_unpack (interp=0x804f048, self=0x8327028,
packed=0x40a24000, packed_size=1254976) at src/packfile.c:867
#11 0x40153b10 in Parrot_readbc (interp=0x804f048,
fullname=0x8326fb8
"/home/jeff/build/parrot/./languages/perl6/perl6.pbc") at src/embed.c:503
#12 0x401937d4 in PackFile_append_pbc (interp=0x804f048,
filename=0x8326fb8
"/home/jeff/build/parrot/./languages/perl6/perl6.pbc") at
src/packfile.c:3701
#13 0x401939b2 in Parrot_load_bytecode (interp=0x804f048,
file_str=0x81fba50) at src/packfile.c:3758
#14 0x400f5c4c in Parrot_load_bytecode_sc (cur_opcode=0x8248918,
interp=0x804f048) at core.ops:151
#15 0x40199984 in runops_slow_core (interp=0x804f048, pc=0x8248918)
at src/runops_cores.c:219
#16 0x4016ac26 in runops_int (interp=0x804f048, offset=0)
at src/interpreter.c:916
#17 0x4016b525 in runops (interp=0x804f048, offs=0)
at src/inter_run.c:104
#18 0x4016b7aa in runops_args (interp=0x804f048, sub=0x822ac6c,
obj=0x8096098, meth_unused=0x0, sig=0x403c3727 "vP",
ap=0xbffffbbc "P\"\b\220") at src/inter_run.c:230
#19 0x4016b8ec in Parrot_runops_fromc_args (interp=0x804f048,
sub=0x822ac6c, sig=0x403c3727 "vP") at src/inter_run.c:299
#20 0x401545a7 in Parrot_runcode (interp=0x804f048, argc=1,
argv=0xbffffd18) at src/embed.c:941
#21 0x4039f044 in imcc_run_pbc (interp=0x804f048, obj_file=0,
output_file=0x0, argc=1, argv=0xbffffd18)
at compilers/imcc/main.c:781
#22 0x4039faf2 in imcc_run (interp=0x804f048,
sourcefile=0xbffffe33 "foo.pir", argc=1, argv=0xbffffd18)
at compilers/imcc/main.c:1069
#23 0x080488d8 in main (argc=1, argv=0xbffffd18) at src/main.c:61