[svn:parrot] r46416 - in branches/codestring: . compilers/imcc config/auto/zlib include/parrot ports/fedora/2.3.0 ports/suse/2.2.0 src src/dynpmc src/interp src/pmc src/runcore src/string t/compilers/imcc/syn t/dynpmc t/library t/oo t/pmc t/src tools/dev

coke at svn.parrot.org coke at svn.parrot.org
Sat May 8 21:42:01 UTC 2010


Author: coke
Date: Sat May  8 21:42:00 2010
New Revision: 46416
URL: https://trac.parrot.org/parrot/changeset/46416

Log:
merge latest from trunk

Modified:
   branches/codestring/   (props changed)
   branches/codestring/.gitignore
   branches/codestring/compilers/imcc/imcc.y
   branches/codestring/compilers/imcc/imcparser.c
   branches/codestring/compilers/imcc/imcparser.h
   branches/codestring/compilers/imcc/pbc.c
   branches/codestring/config/auto/zlib/   (props changed)
   branches/codestring/include/parrot/hash.h
   branches/codestring/include/parrot/runcore_trace.h   (props changed)
   branches/codestring/ports/fedora/2.3.0/   (props changed)
   branches/codestring/ports/suse/2.2.0/   (props changed)
   branches/codestring/src/dynpmc/gziphandle.pmc
   branches/codestring/src/hash.c
   branches/codestring/src/interp/inter_create.c   (props changed)
   branches/codestring/src/packout.c
   branches/codestring/src/pmc/stringbuilder.pmc
   branches/codestring/src/runcore/cores.c   (props changed)
   branches/codestring/src/runcore/trace.c   (props changed)
   branches/codestring/src/string/api.c
   branches/codestring/t/compilers/imcc/syn/regressions.t
   branches/codestring/t/dynpmc/gziphandle.t
   branches/codestring/t/library/p6object.t
   branches/codestring/t/oo/metamodel.t
   branches/codestring/t/pmc/bigint.t
   branches/codestring/t/pmc/class.t
   branches/codestring/t/pmc/default.t
   branches/codestring/t/pmc/packfile.t
   branches/codestring/t/pmc/stringbuilder.t
   branches/codestring/t/src/embed.t   (props changed)
   branches/codestring/tools/dev/fetch_languages.pl
   branches/codestring/tools/dev/mk_gitignore.pl   (props changed)

Modified: branches/codestring/.gitignore
==============================================================================
--- branches/codestring/.gitignore	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/.gitignore	Sat May  8 21:42:00 2010	(r46416)
@@ -1,6 +1,6 @@
 # ex: set ro:
 # $Id$
-# generated by tools/dev/mk_gitignore.pl Sat Apr 24 05:11:34 2010 UT
+# generated by tools/dev/mk_gitignore.pl Sat May  8 12:30:31 2010 UT
 #
 # This file should contain a transcript of the svn:ignore properties
 # of the directories in the Parrot subversion repository.
@@ -129,6 +129,7 @@
 # generated from svn:ignore of 'docs/'
 /docs/*.tmp
 /docs/Makefile
+/docs/build
 /docs/doc-prep
 /docs/html
 /docs/packfile-c.pod
@@ -289,6 +290,8 @@
 /runtime/parrot/library/OpenGL_funcs.pir
 /runtime/parrot/library/PAST
 /runtime/parrot/library/config.pir
+# generated from svn:ignore of 'runtime/parrot/library/Archive/'
+/runtime/parrot/library/Archive/*.pbc
 # generated from svn:ignore of 'runtime/parrot/library/CGI/'
 /runtime/parrot/library/CGI/*.pbc
 # generated from svn:ignore of 'runtime/parrot/library/Config/'
@@ -397,6 +400,7 @@
 /src/dynpmc/*.h
 /src/dynpmc/*.ilk
 /src/dynpmc/*.lib
+/src/dynpmc/*.mak
 /src/dynpmc/*.manifest
 /src/dynpmc/*.o
 /src/dynpmc/*.obj

Modified: branches/codestring/compilers/imcc/imcc.y
==============================================================================
--- branches/codestring/compilers/imcc/imcc.y	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/compilers/imcc/imcc.y	Sat May  8 21:42:00 2010	(r46416)
@@ -1399,7 +1399,7 @@
 
 sub_params:
      /* empty */               { $$ = 0; } %prec LOW_PREC
-   | '\n'                               { $$ = 0; }
+   | sub_params '\n'                               { $$ = 0; }
    | sub_params sub_param '\n'
          {
            if (IMCC_INFO(interp)->adv_named_id) {

Modified: branches/codestring/compilers/imcc/imcparser.c
==============================================================================
--- branches/codestring/compilers/imcc/imcparser.c	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/compilers/imcc/imcparser.c	Sat May  8 21:42:00 2010	(r46416)
@@ -9,13 +9,12 @@
  */
 /* HEADERIZER HFILE: none */
 /* HEADERIZER STOP */
-
-/* A Bison parser, made by GNU Bison 2.4.1.  */
+/* A Bison parser, made by GNU Bison 2.4.2.  */
 
 /* Skeleton implementation for Bison's Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989-1990, 2000-2006, 2009-2010 Free Software
+   Foundation, Inc.
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -57,7 +56,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "2.4.2"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -1155,7 +1154,7 @@
 
 
 /* Line 189 of yacc.c  */
-#line 1148 "compilers/imcc/imcparser.c"
+#line 1147 "compilers/imcc/imcparser.c"
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
@@ -1445,7 +1444,7 @@
 
 
 /* Line 214 of yacc.c  */
-#line 1438 "compilers/imcc/imcparser.c"
+#line 1437 "compilers/imcc/imcparser.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -1457,7 +1456,7 @@
 
 
 /* Line 264 of yacc.c  */
-#line 1450 "compilers/imcc/imcparser.c"
+#line 1449 "compilers/imcc/imcparser.c"
 
 #ifdef short
 # undef short
@@ -1507,7 +1506,7 @@
 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
 
 #ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -1743,35 +1742,35 @@
       53,    60,    61,    68,    69,    76,    78,    80,    82,    85,
       89,    92,    94,    96,    98,   100,   102,   103,   107,   108,
      113,   116,   121,   122,   124,   125,   130,   131,   133,   137,
-     141,   144,   145,   146,   147,   158,   159,   161,   165,   166,
-     170,   174,   179,   184,   189,   191,   196,   198,   203,   205,
-     210,   215,   217,   222,   223,   227,   229,   231,   233,   235,
-     237,   239,   241,   245,   246,   248,   249,   259,   260,   263,
-     264,   268,   269,   271,   273,   276,   278,   280,   282,   284,
-     286,   288,   290,   292,   294,   296,   298,   300,   302,   304,
-     310,   314,   318,   322,   326,   332,   338,   339,   343,   346,
-     347,   351,   355,   356,   361,   362,   365,   367,   369,   371,
-     373,   378,   383,   385,   387,   388,   394,   396,   397,   403,
-     404,   407,   411,   412,   415,   419,   423,   427,   428,   434,
-     436,   438,   439,   441,   445,   449,   455,   457,   460,   461,
-     464,   467,   469,   471,   473,   475,   476,   478,   481,   483,
-     485,   489,   492,   494,   498,   501,   502,   504,   506,   508,
-     509,   514,   519,   524,   525,   532,   534,   535,   542,   545,
-     548,   551,   554,   556,   558,   560,   562,   563,   565,   567,
-     569,   571,   573,   577,   582,   588,   595,   602,   610,   614,
-     615,   625,   627,   629,   631,   635,   637,   639,   641,   643,
-     645,   647,   649,   651,   653,   655,   657,   659,   661,   663,
-     665,   667,   669,   671,   673,   675,   677,   679,   681,   683,
-     685,   687,   688,   694,   698,   700,   702,   704,   706,   708,
-     710,   712,   714,   716,   718,   720,   722,   724,   729,   731,
-     733,   735,   737,   741,   745,   749,   753,   754,   760,   761,
-     765,   767,   773,   777,   781,   784,   785,   788,   790,   792,
-     794,   799,   804,   807,   811,   817,   819,   823,   824,   826,
-     828,   835,   841,   846,   851,   858,   864,   866,   868,   870,
-     872,   874,   876,   878,   880,   882,   884,   885,   887,   891,
-     893,   895,   900,   904,   906,   908,   910,   912,   914,   916,
-     918,   920,   922,   924,   926,   927,   930,   931,   934,   936,
-     940,   942,   944,   946,   948,   950,   952,   954,   956,   958
+     141,   144,   145,   146,   147,   158,   159,   162,   166,   167,
+     171,   175,   180,   185,   190,   192,   197,   199,   204,   206,
+     211,   216,   218,   223,   224,   228,   230,   232,   234,   236,
+     238,   240,   242,   246,   247,   249,   250,   260,   261,   264,
+     265,   269,   270,   272,   274,   277,   279,   281,   283,   285,
+     287,   289,   291,   293,   295,   297,   299,   301,   303,   305,
+     311,   315,   319,   323,   327,   333,   339,   340,   344,   347,
+     348,   352,   356,   357,   362,   363,   366,   368,   370,   372,
+     374,   379,   384,   386,   388,   389,   395,   397,   398,   404,
+     405,   408,   412,   413,   416,   420,   424,   428,   429,   435,
+     437,   439,   440,   442,   446,   450,   456,   458,   461,   462,
+     465,   468,   470,   472,   474,   476,   477,   479,   482,   484,
+     486,   490,   493,   495,   499,   502,   503,   505,   507,   509,
+     510,   515,   520,   525,   526,   533,   535,   536,   543,   546,
+     549,   552,   555,   557,   559,   561,   563,   564,   566,   568,
+     570,   572,   574,   578,   583,   589,   596,   603,   611,   615,
+     616,   626,   628,   630,   632,   636,   638,   640,   642,   644,
+     646,   648,   650,   652,   654,   656,   658,   660,   662,   664,
+     666,   668,   670,   672,   674,   676,   678,   680,   682,   684,
+     686,   688,   689,   695,   699,   701,   703,   705,   707,   709,
+     711,   713,   715,   717,   719,   721,   723,   725,   730,   732,
+     734,   736,   738,   742,   746,   750,   754,   755,   761,   762,
+     766,   768,   774,   778,   782,   785,   786,   789,   791,   793,
+     795,   800,   805,   808,   812,   818,   820,   824,   825,   827,
+     829,   836,   842,   847,   852,   859,   865,   867,   869,   871,
+     873,   875,   877,   879,   881,   883,   885,   886,   888,   892,
+     894,   896,   901,   905,   907,   909,   911,   913,   915,   917,
+     919,   921,   923,   925,   927,   928,   931,   932,   935,   937,
+     941,   943,   945,   947,   949,   951,   953,   955,   957,   959
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -1792,87 +1791,88 @@
       -1,    -1,   250,    -1,    -1,   104,   161,   162,   105,    -1,
       -1,   154,    -1,    26,   164,     4,    -1,   125,   258,   126,
       -1,   125,   126,    -1,    -1,    -1,    -1,    28,   166,   253,
-     167,   187,     4,   168,   169,   182,    74,    -1,    -1,     4,
-      -1,   169,   170,     4,    -1,    -1,     5,   171,   172,    -1,
-     224,   110,   196,    -1,    96,   127,   180,   128,    -1,    94,
-     127,   114,   128,    -1,    94,   127,   110,   128,    -1,    97,
-      -1,    97,   127,   114,   128,    -1,    92,    -1,    92,   127,
-     153,   128,    -1,   101,    -1,   101,   127,   153,   128,    -1,
-      99,   127,   114,   128,    -1,   100,    -1,   100,   127,   153,
-     128,    -1,    -1,   180,    73,   181,    -1,   181,    -1,    53,
-      -1,    54,    -1,    56,    -1,    55,    -1,   110,    -1,   114,
-      -1,   125,   258,   126,    -1,    -1,   210,    -1,    -1,    76,
-       4,   184,   191,   186,   190,   185,   193,    77,    -1,    -1,
-     215,     4,    -1,    -1,    86,   257,     4,    -1,    -1,   188,
-      -1,   189,    -1,   188,   189,    -1,    88,    -1,    89,    -1,
-      87,    -1,    90,    -1,    91,    -1,    93,    -1,    95,    -1,
-     173,    -1,   174,    -1,   175,    -1,   176,    -1,   177,    -1,
-     178,    -1,   179,    -1,    78,   257,    73,   257,     4,    -1,
-      78,   257,     4,    -1,    84,   257,     4,    -1,    85,   249,
-       4,    -1,    85,   114,     4,    -1,    85,   249,    73,   257,
-       4,    -1,    85,   114,    73,   257,     4,    -1,    -1,   191,
-     192,     4,    -1,    11,   239,    -1,    -1,   193,   194,     4,
-      -1,    64,   249,   196,    -1,    -1,    30,   195,   224,   218,
-      -1,    -1,   196,   197,    -1,    18,    -1,    19,    -1,    20,
-      -1,    21,    -1,    21,   127,   114,   128,    -1,    21,   127,
-     117,   128,    -1,   102,    -1,    25,    -1,    -1,    80,     4,
-     199,   202,    81,    -1,   206,    -1,    -1,    82,     4,   201,
-     203,    83,    -1,    -1,   202,     4,    -1,   202,   204,     4,
-      -1,    -1,   203,     4,    -1,   203,   205,     4,    -1,    15,
-     257,   240,    -1,    16,   257,   240,    -1,    -1,   208,   127,
-     207,   209,   128,    -1,    65,    -1,    67,    -1,    -1,   239,
-      -1,   114,    22,   257,    -1,   209,    73,   239,    -1,   209,
-      73,   114,    22,   257,    -1,   212,    -1,   210,   212,    -1,
-      -1,   211,   216,    -1,   112,     4,    -1,   121,    -1,   120,
-      -1,   145,    -1,   146,    -1,    -1,   214,    -1,   214,   215,
-      -1,   215,    -1,   103,    -1,   213,   220,     4,    -1,     1,
-       4,    -1,   218,    -1,   217,    73,   218,    -1,   110,   219,
-      -1,    -1,   102,    -1,   226,    -1,   244,    -1,    -1,    30,
-     221,   224,   217,    -1,    31,   114,    73,   249,    -1,    31,
-     117,    73,   249,    -1,    -1,    32,   222,   224,   110,   124,
-     265,    -1,   150,    -1,    -1,    36,   223,   224,   110,   124,
-     265,    -1,    66,   236,    -1,    10,   255,    -1,   118,   250,
-      -1,    14,   257,    -1,   236,    -1,   183,    -1,   198,    -1,
-     200,    -1,    -1,    53,    -1,    54,    -1,    55,    -1,    56,
-      -1,   110,    -1,   249,   124,   257,    -1,   249,   124,   228,
-     257,    -1,   249,   124,   257,   229,   257,    -1,   249,   124,
-     257,   125,   258,   126,    -1,   249,   125,   258,   126,   124,
-     257,    -1,   249,   124,   129,   225,   125,   258,   126,    -1,
-     249,   124,   236,    -1,    -1,   127,   227,   243,   128,   124,
-     235,   127,   238,   128,    -1,   230,    -1,   232,    -1,   234,
-      -1,   249,   124,    14,    -1,   130,    -1,   131,    -1,   132,
-      -1,   132,    -1,   133,    -1,   134,    -1,   135,    -1,   136,
-      -1,    45,    -1,    69,    -1,   123,    -1,    58,    -1,    59,
-      -1,    60,    -1,    61,    -1,    62,    -1,    63,    -1,    51,
-      -1,    52,    -1,    70,    -1,    71,    -1,    72,    -1,    57,
-      -1,   137,    -1,   138,    -1,   131,    -1,    -1,    68,   231,
-     127,   243,   128,    -1,   249,   233,   257,    -1,    37,    -1,
-      38,    -1,    39,    -1,    40,    -1,    47,    -1,    46,    -1,
-      41,    -1,    42,    -1,    43,    -1,    44,    -1,    48,    -1,
-      49,    -1,    50,    -1,   249,   124,   118,   159,    -1,   110,
-      -1,   114,    -1,   117,    -1,   249,    -1,   249,   122,   254,
-      -1,   249,   122,   117,    -1,   249,   122,   114,    -1,   249,
-     122,   249,    -1,    -1,   235,   237,   127,   238,   128,    -1,
-      -1,   238,    73,   239,    -1,   239,    -1,   238,    73,   114,
-      22,   257,    -1,   257,    22,   257,    -1,   114,    22,   257,
-      -1,   257,   240,    -1,    -1,   240,   241,    -1,    17,    -1,
-      21,    -1,    25,    -1,    21,   127,   117,   128,    -1,    21,
-     127,   114,   128,    -1,   249,   196,    -1,   243,    73,   242,
-      -1,   243,    73,   114,    22,   249,    -1,   242,    -1,   114,
-      22,   249,    -1,    -1,   246,    -1,   245,    -1,    13,   257,
-     248,   257,    10,   255,    -1,    13,    14,   257,    10,   255,
-      -1,    13,   257,   247,   255,    -1,    12,   257,   247,   255,
-      -1,    12,   257,   248,   257,    10,   255,    -1,    12,    14,
-     257,    10,   255,    -1,    73,    -1,    10,    -1,    58,    -1,
+     167,   187,     4,   168,   169,   182,    74,    -1,    -1,   169,
+       4,    -1,   169,   170,     4,    -1,    -1,     5,   171,   172,
+      -1,   224,   110,   196,    -1,    96,   127,   180,   128,    -1,
+      94,   127,   114,   128,    -1,    94,   127,   110,   128,    -1,
+      97,    -1,    97,   127,   114,   128,    -1,    92,    -1,    92,
+     127,   153,   128,    -1,   101,    -1,   101,   127,   153,   128,
+      -1,    99,   127,   114,   128,    -1,   100,    -1,   100,   127,
+     153,   128,    -1,    -1,   180,    73,   181,    -1,   181,    -1,
+      53,    -1,    54,    -1,    56,    -1,    55,    -1,   110,    -1,
+     114,    -1,   125,   258,   126,    -1,    -1,   210,    -1,    -1,
+      76,     4,   184,   191,   186,   190,   185,   193,    77,    -1,
+      -1,   215,     4,    -1,    -1,    86,   257,     4,    -1,    -1,
+     188,    -1,   189,    -1,   188,   189,    -1,    88,    -1,    89,
+      -1,    87,    -1,    90,    -1,    91,    -1,    93,    -1,    95,
+      -1,   173,    -1,   174,    -1,   175,    -1,   176,    -1,   177,
+      -1,   178,    -1,   179,    -1,    78,   257,    73,   257,     4,
+      -1,    78,   257,     4,    -1,    84,   257,     4,    -1,    85,
+     249,     4,    -1,    85,   114,     4,    -1,    85,   249,    73,
+     257,     4,    -1,    85,   114,    73,   257,     4,    -1,    -1,
+     191,   192,     4,    -1,    11,   239,    -1,    -1,   193,   194,
+       4,    -1,    64,   249,   196,    -1,    -1,    30,   195,   224,
+     218,    -1,    -1,   196,   197,    -1,    18,    -1,    19,    -1,
+      20,    -1,    21,    -1,    21,   127,   114,   128,    -1,    21,
+     127,   117,   128,    -1,   102,    -1,    25,    -1,    -1,    80,
+       4,   199,   202,    81,    -1,   206,    -1,    -1,    82,     4,
+     201,   203,    83,    -1,    -1,   202,     4,    -1,   202,   204,
+       4,    -1,    -1,   203,     4,    -1,   203,   205,     4,    -1,
+      15,   257,   240,    -1,    16,   257,   240,    -1,    -1,   208,
+     127,   207,   209,   128,    -1,    65,    -1,    67,    -1,    -1,
+     239,    -1,   114,    22,   257,    -1,   209,    73,   239,    -1,
+     209,    73,   114,    22,   257,    -1,   212,    -1,   210,   212,
+      -1,    -1,   211,   216,    -1,   112,     4,    -1,   121,    -1,
+     120,    -1,   145,    -1,   146,    -1,    -1,   214,    -1,   214,
+     215,    -1,   215,    -1,   103,    -1,   213,   220,     4,    -1,
+       1,     4,    -1,   218,    -1,   217,    73,   218,    -1,   110,
+     219,    -1,    -1,   102,    -1,   226,    -1,   244,    -1,    -1,
+      30,   221,   224,   217,    -1,    31,   114,    73,   249,    -1,
+      31,   117,    73,   249,    -1,    -1,    32,   222,   224,   110,
+     124,   265,    -1,   150,    -1,    -1,    36,   223,   224,   110,
+     124,   265,    -1,    66,   236,    -1,    10,   255,    -1,   118,
+     250,    -1,    14,   257,    -1,   236,    -1,   183,    -1,   198,
+      -1,   200,    -1,    -1,    53,    -1,    54,    -1,    55,    -1,
+      56,    -1,   110,    -1,   249,   124,   257,    -1,   249,   124,
+     228,   257,    -1,   249,   124,   257,   229,   257,    -1,   249,
+     124,   257,   125,   258,   126,    -1,   249,   125,   258,   126,
+     124,   257,    -1,   249,   124,   129,   225,   125,   258,   126,
+      -1,   249,   124,   236,    -1,    -1,   127,   227,   243,   128,
+     124,   235,   127,   238,   128,    -1,   230,    -1,   232,    -1,
+     234,    -1,   249,   124,    14,    -1,   130,    -1,   131,    -1,
+     132,    -1,   132,    -1,   133,    -1,   134,    -1,   135,    -1,
+     136,    -1,    45,    -1,    69,    -1,   123,    -1,    58,    -1,
       59,    -1,    60,    -1,    61,    -1,    62,    -1,    63,    -1,
-     119,    -1,   264,    -1,    -1,   251,    -1,   251,    73,   252,
-      -1,   252,    -1,   256,    -1,   249,   125,   258,   126,    -1,
-     125,   260,   126,    -1,   254,    -1,   114,    -1,   117,    -1,
-     110,    -1,   118,    -1,   110,    -1,   118,    -1,   255,    -1,
-     257,    -1,   249,    -1,   265,    -1,    -1,   259,   262,    -1,
-      -1,   261,   262,    -1,   263,    -1,   262,   139,   263,    -1,
-     257,    -1,   106,    -1,   107,    -1,   108,    -1,   109,    -1,
-     111,    -1,   115,    -1,   116,    -1,   114,    -1,   117,    -1
+      51,    -1,    52,    -1,    70,    -1,    71,    -1,    72,    -1,
+      57,    -1,   137,    -1,   138,    -1,   131,    -1,    -1,    68,
+     231,   127,   243,   128,    -1,   249,   233,   257,    -1,    37,
+      -1,    38,    -1,    39,    -1,    40,    -1,    47,    -1,    46,
+      -1,    41,    -1,    42,    -1,    43,    -1,    44,    -1,    48,
+      -1,    49,    -1,    50,    -1,   249,   124,   118,   159,    -1,
+     110,    -1,   114,    -1,   117,    -1,   249,    -1,   249,   122,
+     254,    -1,   249,   122,   117,    -1,   249,   122,   114,    -1,
+     249,   122,   249,    -1,    -1,   235,   237,   127,   238,   128,
+      -1,    -1,   238,    73,   239,    -1,   239,    -1,   238,    73,
+     114,    22,   257,    -1,   257,    22,   257,    -1,   114,    22,
+     257,    -1,   257,   240,    -1,    -1,   240,   241,    -1,    17,
+      -1,    21,    -1,    25,    -1,    21,   127,   117,   128,    -1,
+      21,   127,   114,   128,    -1,   249,   196,    -1,   243,    73,
+     242,    -1,   243,    73,   114,    22,   249,    -1,   242,    -1,
+     114,    22,   249,    -1,    -1,   246,    -1,   245,    -1,    13,
+     257,   248,   257,    10,   255,    -1,    13,    14,   257,    10,
+     255,    -1,    13,   257,   247,   255,    -1,    12,   257,   247,
+     255,    -1,    12,   257,   248,   257,    10,   255,    -1,    12,
+      14,   257,    10,   255,    -1,    73,    -1,    10,    -1,    58,
+      -1,    59,    -1,    60,    -1,    61,    -1,    62,    -1,    63,
+      -1,   119,    -1,   264,    -1,    -1,   251,    -1,   251,    73,
+     252,    -1,   252,    -1,   256,    -1,   249,   125,   258,   126,
+      -1,   125,   260,   126,    -1,   254,    -1,   114,    -1,   117,
+      -1,   110,    -1,   118,    -1,   110,    -1,   118,    -1,   255,
+      -1,   257,    -1,   249,    -1,   265,    -1,    -1,   259,   262,
+      -1,    -1,   261,   262,    -1,   263,    -1,   262,   139,   263,
+      -1,   257,    -1,   106,    -1,   107,    -1,   108,    -1,   109,
+      -1,   111,    -1,   115,    -1,   116,    -1,   114,    -1,   117,
+      -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -2038,7 +2038,7 @@
        6,     0,     6,     0,     6,     1,     1,     1,     2,     3,
        2,     1,     1,     1,     1,     1,     0,     3,     0,     4,
        2,     4,     0,     1,     0,     4,     0,     1,     3,     3,
-       2,     0,     0,     0,    10,     0,     1,     3,     0,     3,
+       2,     0,     0,     0,    10,     0,     2,     3,     0,     3,
        3,     4,     4,     4,     1,     4,     1,     4,     1,     4,
        4,     1,     4,     0,     3,     1,     1,     1,     1,     1,
        1,     1,     3,     0,     1,     0,     9,     0,     2,     0,
@@ -2093,8 +2093,8 @@
        0,     0,    76,    77,    79,    78,    80,    81,   324,     0,
       75,     0,     0,     0,     0,    55,     0,     0,    41,    39,
        0,     0,   324,     0,    67,    63,    62,     0,     0,    61,
-      65,    70,    72,    69,    56,   158,    22,    24,   312,   327,
-       0,   308,    82,    74,    58,     0,     0,   162,   161,   163,
+      65,    70,    72,    69,   158,    22,    24,   312,   327,     0,
+     308,    82,    74,    56,    58,     0,     0,   162,   161,   163,
      164,     0,     0,   158,     0,   156,   311,     0,     0,   160,
       57,    54,   157,     0,   196,   159,    59,     0,     0,   171,
        0,     0,     0,     0,   179,     0,   183,   186,   149,     0,
@@ -2136,7 +2136,7 @@
 {
       -1,    11,    12,    13,    14,    15,   210,    16,    17,    27,
       58,    86,    87,   159,    59,    60,    94,    95,   128,   151,
-      18,    29,    61,    19,    25,    20,    26,    84,   175,   195,
+      18,    29,    61,    19,    25,    20,    26,    84,   175,   194,
      211,   217,   226,   113,   114,   115,   116,   117,   118,   119,
      169,   170,   212,   251,   329,   502,   435,   120,   121,   122,
      473,   377,   436,   519,   532,   539,   308,   362,   252,   330,
@@ -2154,78 +2154,78 @@
 #define YYPACT_NINF -424
 static const yytype_int16 yypact[] =
 {
-     212,  -424,   -90,   -80,   -21,   -28,  -424,  -424,     9,  -424,
-     118,   151,   212,  -424,  -424,  -424,   149,  -424,  -424,  -424,
-    -424,  -424,    93,   153,    32,   163,   154,   125,   171,   180,
-    -424,  -424,  -424,  -424,    68,  -424,  -424,    66,   441,  -424,
+     212,  -424,   -89,   -80,   -21,   -28,  -424,  -424,    -4,  -424,
+     112,   138,   212,  -424,  -424,  -424,   135,  -424,  -424,  -424,
+    -424,  -424,    80,   162,    49,   163,   154,   125,   178,   180,
+    -424,  -424,  -424,  -424,    78,  -424,  -424,    77,   441,  -424,
     -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-      94,  -424,    89,  -424,   204,  -424,  -424,  -424,  -424,   247,
-    -424,   104,  -424,    13,   108,  -424,   209,  -424,  -424,  -424,
+      94,  -424,    95,  -424,   204,  -424,  -424,  -424,  -424,   247,
+    -424,   106,  -424,    13,   110,  -424,   210,  -424,  -424,  -424,
     -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-      75,  -424,  -424,  -424,   483,    91,   103,   114,  -424,  -424,
-    -424,   441,   115,  -424,   226,   113,  -424,  -424,   441,  -424,
-    -424,  -424,  -424,  -424,   106,  -424,   109,  -424,   119,   121,
+      76,  -424,  -424,  -424,   483,   104,   103,   115,  -424,  -424,
+    -424,   441,   116,  -424,   227,   117,  -424,  -424,   441,  -424,
+    -424,  -424,  -424,  -424,   109,  -424,   118,  -424,   119,   121,
      122,   123,   124,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-     231,   483,  -424,    74,   255,   255,  -424,   172,   483,  -424,
-     426,  -424,   -40,   -69,   387,   141,   142,   -40,   -40,  -424,
-    -424,  -424,  -424,  -424,  -424,   133,  -424,   134,   152,   159,
-    -424,  -424,   145,  -424,   193,  -424,  -424,  -424,  -424,   146,
-     147,   148,  -424,  -424,  -424,  -424,  -424,  -424,  -424,   -58,
-    -424,   160,   161,   162,   174,   273,   -40,   -40,  -424,  -424,
+     251,   483,  -424,    74,   255,   255,  -424,   160,   483,  -424,
+     426,  -424,   -40,   -69,   387,   142,   143,   -40,   -40,  -424,
+    -424,  -424,  -424,  -424,  -424,   134,  -424,   139,   151,   167,
+    -424,  -424,   141,  -424,   201,  -424,  -424,  -424,  -424,   147,
+     148,   149,  -424,  -424,  -424,  -424,  -424,  -424,  -424,   -58,
+    -424,   152,   159,   161,   174,  -424,   -40,   -40,  -424,  -424,
      156,   441,  -424,   426,  -424,  -424,  -424,   165,   387,  -424,
-    -424,  -424,  -424,  -424,  -424,    29,  -424,  -424,  -424,    75,
-     177,  -424,  -424,  -424,  -424,   166,   283,  -424,  -424,  -424,
+    -424,  -424,  -424,  -424,    29,  -424,  -424,  -424,    76,   177,
+    -424,  -424,  -424,  -424,  -424,   176,   284,  -424,  -424,  -424,
     -424,   300,   232,    34,    18,  -424,  -424,   125,   234,  -424,
     -424,  -424,  -424,   304,   229,  -424,  -424,   203,    74,  -424,
-     -85,   272,   320,   441,  -424,    -7,    24,  -424,  -424,   535,
+      -1,   272,   320,   441,  -424,   -10,   -42,  -424,  -424,   535,
     -424,  -424,   313,   314,   315,  -424,  -424,  -424,   426,  -424,
     -424,  -424,  -424,  -424,  -424,   194,   318,  -424,  -424,  -424,
     -424,  -424,  -424,  -424,  -424,  -424,   444,  -424,  -424,  -424,
      441,   164,   441,   164,  -424,   125,   250,   253,   125,   125,
     -424,   205,   215,  -424,  -424,  -424,  -424,   549,  -424,  -424,
-     227,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
+     226,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
     -424,  -424,  -424,  -424,   396,    54,  -424,   441,    38,   322,
-    -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,   -85,   441,
-     339,   -85,   441,   243,   222,   222,   245,   248,   549,  -424,
+    -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,    -1,   441,
+     339,    -1,   441,   244,   222,   222,   245,   248,   549,  -424,
     -424,  -424,   335,  -424,   -47,  -424,   479,   493,  -424,  -424,
     -424,  -424,  -424,   233,   249,   426,   265,  -424,  -424,  -424,
-     441,  -424,   -18,   393,   251,  -424,  -424,  -424,  -424,   257,
-    -424,  -424,  -424,   -85,  -424,   375,   -85,  -424,   380,   290,
-     321,  -424,  -424,  -424,   269,   274,   -37,     2,     8,     4,
-     222,   558,   275,    38,   379,   -33,  -424,  -424,   381,   -27,
-    -424,   383,  -424,  -424,   281,  -424,  -424,  -424,  -424,  -424,
+     441,  -424,   -98,   393,   258,  -424,  -424,  -424,  -424,   263,
+    -424,  -424,  -424,    -1,  -424,   367,    -1,  -424,   375,   290,
+     321,  -424,  -424,  -424,   269,   273,   -37,     2,     8,     4,
+     222,   558,   274,    38,   377,   -33,  -424,  -424,   379,   -27,
+    -424,   381,  -424,  -424,   280,  -424,  -424,  -424,  -424,  -424,
     -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
     -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-     441,   284,    84,  -424,   -85,  -424,   -85,  -424,  -424,   243,
-      74,    74,  -424,   441,   441,   -12,   403,  -424,   441,  -424,
-     405,  -424,   441,  -424,   409,  -424,   392,  -424,   535,   441,
-     507,  -424,   131,   441,   521,  -424,   441,  -424,   271,  -424,
+     441,   282,    84,  -424,    -1,  -424,    -1,  -424,  -424,   244,
+      74,    74,  -424,   441,   441,    73,   403,  -424,   441,  -424,
+     404,  -424,   441,  -424,   405,  -424,   391,  -424,   535,   441,
+     507,  -424,   131,   441,   521,  -424,   441,  -424,   288,  -424,
      441,   289,   291,  -424,  -424,  -424,  -424,  -424,  -424,   416,
-     441,   441,   567,   108,  -424,  -424,  -424,  -424,  -424,   222,
+     441,   441,   567,   110,  -424,  -424,  -424,  -424,  -424,   222,
      294,  -424,   401,  -424,  -424,   297,  -424,  -424,  -424,   408,
     -424,  -424,   299,  -424,  -424,  -424,  -424,  -424,     5,   442,
        6,    17,  -424,   443,   131,   131,  -424,   493,   441,    85,
      441,  -424,  -424,   441,  -424,  -424,   441,  -424,   441,    41,
     -424,   -22,  -424,   329,   330,  -424,   445,   455,   456,  -424,
      222,  -424,   457,  -424,  -424,  -424,  -424,  -424,  -424,   125,
-    -424,  -424,   243,    38,  -424
+    -424,  -424,   244,    38,  -424
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -424,  -424,  -424,   436,    10,  -166,  -424,  -424,  -424,  -424,
-     242,  -424,  -424,   -62,  -424,   412,  -424,  -424,  -424,   128,
+    -424,  -424,  -424,   436,    10,  -147,  -424,  -424,  -424,  -424,
+     242,  -424,  -424,   -62,  -424,   409,  -424,  -424,  -424,   126,
     -424,  -424,  -424,    23,  -424,  -424,  -424,  -424,  -424,  -424,
     -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-    -424,   279,  -424,  -424,  -424,  -424,  -424,   340,  -424,   353,
+    -424,   279,  -424,  -424,  -424,  -424,  -424,   345,  -424,   353,
     -424,  -424,  -424,  -424,  -424,  -424,  -330,  -424,  -424,  -424,
     -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,  -424,
-    -424,  -424,   263,   282,  -424,   -63,  -424,  -424,  -423,  -424,
+    -424,  -424,   264,   262,  -424,   -63,  -424,  -424,  -423,  -424,
     -424,  -424,  -424,  -424,  -214,  -424,  -424,  -424,  -424,  -424,
-    -424,  -424,  -424,  -424,  -424,    31,  -225,  -424,   -30,  -320,
-    -344,  -424,   117,   167,  -424,  -424,  -424,   216,   235,  -128,
-     252,  -424,   316,  -424,   207,  -219,    -8,   -38,  -164,  -424,
+    -424,  -424,  -424,  -424,  -424,    31,  -225,  -424,   -18,  -320,
+    -344,  -424,   114,   168,  -424,  -424,  -424,   225,   235,  -128,
+     252,  -424,   316,  -424,   207,  -219,    -2,   -38,  -164,  -424,
     -424,  -424,   328,   419,  -424,  -116
 };
 
@@ -2237,56 +2237,56 @@
 static const yytype_int16 yytable[] =
 {
       79,    96,   152,   227,   187,   383,   465,   141,   441,   512,
-     515,   269,   437,   433,   280,   188,   386,   -42,   200,   223,
-     442,   517,  -165,   438,    21,   142,   381,    91,  -165,   209,
-    -165,  -165,  -165,   143,   204,    22,   381,     3,     4,    57,
+     515,   269,   437,   433,   280,   188,   386,   -42,   199,   223,
+     442,   517,  -165,   438,   304,    21,   381,    91,  -165,  -261,
+    -165,  -165,  -165,   203,   204,    22,   381,     3,     4,    57,
      450,   160,     3,     4,    92,   161,   454,   209,  -165,  -165,
     -165,   454,    62,   126,  -165,   152,   356,   357,   358,   359,
-      79,   323,   205,   360,   326,   327,   470,   205,   342,    57,
-     189,   529,   471,   472,   157,   173,   174,   158,   513,   516,
+      79,   323,   205,   360,   326,   327,   209,   205,   342,    57,
+     189,   529,   -23,   -21,   157,   173,   174,   158,   513,   516,
      351,   382,    62,  -165,  -165,  -165,  -165,   443,   434,   439,
      518,   432,    93,    23,  -165,   451,   266,    24,  -165,   364,
-    -165,   455,   367,   -83,   304,   530,   533,   276,   -84,  -261,
-     277,   281,   268,   468,   196,   197,   145,   147,   531,   544,
-     152,    53,    30,    28,  -165,  -165,  -165,  -165,  -165,  -165,
-     483,   504,  -165,   505,   490,  -165,  -165,  -165,   -23,   -21,
+    -165,   455,   367,   -83,   276,   530,   533,   277,   -84,   142,
+      28,   281,   268,   468,   195,   196,    30,   143,   531,   544,
+     152,    53,   145,   147,  -165,  -165,  -165,  -165,  -165,  -165,
+     483,   504,  -165,   505,   490,  -165,  -165,  -165,    31,    33,
      361,   206,   354,    79,   423,  -165,   206,   425,   484,   207,
-     208,    31,   485,    33,   207,   208,   486,    35,    36,   335,
-      68,    69,    70,    71,   245,    72,    34,    39,   343,    74,
-      75,   344,   345,    77,   310,    51,   340,   352,    46,    47,
-      48,    49,    66,   346,   347,   348,   349,     2,    73,    74,
-      75,    76,    67,   271,   273,   274,   372,   373,   461,   523,
-     335,   462,   524,   -23,    85,   463,     5,   464,    88,    90,
-     543,    53,    52,    97,    98,   123,     1,   152,   124,     2,
-       3,     4,   311,   312,   313,   314,   315,   316,   125,   127,
-     129,   130,   309,   132,   320,   139,   133,   317,     5,   230,
-       6,   231,   232,   233,     7,   148,   134,   458,   135,   136,
-     137,   138,   445,   335,     2,   171,   172,   176,   177,   234,
-     235,   236,   179,   178,    40,   237,   183,   353,    41,   355,
-     182,    42,    43,     5,   184,   185,   186,   194,     8,    52,
-     218,   365,   198,    53,   368,   -46,   270,   219,   190,   191,
-     192,   202,    54,   492,   238,   239,   240,   241,   387,   391,
+     208,   470,   485,    34,   207,   208,   486,   471,   472,   335,
+      68,    69,    70,    71,   245,    72,    35,    39,   343,    74,
+      75,   344,   345,    77,   310,    36,   340,   352,    46,    47,
+      48,    49,    51,   346,   347,   348,   349,     2,    73,    74,
+      75,    76,    66,   271,   273,   274,   372,   373,   461,   523,
+     335,   462,   524,    67,    85,   463,     5,   464,    88,   -23,
+     543,    90,    52,    53,    97,    98,     1,   152,   124,     2,
+       3,     4,   311,   312,   313,   314,   315,   316,   123,   125,
+     127,   129,   309,   148,   320,   130,   132,   317,     5,   230,
+       6,   231,   232,   233,     7,   133,   134,   458,   135,   136,
+     137,   138,   445,   335,     2,   139,   171,   172,   176,   234,
+     235,   236,   178,   177,    40,   237,   182,   353,    41,   355,
+     179,    42,    43,     5,   183,   184,   185,   186,     8,    52,
+     190,   365,   197,    53,   368,   -46,   270,   191,   219,   192,
+     218,   201,    54,   492,   238,   239,   240,   241,   387,   391,
       55,    56,   193,   216,   220,   242,   221,   228,   229,   243,
        8,   244,   395,   267,   466,   467,     9,   283,   284,   285,
      281,   288,   289,   324,    10,   542,   325,   304,    68,    69,
       70,    71,   363,    72,   272,    68,    69,    70,    71,   245,
       72,    77,   328,   246,   501,     8,   247,   248,    77,   366,
-      53,   506,   -47,   369,   337,   374,   249,   380,   375,    54,
+      53,   506,   -47,   337,   369,   374,   249,   380,   375,    54,
     -259,    68,    69,    70,    71,   142,    72,    55,    56,    73,
-      74,    75,    76,   143,    77,   393,  -260,   421,    68,    69,
-      70,    71,   459,    72,   422,   424,    73,    74,    75,    76,
-     426,    77,   427,   430,   429,   387,   469,   493,   431,   448,
-     475,   449,   540,   453,   477,   456,   457,   474,   460,   476,
-     503,   481,   387,   478,   479,   488,   387,   495,   491,   496,
+      74,    75,    76,   143,    77,   393,  -260,   424,    68,    69,
+      70,    71,   459,    72,   421,   426,    73,    74,    75,    76,
+     422,    77,   427,   430,   429,   387,   469,   431,   448,   449,
+     475,   453,   540,   456,   477,   457,   460,   474,   476,   478,
+     503,   481,   387,   479,   493,   488,   387,   495,   491,   496,
      497,   507,   494,   508,   509,   511,    68,    69,    70,    71,
      510,    72,   498,   499,    73,    74,    75,    76,   396,    77,
      162,   163,   164,   165,   397,   398,   514,   520,    32,   536,
      399,   400,   401,   402,   403,   404,   405,   534,   535,   537,
-     538,   541,   406,   407,   408,   409,   250,   203,   149,   391,
-     522,    89,   525,   392,   140,   526,   222,   521,   527,   480,
-     528,   291,   292,   293,   294,   295,   296,   297,   298,   321,
-     299,   300,   301,   302,   303,   376,   224,   166,   447,   201,
-     286,   167,    68,    69,    70,    71,    40,    72,   322,   199,
+     538,   541,   406,   407,   408,   409,   250,   202,    89,   391,
+     522,   392,   525,   149,   140,   526,   224,   222,   527,   480,
+     528,   291,   292,   293,   294,   295,   296,   297,   298,   521,
+     299,   300,   301,   302,   303,   447,   376,   166,   321,   200,
+     286,   167,    68,    69,    70,    71,    40,    72,   322,   198,
      338,   341,   168,   339,    43,    77,   410,   131,   411,     0,
        0,     0,     0,     0,   412,   413,   414,   415,   416,   417,
      418,   419,    68,    69,    70,    71,   142,    72,     0,     0,
@@ -2311,54 +2311,54 @@
 {
       38,    64,   130,   217,   168,   335,   429,   123,     4,     4,
        4,   230,     4,    11,   239,    73,   336,     4,   182,     1,
-      16,     4,     4,    15,   114,   110,    73,    14,    10,   195,
-      12,    13,    14,   118,     5,   115,    73,     8,     9,    29,
-      73,   110,     8,     9,    31,   114,    73,   213,    30,    31,
+      16,     4,     4,    15,   122,   114,    73,    14,    10,   127,
+      12,    13,    14,     4,     5,   115,    73,     8,     9,    29,
+      73,   110,     8,     9,    31,   114,    73,   194,    30,    31,
       32,    73,    29,    91,    36,   183,    18,    19,    20,    21,
-      98,   275,    33,    25,   278,   279,    78,    33,    14,    59,
-     128,    30,    84,    85,   114,   137,   138,   117,    73,    73,
+      98,   275,    33,    25,   278,   279,   213,    33,    14,    59,
+     128,    30,   114,   115,   114,   137,   138,   117,    73,    73,
      305,   128,    59,    65,    66,    67,    68,    83,    86,    81,
       73,   128,    79,   114,    76,   128,   224,   125,    80,   318,
-      82,   128,   321,    74,   122,    64,   128,   114,    74,   127,
-     117,   239,   228,   433,   176,   177,   124,   125,    77,   542,
-     248,   103,     4,   114,   106,   107,   108,   109,   110,   111,
-     450,   475,   114,   477,   454,   117,   118,   119,   114,   115,
+      82,   128,   321,    74,   114,    64,   128,   117,    74,   110,
+     114,   239,   228,   433,   176,   177,     4,   118,    77,   542,
+     248,   103,   124,   125,   106,   107,   108,   109,   110,   111,
+     450,   475,   114,   477,   454,   117,   118,   119,     0,     4,
      102,   112,   306,   181,   363,   127,   112,   366,    17,   120,
-     121,     0,    21,     4,   120,   121,    25,     4,   126,   287,
-     106,   107,   108,   109,   110,   111,    73,     4,   114,   115,
-     116,   117,   118,   119,    10,     4,   304,   305,    53,    54,
-      55,    56,   114,   129,   130,   131,   132,     7,   114,   115,
-     116,   117,   126,   231,   232,   233,   324,   325,   114,   114,
-     328,   117,   117,   114,   110,   424,    26,   426,     4,   105,
-     540,   103,    32,     4,   139,   124,     4,   345,   115,     7,
-       8,     9,    58,    59,    60,    61,    62,    63,   114,   114,
-       4,   118,   270,   127,   272,     4,   127,    73,    26,    10,
-      28,    12,    13,    14,    32,    73,   127,   411,   127,   127,
-     127,   127,   380,   381,     7,   114,   114,   124,   124,    30,
-      31,    32,   103,   111,   110,    36,    73,   305,   114,   307,
-     125,   117,   118,    26,   128,   128,   128,     4,    98,    32,
-     114,   319,   126,   103,   322,   105,    14,     4,   128,   128,
-     128,   126,   112,   457,    65,    66,    67,    68,   336,   337,
+     121,    78,    21,    73,   120,   121,    25,    84,    85,   287,
+     106,   107,   108,   109,   110,   111,     4,     4,   114,   115,
+     116,   117,   118,   119,    10,   126,   304,   305,    53,    54,
+      55,    56,     4,   129,   130,   131,   132,     7,   114,   115,
+     116,   117,   114,   231,   232,   233,   324,   325,   114,   114,
+     328,   117,   117,   126,   110,   424,    26,   426,     4,   114,
+     540,   105,    32,   103,     4,   139,     4,   345,   115,     7,
+       8,     9,    58,    59,    60,    61,    62,    63,   124,   114,
+     114,     4,   270,    73,   272,   118,   127,    73,    26,    10,
+      28,    12,    13,    14,    32,   127,   127,   411,   127,   127,
+     127,   127,   380,   381,     7,     4,   114,   114,   124,    30,
+      31,    32,   111,   124,   110,    36,   125,   305,   114,   307,
+     103,   117,   118,    26,    73,   128,   128,   128,    98,    32,
+     128,   319,   126,   103,   322,   105,    14,   128,     4,   128,
+     114,   126,   112,   457,    65,    66,    67,    68,   336,   337,
      120,   121,   128,   126,     4,    76,    74,    73,     4,    80,
       98,    82,   350,   110,   430,   431,   104,     4,     4,     4,
      448,   127,     4,    73,   112,   539,    73,   122,   106,   107,
      108,   109,    10,   111,    14,   106,   107,   108,   109,   110,
      111,   119,   127,   114,   472,    98,   117,   118,   119,    10,
-     103,   479,   105,   110,   127,   110,   127,    22,   110,   112,
+     103,   479,   105,   127,   110,   110,   127,    22,   110,   112,
      127,   106,   107,   108,   109,   110,   111,   120,   121,   114,
-     115,   116,   117,   118,   119,   110,   127,   126,   106,   107,
-     108,   109,   420,   111,   127,    10,   114,   115,   116,   117,
-      10,   119,   102,   124,    73,   433,   434,   126,   124,   124,
-     438,    22,   530,    22,   442,    22,   125,     4,   124,     4,
-     473,   449,   450,     4,    22,   453,   454,   128,   456,   128,
+     115,   116,   117,   118,   119,   110,   127,    10,   106,   107,
+     108,   109,   420,   111,   126,    10,   114,   115,   116,   117,
+     127,   119,   102,   124,    73,   433,   434,   124,   124,    22,
+     438,    22,   530,    22,   442,   125,   124,     4,     4,     4,
+     473,   449,   450,    22,   126,   453,   454,   128,   456,   128,
        4,   127,   460,    22,   127,   126,   106,   107,   108,   109,
       22,   111,   470,   471,   114,   115,   116,   117,    45,   119,
       53,    54,    55,    56,    51,    52,     4,     4,    12,     4,
       57,    58,    59,    60,    61,    62,    63,   128,   128,     4,
-       4,     4,    69,    70,    71,    72,   224,   188,   128,   507,
-     508,    59,   510,   345,   121,   513,   213,   507,   516,   448,
-     518,    37,    38,    39,    40,    41,    42,    43,    44,   273,
-      46,    47,    48,    49,    50,   328,   214,   110,   381,   183,
+       4,     4,    69,    70,    71,    72,   224,   188,    59,   507,
+     508,   345,   510,   128,   121,   513,   214,   213,   516,   448,
+     518,    37,    38,    39,    40,    41,    42,    43,    44,   507,
+      46,    47,    48,    49,    50,   381,   328,   110,   273,   183,
      248,   114,   106,   107,   108,   109,   110,   111,   273,   181,
      114,   304,   125,   117,   118,   119,   123,    98,   125,    -1,
       -1,    -1,    -1,    -1,   131,   132,   133,   134,   135,   136,
@@ -2403,8 +2403,8 @@
      110,   114,    53,    54,    55,    56,   110,   114,   125,   180,
      181,   114,   114,   153,   153,   168,   124,   124,   111,   103,
      260,   261,   125,    73,   128,   128,   128,   258,    73,   128,
-     128,   128,   128,   128,     4,   169,   153,   153,   126,   262,
-     258,   252,   126,   181,     5,    33,   112,   120,   121,   145,
+     128,   128,   128,   128,   169,   153,   153,   126,   262,   258,
+     252,   126,   181,     4,     5,    33,   112,   120,   121,   145,
      146,   170,   182,   210,   211,   212,   126,   171,   114,     4,
        4,    74,   212,     1,   213,   216,   172,   224,    73,     4,
       10,    12,    13,    14,    30,    31,    32,    36,    65,    66,
@@ -2453,9 +2453,18 @@
 
 /* Like YYERROR except do call yyerror.  This remains here temporarily
    to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
+   Once GCC version 2 has supplanted version 1, this can go.  However,
+   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
+   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+   discussed.  */
 
 #define YYFAIL		goto yyerrlab
+#if defined YYFAIL
+  /* This is here to suppress warnings from the GCC cpp's
+     -Wunused-macros.  Normally we don't worry about that warning, but
+     some users do, and we want to make it easy for users to remove
+     YYFAIL uses, which will produce warnings from Bison 2.5.  */
+#endif
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
@@ -2512,7 +2521,7 @@
    we won't break user code: when these are the locations we know.  */
 
 #ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
 #  define YY_LOCATION_PRINT(File, Loc)			\
      fprintf (File, "%d.%d-%d.%d",			\
 	      (Loc).first_line, (Loc).first_column,	\
@@ -3263,28 +3272,28 @@
     {
         case 2:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1170 "compilers/imcc/imcc.y"
     { if (yynerrs) YYABORT; (yyval.i) = 0; }
     break;
 
   case 5:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1179 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 6:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1180 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 7:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1182 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
@@ -3295,7 +3304,7 @@
 
   case 8:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1188 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
@@ -3306,42 +3315,42 @@
 
   case 9:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1193 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 10:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1194 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 11:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1195 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 12:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1196 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 13:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1200 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 14:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1202 "compilers/imcc/imcc.y"
     {
            (yyval.i) = 0;
@@ -3352,7 +3361,7 @@
 
   case 15:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1211 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->line = atoi((yyvsp[(2) - (5)].s));
@@ -3363,7 +3372,7 @@
 
   case 16:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1217 "compilers/imcc/imcc.y"
     {
            /* set_filename() frees the STRINGC */
@@ -3373,7 +3382,7 @@
 
   case 17:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1225 "compilers/imcc/imcc.y"
     {
           /* We'll want to store an entry while emitting instructions, so just
@@ -3386,7 +3395,7 @@
 
   case 18:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1237 "compilers/imcc/imcc.y"
     {
             STRING * const hll_name = Parrot_str_unescape(interp, (yyvsp[(2) - (2)].s) + 1, '"', NULL);
@@ -3401,14 +3410,14 @@
 
   case 19:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1249 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 20:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1250 "compilers/imcc/imcc.y"
     {
              mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
@@ -3419,14 +3428,14 @@
 
   case 21:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1258 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 22:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1259 "compilers/imcc/imcc.y"
     {
            (yyval.i) = mk_pmc_const(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s));
@@ -3437,14 +3446,14 @@
 
   case 23:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1265 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 24:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1266 "compilers/imcc/imcc.y"
     {
            (yyval.i) = mk_pmc_const_named(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].s));
@@ -3456,49 +3465,49 @@
 
   case 29:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1284 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 30:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1285 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 31:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1286 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 32:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1287 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 33:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1288 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 36:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1293 "compilers/imcc/imcc.y"
     { clear_state(interp); }
     break;
 
   case 37:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1295 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp, IMCC_INFO(interp)->cur_unit,
@@ -3510,7 +3519,7 @@
 
   case 38:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1302 "compilers/imcc/imcc.y"
     {
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3520,7 +3529,7 @@
 
   case 39:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1307 "compilers/imcc/imcc.y"
     {
            (yyval.i) = iSUBROUTINE(interp,
@@ -3533,7 +3542,7 @@
 
   case 40:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1315 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr));
@@ -3542,7 +3551,7 @@
 
   case 41:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1319 "compilers/imcc/imcc.y"
     {
            char   *name = mem_sys_strdup((yyvsp[(2) - (4)].s) + 1);
@@ -3560,21 +3569,21 @@
 
   case 42:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1331 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
   case 44:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1339 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); }
     break;
 
   case 45:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1342 "compilers/imcc/imcc.y"
     {
            /* if (optimizer_level & OPT_PASM)
@@ -3587,7 +3596,7 @@
 
   case 48:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1358 "compilers/imcc/imcc.y"
     {
            int re_open = 0;
@@ -3604,7 +3613,7 @@
 
   case 49:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1373 "compilers/imcc/imcc.y"
     {
             (yyval.sr) = (yyvsp[(2) - (3)].sr);
@@ -3613,14 +3622,14 @@
 
   case 50:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1376 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
   case 51:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1381 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PCCSUB);
@@ -3629,7 +3638,7 @@
 
   case 52:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1385 "compilers/imcc/imcc.y"
     {
            iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (3)].sr));
@@ -3638,7 +3647,7 @@
 
   case 53:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1389 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(5) - (6)].t);
@@ -3651,28 +3660,28 @@
 
   case 54:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1397 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 55:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1401 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 56:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1402 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 57:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1404 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -3687,21 +3696,21 @@
 
   case 58:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1416 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 59:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1416 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(3) - (3)].sr); IMCC_INFO(interp)->is_def = 0; }
     break;
 
   case 60:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1421 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(3) - (3)].t) & VT_UNIQUE_REG)
@@ -3727,14 +3736,14 @@
 
   case 61:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1446 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 62:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1451 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3745,7 +3754,7 @@
 
   case 63:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1457 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3756,7 +3765,7 @@
 
   case 64:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1466 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_VTABLE;
@@ -3767,7 +3776,7 @@
 
   case 65:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1472 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_VTABLE;
@@ -3778,7 +3787,7 @@
 
   case 66:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1481 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
@@ -3789,7 +3798,7 @@
 
   case 67:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1487 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
@@ -3800,7 +3809,7 @@
 
   case 68:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1496 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_NSENTRY;
@@ -3811,7 +3820,7 @@
 
   case 69:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1502 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_NSENTRY;
@@ -3822,7 +3831,7 @@
 
   case 70:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1511 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3832,7 +3841,7 @@
 
   case 71:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1519 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3842,7 +3851,7 @@
 
   case 72:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1524 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3854,7 +3863,7 @@
 
   case 73:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1534 "compilers/imcc/imcc.y"
     {
            add_pcc_multi(interp, IMCC_INFO(interp)->cur_call, NULL);
@@ -3863,7 +3872,7 @@
 
   case 74:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1538 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3873,7 +3882,7 @@
 
   case 75:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1543 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
@@ -3883,35 +3892,35 @@
 
   case 76:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1550 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "INTVAL",   'S'); }
     break;
 
   case 77:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1551 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); }
     break;
 
   case 78:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1552 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "PMC",      'S'); }
     break;
 
   case 79:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1553 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "STRING",   'S'); }
     break;
 
   case 80:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1555 "compilers/imcc/imcc.y"
     {
            SymReg *r;
@@ -3927,7 +3936,7 @@
 
   case 81:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1566 "compilers/imcc/imcc.y"
     {
            SymReg *r;
@@ -3943,14 +3952,14 @@
 
   case 82:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1576 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 85:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1586 "compilers/imcc/imcc.y"
     {
            char name[128];
@@ -3979,112 +3988,112 @@
 
   case 86:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1614 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 87:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1618 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; }
     break;
 
   case 88:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1619 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; }
     break;
 
   case 89:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1623 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
   case 90:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1624 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 91:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1628 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 93:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1633 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (1)].t); }
     break;
 
   case 94:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1634 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 95:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1638 "compilers/imcc/imcc.y"
     { (yyval.t) = P_LOAD; }
     break;
 
   case 96:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1639 "compilers/imcc/imcc.y"
     { (yyval.t) = P_INIT; }
     break;
 
   case 97:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1640 "compilers/imcc/imcc.y"
     { (yyval.t) = P_MAIN; }
     break;
 
   case 98:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1641 "compilers/imcc/imcc.y"
     { (yyval.t) = P_IMMEDIATE; }
     break;
 
   case 99:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1642 "compilers/imcc/imcc.y"
     { (yyval.t) = P_POSTCOMP; }
     break;
 
   case 100:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1643 "compilers/imcc/imcc.y"
     { (yyval.t) = P_ANON; }
     break;
 
   case 101:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1644 "compilers/imcc/imcc.y"
     { (yyval.t) = P_NEED_LEX; }
     break;
 
   case 109:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1656 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
@@ -4094,7 +4103,7 @@
 
   case 110:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1661 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -4103,7 +4112,7 @@
 
   case 111:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1665 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -4113,7 +4122,7 @@
 
   case 112:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1670 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -4122,7 +4131,7 @@
 
   case 113:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1674 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S'));
@@ -4131,7 +4140,7 @@
 
   case 114:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1678 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
@@ -4141,7 +4150,7 @@
 
   case 115:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1683 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (5)].s), 'S'));
@@ -4151,35 +4160,35 @@
 
   case 116:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1691 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 117:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1692 "compilers/imcc/imcc.y"
     { add_pcc_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); }
     break;
 
   case 118:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1696 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (2)].sr); }
     break;
 
   case 119:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1701 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 120:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1703 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
@@ -4189,21 +4198,21 @@
 
   case 121:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1710 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 122:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1711 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 123:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1712 "compilers/imcc/imcc.y"
     {
            IdList * const l = (yyvsp[(4) - (4)].idlist);
@@ -4220,91 +4229,91 @@
 
   case 124:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1726 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 125:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1727 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 126:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1731 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT;   }
     break;
 
   case 127:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1732 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPTIONAL; }
     break;
 
   case 128:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1733 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPT_FLAG; }
     break;
 
   case 129:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1734 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED; }
     break;
 
   case 130:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1735 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s));   (yyval.t) = 0; mem_sys_free((yyvsp[(3) - (4)].s)); }
     break;
 
   case 131:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1736 "compilers/imcc/imcc.y"
     { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; mem_sys_free((yyvsp[(3) - (4)].s)); }
     break;
 
   case 132:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1737 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_UNIQUE_REG; }
     break;
 
   case 133:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1738 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_CALL_SIG; }
     break;
 
   case 134:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1743 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 0); }
     break;
 
   case 135:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1745 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 136:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1747 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->asm_state = AsmDefault;
@@ -4314,28 +4323,28 @@
 
   case 137:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1754 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 1); }
     break;
 
   case 138:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1756 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 139:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1760 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 140:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1762 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
@@ -4345,7 +4354,7 @@
 
   case 141:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1767 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
@@ -4355,14 +4364,14 @@
 
   case 142:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1774 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 143:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1776 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
@@ -4372,7 +4381,7 @@
 
   case 144:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1781 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
@@ -4382,21 +4391,21 @@
 
   case 145:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1788 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 146:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1792 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 147:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1797 "compilers/imcc/imcc.y"
     {
           if (IMCC_INFO(interp)->asm_state == AsmDefault)
@@ -4406,7 +4415,7 @@
 
   case 148:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1802 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->asm_state = AsmDefault;
@@ -4416,28 +4425,28 @@
 
   case 149:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1809 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 150:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1810 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
   case 151:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1814 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 152:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1816 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4452,7 +4461,7 @@
 
   case 153:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1826 "compilers/imcc/imcc.y"
     {
             SymReg * const name = mk_const(interp, (yyvsp[(1) - (3)].s), 'S');
@@ -4462,7 +4471,7 @@
 
   case 154:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1831 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4477,7 +4486,7 @@
 
   case 155:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1841 "compilers/imcc/imcc.y"
     {
            SymReg * const name = mk_const(interp, (yyvsp[(3) - (5)].s), 'S');
@@ -4487,63 +4496,63 @@
 
   case 158:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1862 "compilers/imcc/imcc.y"
     { clear_state(interp); }
     break;
 
   case 159:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1867 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (2)].i); }
     break;
 
   case 160:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1868 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 161:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1869 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 162:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1870 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 163:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1871 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 164:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1872 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 165:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1876 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
   case 169:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1887 "compilers/imcc/imcc.y"
     {
              Instruction * const i = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s)));
@@ -4554,14 +4563,14 @@
 
   case 170:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1897 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (3)].i); }
     break;
 
   case 171:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1899 "compilers/imcc/imcc.y"
     {
            if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) {
@@ -4574,7 +4583,7 @@
 
   case 172:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1910 "compilers/imcc/imcc.y"
     {
            IdList* const l = (yyvsp[(1) - (1)].idlist);
@@ -4585,7 +4594,7 @@
 
   case 173:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1917 "compilers/imcc/imcc.y"
     {
            IdList* const l = (yyvsp[(3) - (3)].idlist);
@@ -4596,7 +4605,7 @@
 
   case 174:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1926 "compilers/imcc/imcc.y"
     {
            IdList* const l = mem_gc_allocate_n_zeroed_typed(interp, 1, IdList);
@@ -4608,28 +4617,28 @@
 
   case 175:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1935 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 176:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1936 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
   case 179:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1943 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 180:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1944 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
@@ -4650,7 +4659,7 @@
 
   case 181:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1960 "compilers/imcc/imcc.y"
     {
             if ((yyvsp[(4) - (4)].sr)->set != 'P') {
@@ -4672,7 +4681,7 @@
 
   case 182:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1977 "compilers/imcc/imcc.y"
     {
             if ((yyvsp[(4) - (4)].sr)->set != 'P') {
@@ -4690,14 +4699,14 @@
 
   case 183:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1989 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 184:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1990 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0);
@@ -4708,14 +4717,14 @@
 
   case 186:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1997 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; }
     break;
 
   case 187:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 1998 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
@@ -4726,7 +4735,7 @@
 
   case 188:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2004 "compilers/imcc/imcc.y"
     {
            (yyval.i) = NULL;
@@ -4737,7 +4746,7 @@
 
   case 189:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2010 "compilers/imcc/imcc.y"
     {
             (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr));
@@ -4746,7 +4755,7 @@
 
   case 190:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2014 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp,
@@ -4763,63 +4772,63 @@
 
   case 191:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2025 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }
     break;
 
   case 192:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2026 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 193:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2027 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 196:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2030 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
   case 197:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2034 "compilers/imcc/imcc.y"
     { (yyval.t) = 'I'; }
     break;
 
   case 198:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2035 "compilers/imcc/imcc.y"
     { (yyval.t) = 'N'; }
     break;
 
   case 199:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2036 "compilers/imcc/imcc.y"
     { (yyval.t) = 'S'; }
     break;
 
   case 200:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2037 "compilers/imcc/imcc.y"
     { (yyval.t) = 'P'; }
     break;
 
   case 201:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2042 "compilers/imcc/imcc.y"
     {
            /* there'd normally be a mem_sys_strdup() here, but the lexer already
@@ -4834,49 +4843,49 @@
 
   case 202:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2055 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "set", 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));  }
     break;
 
   case 203:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2057 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (4)].s), 2, (yyvsp[(1) - (4)].sr), (yyvsp[(4) - (4)].sr));  }
     break;
 
   case 204:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2059 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(4) - (5)].s), 3, (yyvsp[(1) - (5)].sr), (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr)); }
     break;
 
   case 205:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2061 "compilers/imcc/imcc.y"
     { (yyval.i) = iINDEXFETCH(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(5) - (6)].sr)); }
     break;
 
   case 206:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2063 "compilers/imcc/imcc.y"
     { (yyval.i) = iINDEXSET(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (6)].sr), (yyvsp[(3) - (6)].sr), (yyvsp[(6) - (6)].sr)); }
     break;
 
   case 207:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2068 "compilers/imcc/imcc.y"
     { (yyval.i) = iNEW(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (7)].sr), (yyvsp[(4) - (7)].s), (yyvsp[(6) - (7)].sr), 1); }
     break;
 
   case 208:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2071 "compilers/imcc/imcc.y"
     {
            add_pcc_result(interp, (yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
@@ -4887,7 +4896,7 @@
 
   case 209:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2077 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
@@ -4896,7 +4905,7 @@
 
   case 210:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2081 "compilers/imcc/imcc.y"
     {
            IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
@@ -4906,7 +4915,7 @@
 
   case 214:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2089 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
@@ -4915,189 +4924,189 @@
 
   case 215:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2096 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"not"; }
     break;
 
   case 216:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2097 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bnot"; }
     break;
 
   case 217:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2098 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"neg"; }
     break;
 
   case 218:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2102 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
   case 219:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2103 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
   case 220:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2104 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
   case 221:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2105 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
   case 222:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2106 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
   case 223:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2107 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
   case 224:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2108 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"pow"; }
     break;
 
   case 225:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2109 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
   case 226:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2110 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"iseq"; }
     break;
 
   case 227:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2111 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isne"; }
     break;
 
   case 228:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2112 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isgt"; }
     break;
 
   case 229:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2113 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isge"; }
     break;
 
   case 230:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2114 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"islt"; }
     break;
 
   case 231:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2115 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isle"; }
     break;
 
   case 232:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2116 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
   case 233:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2117 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
   case 234:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2118 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
   case 235:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2119 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"and"; }
     break;
 
   case 236:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2120 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"or"; }
     break;
 
   case 237:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2121 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"xor"; }
     break;
 
   case 238:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2122 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
   case 239:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2123 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
   case 240:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2124 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
   case 241:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2130 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
@@ -5108,112 +5117,112 @@
 
   case 242:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2135 "compilers/imcc/imcc.y"
     {  (yyval.i) = 0; }
     break;
 
   case 243:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2142 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(2) - (3)].s), 2, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr)); }
     break;
 
   case 244:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2146 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
   case 245:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2147 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
   case 246:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2148 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
   case 247:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2149 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
   case 248:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2150 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
   case 249:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2151 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
   case 250:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2152 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
   case 251:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2153 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
   case 252:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2154 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
   case 253:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2155 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
   case 254:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2156 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
   case 255:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2157 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
   case 256:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2158 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
   case 257:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2164 "compilers/imcc/imcc.y"
     {
         (yyval.i) = func_ins(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(3) - (4)].s),
@@ -5226,28 +5235,28 @@
 
   case 258:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2174 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s));       mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 259:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2175 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 260:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2176 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));     mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 261:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2178 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
@@ -5258,7 +5267,7 @@
 
   case 262:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2184 "compilers/imcc/imcc.y"
     {
             /* disallow bareword method names; SREG name constants are fine */
@@ -5277,7 +5286,7 @@
 
   case 263:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2198 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
@@ -5288,7 +5297,7 @@
 
   case 264:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2204 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
@@ -5299,14 +5308,14 @@
 
   case 265:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2209 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
     break;
 
   case 266:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2215 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
@@ -5316,21 +5325,21 @@
 
   case 267:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2219 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (5)].i); }
     break;
 
   case 268:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2223 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 269:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2225 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -5345,7 +5354,7 @@
 
   case 270:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2235 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -5360,7 +5369,7 @@
 
   case 271:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2245 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -5372,7 +5381,7 @@
 
   case 272:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2252 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -5382,7 +5391,7 @@
 
   case 273:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2257 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -5394,70 +5403,70 @@
 
   case 274:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2266 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
   case 275:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2270 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 276:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2271 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 277:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2275 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT;     }
     break;
 
   case 278:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2276 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED;    }
     break;
 
   case 279:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2277 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_CALL_SIG; }
     break;
 
   case 280:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2280 "compilers/imcc/imcc.y"
     { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
   case 281:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2281 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s));   (yyval.t) = 0; }
     break;
 
   case 282:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2285 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
   case 283:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2290 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -5472,7 +5481,7 @@
 
   case 284:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2300 "compilers/imcc/imcc.y"
     {
             add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call,
@@ -5483,7 +5492,7 @@
 
   case 285:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2306 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
@@ -5498,7 +5507,7 @@
 
   case 286:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2316 "compilers/imcc/imcc.y"
     {
            add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(1) - (3)].s), 'S'), (yyvsp[(3) - (3)].sr));
@@ -5508,28 +5517,28 @@
 
   case 287:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2320 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 288:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2324 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 289:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2325 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 290:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2330 "compilers/imcc/imcc.y"
     {
            (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, inv_op((yyvsp[(3) - (6)].s)), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
@@ -5538,7 +5547,7 @@
 
   case 291:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2334 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
@@ -5547,7 +5556,7 @@
 
   case 292:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2338 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
@@ -5556,7 +5565,7 @@
 
   case 293:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2345 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
@@ -5565,7 +5574,7 @@
 
   case 294:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2349 "compilers/imcc/imcc.y"
     {
            (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
@@ -5574,7 +5583,7 @@
 
   case 295:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2353 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
@@ -5583,91 +5592,91 @@
 
   case 296:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2359 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 297:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2360 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 298:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2364 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"eq"; }
     break;
 
   case 299:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2365 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ne"; }
     break;
 
   case 300:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2366 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"gt"; }
     break;
 
   case 301:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2367 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ge"; }
     break;
 
   case 302:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2368 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lt"; }
     break;
 
   case 303:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2369 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"le"; }
     break;
 
   case 306:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2378 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
   case 307:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2379 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 308:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2383 "compilers/imcc/imcc.y"
     { (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
     break;
 
   case 310:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2388 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 311:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2390 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (4)].sr);
@@ -5679,7 +5688,7 @@
 
   case 312:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2397 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
@@ -5689,49 +5698,49 @@
 
   case 314:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2404 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 315:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2405 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 316:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2409 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 317:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2410 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 318:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2414 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 319:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2415 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 324:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2429 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys    = 0;
@@ -5740,7 +5749,7 @@
 
   case 325:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2433 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
@@ -5751,7 +5760,7 @@
 
   case 326:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2441 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys = 0;
@@ -5760,7 +5769,7 @@
 
   case 327:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2445 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
@@ -5771,14 +5780,14 @@
 
   case 328:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2453 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 329:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2455 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
@@ -5788,7 +5797,7 @@
 
   case 330:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2463 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
@@ -5797,71 +5806,71 @@
 
   case 331:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2469 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
     break;
 
   case 332:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2470 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
     break;
 
   case 333:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2471 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
     break;
 
   case 334:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2472 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
     break;
 
   case 335:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2473 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 336:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2477 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 337:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2478 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 338:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2479 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 339:
 
-/* Line 1455 of yacc.c  */
+/* Line 1464 of yacc.c  */
 #line 2480 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
 
 
-/* Line 1455 of yacc.c  */
-#line 5854 "compilers/imcc/imcparser.c"
+/* Line 1464 of yacc.c  */
+#line 5863 "compilers/imcc/imcparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -6072,7 +6081,7 @@
 
 
 
-/* Line 1675 of yacc.c  */
+/* Line 1684 of yacc.c  */
 #line 2486 "compilers/imcc/imcc.y"
 
 

Modified: branches/codestring/compilers/imcc/imcparser.h
==============================================================================
--- branches/codestring/compilers/imcc/imcparser.h	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/compilers/imcc/imcparser.h	Sat May  8 21:42:00 2010	(r46416)
@@ -9,13 +9,12 @@
  */
 /* HEADERIZER HFILE: none */
 /* HEADERIZER STOP */
-
-/* A Bison parser, made by GNU Bison 2.4.1.  */
+/* A Bison parser, made by GNU Bison 2.4.2.  */
 
 /* Skeleton interface for Bison's Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989-1990, 2000-2006, 2009-2010 Free Software
+   Foundation, Inc.
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -301,7 +300,7 @@
 typedef union YYSTYPE
 {
 
-/* Line 1676 of yacc.c  */
+/* Line 1685 of yacc.c  */
 #line 1075 "compilers/imcc/imcc.y"
 
     IdList * idlist;
@@ -312,8 +311,8 @@
 
 
 
-/* Line 1676 of yacc.c  */
-#line 306 "compilers/imcc/imcparser.h"
+/* Line 1685 of yacc.c  */
+#line 305 "compilers/imcc/imcparser.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */

Modified: branches/codestring/compilers/imcc/pbc.c
==============================================================================
--- branches/codestring/compilers/imcc/pbc.c	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/compilers/imcc/pbc.c	Sat May  8 21:42:00 2010	(r46416)
@@ -356,13 +356,21 @@
     PackFile_Constant *new_constant = PackFile_Constant_new(interp);
 
     /* Update the constant count and reallocate */
-    if (interp->code->const_table->constants)
+    if (interp->code->const_table->constants) {
         interp->code->const_table->constants =
             mem_gc_realloc_n_typed_zeroed(interp, interp->code->const_table->constants,
                 newcount, oldcount, PackFile_Constant *);
-    else
+    }
+    else {
+        /* initialize rlookup cache */
+        interp->code->const_table->string_hash =
+            Parrot_pmc_new_init_int(interp, enum_class_Hash, enum_type_INTVAL);
+        ((Hash *)VTABLE_get_pointer(interp, interp->code->const_table->string_hash))->compare =
+            (hash_comp_fn)STRING_compare_distinct_cs_enc;
+
         interp->code->const_table->constants =
             mem_gc_allocate_n_zeroed_typed(interp, newcount, PackFile_Constant *);
+    }
 
     interp->code->const_table->constants[oldcount] = new_constant;
     interp->code->const_table->const_count         = newcount;
@@ -998,6 +1006,8 @@
         constant->type              = PFC_STRING;
         constant->u.string          = s;
 
+        VTABLE_set_integer_keyed_str(interp, table->string_hash, s, k);
+
         return k;
     }
 }

Modified: branches/codestring/include/parrot/hash.h
==============================================================================
--- branches/codestring/include/parrot/hash.h	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/include/parrot/hash.h	Sat May  8 21:42:00 2010	(r46416)
@@ -380,6 +380,14 @@
         __attribute__nonnull__(1)
         __attribute__nonnull__(2);
 
+PARROT_WARN_UNUSED_RESULT
+int STRING_compare_distinct_cs_enc(PARROT_INTERP,
+    ARGIN(const void *search_key),
+    ARGIN(const void *bucket_key))
+        __attribute__nonnull__(1)
+        __attribute__nonnull__(2)
+        __attribute__nonnull__(3);
+
 #define ASSERT_ARGS_parrot_dump_hash __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
 #define ASSERT_ARGS_parrot_hash_clone __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
@@ -505,6 +513,11 @@
 #define ASSERT_ARGS_STRING_compare __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
        PARROT_ASSERT_ARG(interp) \
     , PARROT_ASSERT_ARG(search_key))
+#define ASSERT_ARGS_STRING_compare_distinct_cs_enc \
+     __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
+       PARROT_ASSERT_ARG(interp) \
+    , PARROT_ASSERT_ARG(search_key) \
+    , PARROT_ASSERT_ARG(bucket_key))
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 /* HEADERIZER END: src/hash.c */
 

Modified: branches/codestring/src/dynpmc/gziphandle.pmc
==============================================================================
--- branches/codestring/src/dynpmc/gziphandle.pmc	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/src/dynpmc/gziphandle.pmc	Sat May  8 21:42:00 2010	(r46416)
@@ -307,7 +307,7 @@
                 "failed to allocate");
 
         srcLen = Parrot_str_byte_length(INTERP, str);
-        dstLen = srcLen;
+        dstLen = 2 * srcLen;
     REDO:
         buf = mem_allocate_n_zeroed_typed(dstLen, char);
 
@@ -318,15 +318,16 @@
         }
 
         rc = uncompress((Bytef *)buf, &dstLen, (const Bytef *)src, srcLen);
-        Parrot_str_free_cstring(src);
 
         switch (rc) {
           case Z_OK:
+            Parrot_str_free_cstring(src);
             dst = Parrot_str_new(INTERP, buf, dstLen);
             mem_sys_free(buf);
             break;
 
           case Z_MEM_ERROR:
+            Parrot_str_free_cstring(src);
             mem_sys_free(buf);
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
                 "not enough memory");
@@ -338,13 +339,14 @@
             goto REDO;
 
           case Z_DATA_ERROR:
+            Parrot_str_free_cstring(src);
             mem_sys_free(buf);
             Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_ILL_INHERIT,
                 "input data corrupted");
             break;
 
           default:
-            /* these are the only three documented return values */
+            /* these are the only four documented return values */
             break;
         }
 

Modified: branches/codestring/src/hash.c
==============================================================================
--- branches/codestring/src/hash.c	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/src/hash.c	Sat May  8 21:42:00 2010	(r46416)
@@ -193,6 +193,35 @@
 
 /*
 
+=item C<int STRING_compare_distinct_cs_enc(PARROT_INTERP, const void
+*search_key, const void *bucket_key)>
+
+Compare two strings. Returns 0 if they are identical. Considers differing
+charset or encoding to be distinct.
+
+*/
+
+PARROT_WARN_UNUSED_RESULT
+int
+STRING_compare_distinct_cs_enc(PARROT_INTERP, ARGIN(const void *search_key),
+                                                ARGIN(const void *bucket_key))
+{
+    ASSERT_ARGS(STRING_compare_distinct_cs_enc)
+    STRING const *s1 = (STRING const *)search_key;
+    STRING const *s2 = (STRING const *)bucket_key;
+
+    if (s1 && s2 && (
+            s1->charset != s2->charset ||
+            s1->encoding != s2->encoding)) {
+        return 1;
+    }
+
+    return STRING_compare(interp, search_key, bucket_key);
+}
+
+
+/*
+
 =item C<static int pointer_compare(PARROT_INTERP, const void *a, const void *b)>
 
 Compares the two pointers, returning 0 if they are identical

Modified: branches/codestring/src/packout.c
==============================================================================
--- branches/codestring/src/packout.c	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/src/packout.c	Sat May  8 21:42:00 2010	(r46416)
@@ -1,5 +1,5 @@
 /*
-Copyright (C) 2001-2009, Parrot Foundation.
+Copyright (C) 2001-2010, Parrot Foundation.
 This program is free software. It is subject to the same license as
 Parrot itself.
 $Id$
@@ -260,43 +260,12 @@
     GETATTR_Key_str_key(interp, key, key_str);
     GETATTR_Key_num_key(interp, key, key_num);
 
-    /* 
-     * string_hash contains array of all possible charset/encoding
-     * combinations for given string.
-     *
-     * Because we don't have templateble PMC like tuple<charset, encoding, i>
-     * we store FIA [charset ^ encoding, i].
-     *
-     * So cache looks like this:
-     *   "foo" => [
-     *      [charset1 ^ encoding1, index1],
-     *      ...
-     *      [charsetN ^ encodingN, indexN]
-     *   ]
-     */
-
-    if (type == PFC_STRING) {
-        /* Auto-vivify cache */
-        if (PMC_IS_NULL(ct->string_hash)) {
-            DECL_CONST_CAST;
-            PackFile_ConstTable * c = PARROT_const_cast(PackFile_ConstTable*, ct);
-            c->string_hash = Parrot_pmc_new(interp, enum_class_Hash);
+    if (type == PFC_STRING && !PMC_IS_NULL(ct->string_hash)) {
+        if (VTABLE_exists_keyed_str(interp, ct->string_hash, key_str)) {
+            return VTABLE_get_integer_keyed_str(interp, ct->string_hash, key_str);
         }
-
-        /* Auto-vivify cache item */
-        string_list = VTABLE_get_pmc_keyed_str(interp, ct->string_hash, key_str);
-        if (PMC_IS_NULL(string_list)) {
-            string_list = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
-            VTABLE_set_pmc_keyed_str(interp, ct->string_hash, key_str, string_list);
-        }
-
-        /* Iterate of cache and try to find exactly this string */
-        strings = VTABLE_elements(interp, string_list);
-        for (i = 0; i < strings; ++i) {
-            PMC    *item = VTABLE_get_pmc_keyed_int(interp, string_list, i);
-            INTVAL xored = VTABLE_get_integer_keyed_int(interp, item, 0);
-            if (((size_t)key_str->encoding ^ (size_t)key_str->charset) == (size_t)xored)
-                return VTABLE_get_integer_keyed_int(interp, item, 1);
+        else {
+            return -1;
         }
     }
 
@@ -312,14 +281,6 @@
                 ==  Parrot_charset_number_of_str(interp, sc)
                 &&  Parrot_encoding_number_of_str(interp, key_str)
                 ==  Parrot_encoding_number_of_str(interp, sc)) {
-                    /* Cache found string */
-                    PMC *item = Parrot_pmc_new_init_int(interp,
-                                    enum_class_FixedIntegerArray, 2);
-                    VTABLE_set_integer_keyed_int(interp, item, 0,
-                            (size_t)sc->encoding ^ (size_t)sc->charset);
-                    VTABLE_set_integer_keyed_int(interp, item, 1,
-                            i);
-                    VTABLE_push_pmc(interp, string_list, item);
                     return i;
                 }
             }

Modified: branches/codestring/src/pmc/stringbuilder.pmc
==============================================================================
--- branches/codestring/src/pmc/stringbuilder.pmc	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/src/pmc/stringbuilder.pmc	Sat May  8 21:42:00 2010	(r46416)
@@ -103,8 +103,7 @@
     VTABLE STRING *get_string() {
         STRING *buffer, *retv;
         GET_ATTR_buffer(INTERP, SELF, buffer);
-        retv = Parrot_str_clone(INTERP, buffer);
-        return retv;
+        return Parrot_str_clone(INTERP, buffer);
     }
 
 /*
@@ -202,7 +201,10 @@
 
 */
     VTABLE void set_string_native(STRING *s) {
-        SET_ATTR_buffer(INTERP, SELF, Parrot_str_clone(INTERP, s));
+        STRING * tmp = Parrot_str_clone(INTERP, s);
+        /* Unset hashval. We update this string all the time */
+        tmp->hashval = 0;
+        SET_ATTR_buffer(INTERP, SELF, tmp);
     }
     VTABLE void set_pmc(PMC *s) {
         SET_ATTR_buffer(INTERP, SELF, VTABLE_get_string(INTERP, s));

Modified: branches/codestring/src/string/api.c
==============================================================================
--- branches/codestring/src/string/api.c	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/src/string/api.c	Sat May  8 21:42:00 2010	(r46416)
@@ -386,7 +386,7 @@
     STRUCT_COPY(d, s);
 
     /* Now check that buffer allocated from pool and affected by compacting */
-    if (is_movable) {
+    if (is_movable && Buffer_bufstart(s)) {
         /* If so, mark it as shared */
         INTVAL * const buffer_flags = Buffer_bufrefcountptr(d);
         *buffer_flags |= Buffer_shared_FLAG;

Modified: branches/codestring/t/compilers/imcc/syn/regressions.t
==============================================================================
--- branches/codestring/t/compilers/imcc/syn/regressions.t	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/t/compilers/imcc/syn/regressions.t	Sat May  8 21:42:00 2010	(r46416)
@@ -51,7 +51,7 @@
 hello
 OUT
 
-pir_output_is( <<'CODE', <<'OUT', 'comments between .param(TT #1035)', todo => 'broken');
+pir_output_is( <<'CODE', <<'OUT', 'comments between .param(TT #1035)');
 .sub main :main
   comments(1,2)
 .end
@@ -79,7 +79,7 @@
 hello
 OUT
 
-pir_output_is( <<'CODE', <<'OUT', 'whitespace between .param(TT #1035)', todo => 'broken');
+pir_output_is( <<'CODE', <<'OUT', 'whitespace between .param(TT #1035)');
 .sub main :main
   comments(1,2)
 .end

Modified: branches/codestring/t/dynpmc/gziphandle.t
==============================================================================
--- branches/codestring/t/dynpmc/gziphandle.t	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/t/dynpmc/gziphandle.t	Sat May  8 21:42:00 2010	(r46416)
@@ -22,7 +22,7 @@
     .local pmc config_hash, interp
     .local int num_tests
 
-    num_tests = 6
+    num_tests = 9
     plan(num_tests)
     interp = getinterp
     config_hash = interp[.IGLOBALS_CONFIG_HASH]
@@ -31,6 +31,7 @@
 
     $P0 = loadlib 'gziphandle'
     test_handle()
+    test_stream()
     test_version()
     test_basic()
     .return()
@@ -49,6 +50,32 @@
     ok($I0, 'does Handle')
 .end
 
+.include 'stat.pasm'
+
+.sub 'test_stream'
+    $P0 = new 'FileHandle'
+    $S0 = $P0.'readall'('t/dynpmc/gziphandle.t')
+    $I0 = length $S0
+    diag($I0)
+    .const string filename = 't/dynpmc/gziphandle.t.gz'
+    $P1 = new 'GzipHandle'
+    $P1.'open'(filename, 'wb')
+    $P1.'puts'($S0)
+    $P1.'close'()
+    $I1 = stat filename, .STAT_FILESIZE
+    diag($I1)
+    $I2 = $I1 < $I0
+    ok($I2, "compressed")
+    $P2 = new 'GzipHandle'
+    $P2.'open'(filename, 'rb')
+    $S1 = $P2.'read'($I0)
+    $P2.'close'()
+    is($S1, $S0, "gzip stream")
+    $P0 = loadlib 'os'
+    $P0 = new 'OS'
+    $P0.'rm'(filename)
+.end
+
 .sub 'test_version'
     $P0 = new 'GzipHandle'
     $S0 =$P0.'version'()
@@ -67,6 +94,15 @@
     is($I0, 15, "compress")
     $S0 = $P0.'uncompress'($S0)
     is($S0, data, "uncompress")
+
+    $S0 = repeat 'repeat', 100
+    $I0 = length $S0
+    $S1 = $P0.'compress'($S0)
+    $I1 = length $S1
+    $N0 = $I1 / $I0
+    diag($N0)
+    $S2 = $P0.'uncompress'($S1)
+    is($S2, $S0, "uncompress with many realloc")
 .end
 
 # Local Variables:

Modified: branches/codestring/t/library/p6object.t
==============================================================================
--- branches/codestring/t/library/p6object.t	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/t/library/p6object.t	Sat May  8 21:42:00 2010	(r46416)
@@ -138,7 +138,7 @@
     $I0 = $P0.'can'(rpaobj, 'foo')
     ok($I0, '< ResizablePMCArray_obj.^can("foo") >')
     $I0 = $P0.'isa'(rpaobj, listproto)
-    todo($I0, '< ResizablePMCArray_obj.^isa(List) >', 'UNIMPL?')
+    todo($I0, '< ResizablePMCArray_obj.^isa(List) >', 'unimplemented: TT #1617')
 
     ##  create class with a different proto name
     .local pmc myobjectproto

Modified: branches/codestring/t/oo/metamodel.t
==============================================================================
--- branches/codestring/t/oo/metamodel.t	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/t/oo/metamodel.t	Sat May  8 21:42:00 2010	(r46416)
@@ -52,7 +52,7 @@
     $P1 = attributes['tail']
     $S1 = $P1['type']
     $I0 = iseq $S1, 'Str'
-    todo($I0, "tail attribute has a type", "not implemented")
+    todo($I0, "tail attribute has a type", "not implemented: TT #1618")
 #    is($S1,'Str', "tail attribute has a type")
     goto end_tail_attrib_test
   no_tail_attribute:
@@ -85,7 +85,7 @@
     fail("no attribute")
 NEXT:
 
-    todo(0, "new opcode makes working objects", "not implemented")
+    todo(0, "new opcode makes working objects", "not implemented: TT #1619")
 #    $P0 = new "Dog"
 #    $I0 = defined $P0
 #    isa_ok($P0, "Dog", "new opcode makes working objects")

Modified: branches/codestring/t/pmc/bigint.t
==============================================================================
--- branches/codestring/t/pmc/bigint.t	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/t/pmc/bigint.t	Sat May  8 21:42:00 2010	(r46416)
@@ -745,7 +745,7 @@
     ne $S0, $S6, k25
     inc $I1
 k25:
-    todo($I1, 'integer negation of MinInt converts MaxInt+1 to BigInt')
+    todo( $I1, 'integer negation of MinInt converts MaxInt+1 to BigInt', 'TT #1616')
 
     $I1 = 0
     $P0 = new ['Integer']
@@ -760,7 +760,7 @@
     ne $S0, $S6, k27
     inc $I1
 k27:
-    todo($I1, 'integer absolute-value of MinInt converts MaxInt+1 to BigInt')
+    todo( $I1, 'integer absolute-value of MinInt converts MaxInt+1 to BigInt', 'TT #1616')
 
     $P0 = new ['Integer']
     $P0 = $I3

Modified: branches/codestring/t/pmc/class.t
==============================================================================
--- branches/codestring/t/pmc/class.t	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/t/pmc/class.t	Sat May  8 21:42:00 2010	(r46416)
@@ -273,7 +273,7 @@
 
     is(test_string_val, 'bar', 'add_method() invoking method added to class works')
 t_class_meth:
-    todo(0, 'add_method() invoking method added to class works', "classes don't seem to call methods yet")
+    todo( 0, 'add_method() invoking method added to class works', "classes don't seem to call methods yet:  TT #1615")
 
     obj_inst = class.'new'()
     test_string_val = obj_inst.'foo'()

Modified: branches/codestring/t/pmc/default.t
==============================================================================
--- branches/codestring/t/pmc/default.t	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/t/pmc/default.t	Sat May  8 21:42:00 2010	(r46416)
@@ -20,14 +20,35 @@
 .sub main :main
     .include 'test_more.pir'
 
-    plan(3)
+    plan(5)
     test_default()
     test_inspect_vtable_function()
 .end
 
 .sub test_default
-    #new $P0, ['default']
-    todo(0,'the default PMC does not exist')
+    $I0 = 1
+    push_eh init
+    $P0 = new ['default']
+    $I0 = 0
+  init:
+    pop_eh
+    ok($I0, "Couldn't create default PMC directly")
+
+    $I0 = 1
+    push_eh init_int
+    $P0 = new ['default'], 42
+    $I0 = 0
+  init_int:
+    pop_eh
+    ok($I0, "Couldn't create default PMC directly with int initializer")
+
+    $I0 = 1
+    push_eh init_pmc
+    $P0 = new ['default'], $P1
+    $I0 = 0
+  init_pmc:
+    pop_eh
+    ok($I0, "Couldn't create default PMC directly with PMC initializer")
 .end
 
 .sub test_inspect_vtable_function

Modified: branches/codestring/t/pmc/packfile.t
==============================================================================
--- branches/codestring/t/pmc/packfile.t	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/t/pmc/packfile.t	Sat May  8 21:42:00 2010	(r46416)
@@ -314,7 +314,7 @@
 
     $I0 = cmp first, second
     $I0 = not $I0
-    todo($I0, 'pack produced same result twice')
+    todo($I0, 'pack produced same result twice: TT #1614')
     .return()
 load_error:
     .get_results($P0)

Modified: branches/codestring/t/pmc/stringbuilder.t
==============================================================================
--- branches/codestring/t/pmc/stringbuilder.t	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/t/pmc/stringbuilder.t	Sat May  8 21:42:00 2010	(r46416)
@@ -20,13 +20,14 @@
 .sub 'main' :main
     .include 'test_more.pir'
 
-    plan(21)
+    plan(23)
     test_create()               # 2 tests
     test_push_string()          # 9 tests
     test_push_pmc()             # 4 tests
     test_push_string_unicode()  # 1 test
     test_i_concatenate()        # 1 test
     test_set_string_native()    # 3 tests
+    test_set_string_native_with_hash()    # 2 tests
 
     # END_OF_TESTS
 .end
@@ -160,6 +161,29 @@
 
 .end
 
+.sub 'test_set_string_native_with_hash'
+    .local pmc sb, hash
+    sb   = new ["StringBuilder"]
+    hash = new ['Hash']
+
+    $S0 = "foo"
+    hash[$S0] = "foo"
+    sb   = $S0
+    # Used later
+    $S0  = sb
+
+    sb .= "bar"
+    $S1  = sb
+    hash[$S1] = $S1
+
+    $S99 = hash[$S0]
+    is ( $S99, "foo", "First string stored in hash" )
+
+    $S99 = hash[$S1]
+    is ( $S99, "foobar", "Second string stored in hash" )
+
+.end
+
 # Local Variables:
 #   mode: pir
 #   fill-column: 100

Modified: branches/codestring/tools/dev/fetch_languages.pl
==============================================================================
--- branches/codestring/tools/dev/fetch_languages.pl	Sat May  8 21:31:17 2010	(r46415)
+++ branches/codestring/tools/dev/fetch_languages.pl	Sat May  8 21:42:00 2010	(r46416)
@@ -265,8 +265,8 @@
 
     {
         name       => 'pynie',
-        scm        => 'SVN',
-        repository => 'http://pynie.googlecode.com/svn/trunk'
+        scm        => 'HG',
+        repository => 'http://bitbucket.org/allison/pynie'
     },
 
     {


More information about the parrot-commits mailing list