On Sun, Apr 09, 2006 at 12:13:23PM -0700, Will Coleda wrote:
> Tcl test suite has some failures. At least some of these are due to
> the following issue in PGE::P5Regexp :
>
> $ cat foo.tcl
> array set a [list a b]
> puts [array get a]
> $ ../../parrot tcl.pbc foo.tcl Global 'parse_ws_lit' not found
> Global 'parse_lit' not found
> current instr.: 'PGE::P5Regexp :: __onload' pc 9807 (compilers/pge/
> PGE/P5Regexp.pir:14)
> called from Sub '_main' pc 487 (src/tclsh.pir:210)
I suspect this must be coming from something deeper in Parrot
(or pbc_merge), and not anything in PGE. (I know that I recently
ran into problems with symbol table errors using pbc_merge when
doing some of the perl 6 compiler stuff, so at the moment I'm
avoiding it.)
To wit, the error(s) are occurring in the "__onload" subroutines
of PIR (automatically called via load_bytecode), and line 14 of
P5Regexp.pir reads
$P0 = find_global "PGE::P5Regexp", "parse_lit"
This looks like a pretty straightforward op to me, especially since
the "parse_lit" function it's looking for is also defined in
the same P5Regexp.pir file (starting at line 52). So, it's
hard to believe that the global would be "not found".
The "Global 'parse_ws_lit' not found" message appears to be
the same thing, except that an exception handler in tclsh.pir
seems to be catching the exception, sending the message to
standard output, and allowing the program to attempt to continue.
At any rate, I suspect pbc_merge is the culprit.
Pm