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