On Tue, 29 Apr 2008, Patrick R. Michaud wrote:

On Tue, Apr 29, 2008 at 12:34:47PM -0400, Jeff Horwitz wrote:
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.

How about with a -t 1 ?

duh, should've given you that in the first place. the trace is HUGE, so here's the last 50 lines. you should be able to reproduce the error using the code above if you need more detail.

    21 load_bytecode "compilers/tge/TGE/Tr"
     0 newclass P0, "TGE::Tree"         P0=PMCNULL
     3 addattribute P0, "cell"          P0=Class=PMC(0x845f814)
     6 addattribute P0, "visit"         P0=Class=PMC(0x845f814)
     9 addattribute P0, "data"          P0=Class=PMC(0x845f814)
    12 addattribute P0, "grammar"       P0=Class=PMC(0x845f814)
    15 addattribute P0, "agid"          P0=Class=PMC(0x845f814)
    18 set_returns PC7
    20 returncc
    23 load_bytecode "compilers/tge/TGE/Pa"
     0 push_eh 7
     2 subclass P0, "PGE::Grammar", "TGE::Parser"       P0=PMCNULL
     6 pop_eh
     7 set_returns PC3
     9 returncc
    25 load_bytecode "compilers/tge/TGE/Gr"
     0 newclass P0, "TGE::Grammar"      P0=PMCNULL
     3 addattribute P0, "rules"         P0=Class=PMC(0x8516ce4)
     6 addattribute P0, "symbols"       P0=Class=PMC(0x8516ce4)
     9 set_returns PC5
    11 returncc
    27 load_bytecode "compilers/tge/TGE/Co"
     0 load_bytecode "TGE.pbc"
     2 get_class P0, "TGE::Grammar"     P0=PMCNULL
     5 subclass P1, P0, "TGE::Compiler" P1=PMCNULL P0=Class=PMC(0x8516ce4)
     9 set_returns PC5
    11 returncc
29 get_class P0, PC22 P0=Integer=PMC(0x846304c: 1) PC22=Key=PMC(0x820f890)
    32 get_hll_global P1, PC24, "die"   P1=PMCNULL PC24=Key=PMC(0x820f874)
36 set_args PC2 (3), P0, "die", P1 PC2=FixedIntegerArray=PMC(0x8463394) P0=Class=PMC(0x8518d28) P1=Sub=PMC(0x846836c pc:7)
    41 get_results PC19
    43 callmethodcc P0, "add_method"    P0=Class=PMC(0x8518d28)
46 get_hll_global P1, PC24, "line_number" P1=Sub=PMC(0x846836c pc:7) PC24=Key=PMC(0x820f874) 50 set_args PC2 (3), P0, "line_number", P1 PC2=FixedIntegerArray=PMC(0x8463394) P0=Class=PMC(0x8518d28) P1=Sub=PMC(0x8467e80 pc:229)
    55 get_results PC19
    57 callmethodcc P0, "add_method"    P0=Class=PMC(0x8518d28)
    60 set_returns PC19
    62 returncc
 32824 push_eh 7
 32826 subclass P0, "TGE::Grammar", "Plumhead::PAST::Gram"      P0=PMCNULL
 32830 pop_eh
 32831 set_returns PC22
 32833 returncc
loading perl6
     4 print "loading perl6\n"
     6 load_bytecode "languages/perl6/perl"
push_pmc() not implemented in class 'Sub'
current instr.: 'main' pc 6 (foo.pir:5)
ParrotIO objects (like stdout and stderr)are about to be closed, so clearing trace flags.

Reply via email to