On Fri, Feb 15, 2008 at 11:59 AM, via RT chromatic
<[EMAIL PROTECTED]> wrote:

> $ ./parrot -O t/compilers/imcc/syn/const_24.pir
> Null PMC access in get_string()
>
> $ ./parrot t/compilers/imcc/syn/const_24.pir
> Null PMC access in get_string()
> current instr.: 'main' pc 5 (t/compilers/imcc/syn/const_24.pir:11)
>
> The difference lies somewhere in Parrot_Context_get_info(), I believe.

Looks like the problem is that e_pbc_emit in compilers/imcc/pbc does
not initialize the debug segment, because of this condition:

        /* add debug if necessary */
        if (!IMCC_INFO(interp)->optimizer_level
          || IMCC_INFO(interp)->optimizer_level == OPT_PASM) {

And Parrot_context_get_info does this before setting file and line:
        PackFile_Debug * const debug = sub->seg->debugs;
        if (!debug)
           return 0;

Because it uses the debug segment to obtain that data.

Unconditionally ceating the debug segment solves the issue but I don't
know if that will be an adequate solution.

-- 
Salu2

Reply via email to