Changes between Initial Version and Version 1 of Ticket #150

Show
Ignore:
Timestamp:
01/09/09 20:57:54 (13 years ago)
Author:
coke
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #150 – description

    initial v1  
    11This works fine: 
    22 
     3{{{ 
    34    # demo.pir 
    45    .sub main :main 
    56        load_bytecode 'perl6.pbc' 
    67    .end 
     8}}} 
    79 
    810This fails, due to Perl6Str not existing 
    9  
     11{{{ 
    1012    # demo.pir 
    1113    .HLL 'foo' 
     
    1315        load_bytecode 'perl6.pbc' 
    1416    .end 
    15  
     17}}} 
    1618The runtime version using the 'loadlib' op can work, kind of. 
    1719 
    1820Adding this to perl6.pir doesn't help: 
    19  
     21{{{ 
    2022    # perl6.pir 
    2123    .HLL 'parrot' 
     
    2426        $P0 = loadlib 'perl6_ops' 
    2527    .end 
    26  
     28}}} 
    2729Adding that same code to the example does work: 
    28  
     30{{{ 
    2931    # demo.pir 
    3032    .HLL 'parrot' 
     
    3739        load_bytecode 'perl6.pbc' 
    3840    .end 
    39  
     41}}} 
    4042This rather complicates attempts to use rakudo from another HLL. 
    4143 
     
    4446.loadlib is handled by do_loadlib in imcparser.c, which is: 
    4547 
     48{{{ 
    4649    /* imcparser.c */ 
    4750    do_loadlib(PARROT_INTERP, ARGIN(const char *lib)) 
     
    5356        Parrot_register_HLL_lib(interp, s); 
    5457    } 
    55  
     58}}} 
    5659The loadlib op is handled by 'op loadlib' in core.ops: 
    57  
     60{{{ 
    5861    /* core.ops */ 
    5962    inline op loadlib(out PMC, in STR) { 
    6063        $1 = Parrot_load_lib(interp, $2, NULL); 
    6164    } 
    62  
     65}}} 
    6366You'll notice that the op version doesn't call Parrot_register_HLL_lib, but adding that to 'op loadlib' doesn't help.  That's as far as I got in investigating this issue.