On Tue, Dec 09, 2008 at 03:43:59PM -0800, Moritz Lenz wrote: > After a 'make realclean' I ran 'perl Configure --optimize && make'. It > dies like this: > > ../../parrot -o PGE.pbc --output-pbc PGE.pir > ../../parrot ../../runtime/parrot/library/PGE/Perl6Grammar.pir > --output=PGE/bui > ltins_gen.pir PGE/builtins.pg > FixedIntegerArray: Can't resize! > current instr.: 'parrot;P6metaclass;new_class' pc 95 > (runtime/parrot/library/P6o > bject.pir:126) > make[1]: *** [PGE.pbc] Error 1 > make[1]: Leaving directory `/home/moritz/src/parrot/compilers/pge' > make: *** [compilers.dummy] Error 2
> This is a 64bit Debian Lenny install with gcc 4.3.2. Building without > --optimize is no problem. I believe that Parrot will continue to have obscure problems such as this, much as Perl 5 used to do, until it implements the equivalent of http://public.activestate.com/cgi-bin/perlbrowse/p/33291 and fixes the problems that it shows up. (Yes, it's big. Search for the section starting ==== //depot/perl/embed.pl#366 (xtext) ==== for the Perl code that generates the assertion macros from embed.fnc. This is the equivalent to Parrot's headerizer) Summary - I infer that some "not null" annotations in Parrot are not correct. Perl 5's experience was that these are like landmines, and lay dormant until someone tries with a newer compiler, that happens to add a bit more optimisation. Of course, this can happen months after you release code, code that "works" and is thought to be stable. IIRC we had 3 separate end user bugs found with this as the cause, before I realised that we were never going to find them by hand, so made the above changes to make the compiler find them. What you don't see in *that* change was the half dozen or so that it found and I fixed, that I committed before I was able to add that. See here: http://public.activestate.com/cgi-bin/perlbrowse?top=33291&show_recent=Show+Change+Log Nicholas Clark