[svn:parrot] r40416 - in branches/auto_attrs: . compilers/imcc include/parrot src src/gc src/interp src/pmc src/runcore t/src tools/dev

NotFound at svn.parrot.org NotFound at svn.parrot.org
Wed Aug 5 11:44:13 UTC 2009


Author: NotFound
Date: Wed Aug  5 11:44:12 2009
New Revision: 40416
URL: https://trac.parrot.org/parrot/changeset/40416

Log:
merge from trunk r40415 (keys_cleanup)

Modified:
   branches/auto_attrs/   (props changed)
   branches/auto_attrs/compilers/imcc/imc.h
   branches/auto_attrs/compilers/imcc/imcc.y
   branches/auto_attrs/compilers/imcc/imcparser.c
   branches/auto_attrs/compilers/imcc/imcparser.h
   branches/auto_attrs/compilers/imcc/pbc.c
   branches/auto_attrs/compilers/imcc/symreg.c
   branches/auto_attrs/compilers/imcc/symreg.h
   branches/auto_attrs/include/parrot/key.h
   branches/auto_attrs/include/parrot/runcore_trace.h   (props changed)
   branches/auto_attrs/src/gc/generational_ms.c   (props changed)
   branches/auto_attrs/src/gc/incremental_ms.c   (props changed)
   branches/auto_attrs/src/interp/inter_create.c   (props changed)
   branches/auto_attrs/src/key.c
   branches/auto_attrs/src/packdump.c
   branches/auto_attrs/src/packfile.c
   branches/auto_attrs/src/packout.c
   branches/auto_attrs/src/pmc/addrregistry.pmc
   branches/auto_attrs/src/runcore/cores.c   (props changed)
   branches/auto_attrs/src/runcore/trace.c   (props changed)
   branches/auto_attrs/t/src/embed.t   (props changed)
   branches/auto_attrs/tools/dev/mk_gitignore.pl   (props changed)

Modified: branches/auto_attrs/compilers/imcc/imc.h
==============================================================================
--- branches/auto_attrs/compilers/imcc/imc.h	Wed Aug  5 11:29:37 2009	(r40415)
+++ branches/auto_attrs/compilers/imcc/imc.h	Wed Aug  5 11:44:12 2009	(r40416)
@@ -635,7 +635,6 @@
     int                   has_compile;
     int                   imcc_warn;
     int                   in_pod;
-    int                   in_slice;
     int                   ins_line;
     int                   keyvec;
     int                   line;                   /* current line number */

Modified: branches/auto_attrs/compilers/imcc/imcc.y
==============================================================================
--- branches/auto_attrs/compilers/imcc/imcc.y	Wed Aug  5 11:29:37 2009	(r40415)
+++ branches/auto_attrs/compilers/imcc/imcc.y	Wed Aug  5 11:44:12 2009	(r40416)
@@ -1345,10 +1345,6 @@
 maybe_ns:
      '[' keylist ']'
         {
-            if (IMCC_INFO(interp)->in_slice)
-                IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
-                    "Slice not allowed in namespace.");
-
             $$ = $2;
         }
    | '[' ']'                   { $$ = NULL; }
@@ -2380,7 +2376,6 @@
 keylist:
          {
            IMCC_INFO(interp)->nkeys    = 0;
-           IMCC_INFO(interp)->in_slice = 0;
          }
      _keylist
          {
@@ -2393,7 +2388,6 @@
 keylist_force:
          {
            IMCC_INFO(interp)->nkeys = 0;
-           IMCC_INFO(interp)->in_slice = 0;
          }
      _keylist
          {
@@ -2415,8 +2409,6 @@
 key:
      var
          {
-           if (IMCC_INFO(interp)->in_slice)
-               $1->type |= VT_START_SLICE | VT_END_SLICE;
            $$ = $1;
          }
    ;

Modified: branches/auto_attrs/compilers/imcc/imcparser.c
==============================================================================
--- branches/auto_attrs/compilers/imcc/imcparser.c	Wed Aug  5 11:29:37 2009	(r40415)
+++ branches/auto_attrs/compilers/imcc/imcparser.c	Wed Aug  5 11:44:12 2009	(r40416)
@@ -1398,7 +1398,7 @@
     SymReg * sr;
     Instruction *i;
 }
-/* Line 193 of yacc.c.  */
+/* Line 187 of yacc.c.  */
 #line 1392 "compilers/imcc/imcparser.c"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -1838,35 +1838,35 @@
     1223,  1232,  1232,  1239,  1239,  1248,  1249,  1253,  1254,  1258,
     1259,  1260,  1261,  1262,  1263,  1264,  1267,  1267,  1276,  1275,
     1288,  1292,  1305,  1309,  1313,  1313,  1325,  1327,  1331,  1346,
-    1354,  1359,  1363,  1367,  1358,  1379,  1380,  1381,  1394,  1394,
-    1398,  1412,  1416,  1422,  1431,  1437,  1446,  1452,  1461,  1467,
-    1476,  1484,  1489,  1500,  1503,  1508,  1516,  1517,  1518,  1519,
-    1520,  1531,  1542,  1545,  1547,  1552,  1551,  1584,  1585,  1589,
-    1590,  1594,  1595,  1599,  1600,  1604,  1605,  1606,  1607,  1608,
-    1609,  1610,  1611,  1612,  1613,  1614,  1615,  1616,  1617,  1621,
-    1626,  1630,  1635,  1639,  1643,  1648,  1657,  1658,  1662,  1667,
-    1668,  1676,  1677,  1677,  1692,  1693,  1697,  1698,  1699,  1700,
-    1701,  1702,  1703,  1708,  1708,  1711,  1719,  1719,  1725,  1726,
-    1731,  1739,  1740,  1745,  1753,  1757,  1762,  1761,  1774,  1775,
-    1779,  1780,  1790,  1795,  1805,  1814,  1815,  1827,  1831,  1833,
-    1834,  1835,  1836,  1837,  1841,  1842,  1846,  1847,  1851,  1862,
-    1863,  1874,  1881,  1890,  1900,  1901,  1906,  1907,  1908,  1908,
-    1924,  1934,  1940,  1940,  1947,  1948,  1948,  1954,  1960,  1964,
-    1976,  1977,  1978,  1979,  1980,  1981,  1985,  1986,  1987,  1988,
-    1992,  2005,  2007,  2009,  2011,  2013,  2018,  2021,  2028,  2027,
-    2036,  2037,  2038,  2039,  2047,  2048,  2049,  2053,  2054,  2055,
-    2056,  2057,  2058,  2059,  2060,  2061,  2062,  2063,  2064,  2065,
-    2066,  2067,  2068,  2069,  2070,  2071,  2072,  2073,  2074,  2075,
-    2081,  2080,  2092,  2099,  2100,  2101,  2102,  2103,  2104,  2105,
-    2106,  2107,  2108,  2109,  2110,  2111,  2116,  2127,  2128,  2129,
-    2130,  2136,  2150,  2156,  2162,  2168,  2167,  2176,  2177,  2187,
-    2197,  2204,  2209,  2219,  2223,  2224,  2228,  2229,  2232,  2233,
-    2237,  2241,  2251,  2257,  2267,  2272,  2276,  2277,  2281,  2285,
-    2289,  2296,  2300,  2304,  2311,  2312,  2316,  2317,  2318,  2319,
-    2320,  2321,  2325,  2326,  2330,  2331,  2335,  2336,  2340,  2341,
-    2348,  2355,  2356,  2357,  2361,  2362,  2366,  2367,  2371,  2372,
-    2376,  2377,  2381,  2381,  2394,  2394,  2407,  2408,  2416,  2425,
-    2426,  2427,  2428,  2429,  2433,  2434,  2435,  2436
+    1350,  1355,  1359,  1363,  1354,  1375,  1376,  1377,  1390,  1390,
+    1394,  1408,  1412,  1418,  1427,  1433,  1442,  1448,  1457,  1463,
+    1472,  1480,  1485,  1496,  1499,  1504,  1512,  1513,  1514,  1515,
+    1516,  1527,  1538,  1541,  1543,  1548,  1547,  1580,  1581,  1585,
+    1586,  1590,  1591,  1595,  1596,  1600,  1601,  1602,  1603,  1604,
+    1605,  1606,  1607,  1608,  1609,  1610,  1611,  1612,  1613,  1617,
+    1622,  1626,  1631,  1635,  1639,  1644,  1653,  1654,  1658,  1663,
+    1664,  1672,  1673,  1673,  1688,  1689,  1693,  1694,  1695,  1696,
+    1697,  1698,  1699,  1704,  1704,  1707,  1715,  1715,  1721,  1722,
+    1727,  1735,  1736,  1741,  1749,  1753,  1758,  1757,  1770,  1771,
+    1775,  1776,  1786,  1791,  1801,  1810,  1811,  1823,  1827,  1829,
+    1830,  1831,  1832,  1833,  1837,  1838,  1842,  1843,  1847,  1858,
+    1859,  1870,  1877,  1886,  1896,  1897,  1902,  1903,  1904,  1904,
+    1920,  1930,  1936,  1936,  1943,  1944,  1944,  1950,  1956,  1960,
+    1972,  1973,  1974,  1975,  1976,  1977,  1981,  1982,  1983,  1984,
+    1988,  2001,  2003,  2005,  2007,  2009,  2014,  2017,  2024,  2023,
+    2032,  2033,  2034,  2035,  2043,  2044,  2045,  2049,  2050,  2051,
+    2052,  2053,  2054,  2055,  2056,  2057,  2058,  2059,  2060,  2061,
+    2062,  2063,  2064,  2065,  2066,  2067,  2068,  2069,  2070,  2071,
+    2077,  2076,  2088,  2095,  2096,  2097,  2098,  2099,  2100,  2101,
+    2102,  2103,  2104,  2105,  2106,  2107,  2112,  2123,  2124,  2125,
+    2126,  2132,  2146,  2152,  2158,  2164,  2163,  2172,  2173,  2183,
+    2193,  2200,  2205,  2215,  2219,  2220,  2224,  2225,  2228,  2229,
+    2233,  2237,  2247,  2253,  2263,  2268,  2272,  2273,  2277,  2281,
+    2285,  2292,  2296,  2300,  2307,  2308,  2312,  2313,  2314,  2315,
+    2316,  2317,  2321,  2322,  2326,  2327,  2331,  2332,  2336,  2337,
+    2344,  2351,  2352,  2353,  2357,  2358,  2362,  2363,  2367,  2368,
+    2372,  2373,  2377,  2377,  2389,  2389,  2401,  2402,  2410,  2417,
+    2418,  2419,  2420,  2421,  2425,  2426,  2427,  2428
 };
 #endif
 
@@ -3491,35 +3491,31 @@
   case 49:
 #line 1347 "compilers/imcc/imcc.y"
     {
-            if (IMCC_INFO(interp)->in_slice)
-                IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
-                    "Slice not allowed in namespace.");
-
             (yyval.sr) = (yyvsp[(2) - (3)].sr);
         ;}
     break;
 
   case 50:
-#line 1354 "compilers/imcc/imcc.y"
+#line 1350 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; ;}
     break;
 
   case 51:
-#line 1359 "compilers/imcc/imcc.y"
+#line 1355 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PCCSUB);
          ;}
     break;
 
   case 52:
-#line 1363 "compilers/imcc/imcc.y"
+#line 1359 "compilers/imcc/imcc.y"
     {
            iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (3)].sr));
          ;}
     break;
 
   case 53:
-#line 1367 "compilers/imcc/imcc.y"
+#line 1363 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->cur_call->pcc_sub->pragma = (yyvsp[(5) - (6)].t);
           if (!IMCC_INFO(interp)->cur_unit->instructions->symregs[0]->subid) {
@@ -3530,22 +3526,22 @@
     break;
 
   case 54:
-#line 1375 "compilers/imcc/imcc.y"
+#line 1371 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; ;}
     break;
 
   case 55:
-#line 1379 "compilers/imcc/imcc.y"
+#line 1375 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; ;}
     break;
 
   case 56:
-#line 1380 "compilers/imcc/imcc.y"
+#line 1376 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; ;}
     break;
 
   case 57:
-#line 1382 "compilers/imcc/imcc.y"
+#line 1378 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                  add_pcc_named_param(IMCC_INFO(interp)->cur_call,
@@ -3558,17 +3554,17 @@
     break;
 
   case 58:
-#line 1394 "compilers/imcc/imcc.y"
+#line 1390 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; ;}
     break;
 
   case 59:
-#line 1394 "compilers/imcc/imcc.y"
+#line 1390 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(3) - (3)].sr); IMCC_INFO(interp)->is_def = 0; ;}
     break;
 
   case 60:
-#line 1399 "compilers/imcc/imcc.y"
+#line 1395 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(3) - (3)].t) & VT_UNIQUE_REG)
                (yyval.sr) = mk_ident_ur(interp, (yyvsp[(2) - (3)].s), (yyvsp[(1) - (3)].t));
@@ -3580,12 +3576,12 @@
     break;
 
   case 61:
-#line 1412 "compilers/imcc/imcc.y"
+#line 1408 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; ;}
     break;
 
   case 62:
-#line 1417 "compilers/imcc/imcc.y"
+#line 1413 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->outer = mk_sub_address_fromc(interp, (yyvsp[(3) - (4)].s));
@@ -3594,7 +3590,7 @@
     break;
 
   case 63:
-#line 1423 "compilers/imcc/imcc.y"
+#line 1419 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->outer = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3603,7 +3599,7 @@
     break;
 
   case 64:
-#line 1432 "compilers/imcc/imcc.y"
+#line 1428 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_VTABLE;
            IMCC_INFO(interp)->cur_unit->vtable_name      = NULL;
@@ -3612,7 +3608,7 @@
     break;
 
   case 65:
-#line 1438 "compilers/imcc/imcc.y"
+#line 1434 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_VTABLE;
            IMCC_INFO(interp)->cur_unit->vtable_name      = (yyvsp[(3) - (4)].s);
@@ -3621,7 +3617,7 @@
     break;
 
   case 66:
-#line 1447 "compilers/imcc/imcc.y"
+#line 1443 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
            IMCC_INFO(interp)->cur_unit->method_name = NULL;
@@ -3630,7 +3626,7 @@
     break;
 
   case 67:
-#line 1453 "compilers/imcc/imcc.y"
+#line 1449 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
            IMCC_INFO(interp)->cur_unit->method_name = (yyvsp[(3) - (4)].s);
@@ -3639,7 +3635,7 @@
     break;
 
   case 68:
-#line 1462 "compilers/imcc/imcc.y"
+#line 1458 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->ns_entry_name     = NULL;
@@ -3648,7 +3644,7 @@
     break;
 
   case 69:
-#line 1468 "compilers/imcc/imcc.y"
+#line 1464 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->ns_entry_name = (yyvsp[(3) - (4)].s);
@@ -3657,7 +3653,7 @@
     break;
 
   case 70:
-#line 1477 "compilers/imcc/imcc.y"
+#line 1473 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->instance_of = (yyvsp[(3) - (4)].s);
@@ -3665,7 +3661,7 @@
     break;
 
   case 71:
-#line 1485 "compilers/imcc/imcc.y"
+#line 1481 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->subid = NULL;
@@ -3673,7 +3669,7 @@
     break;
 
   case 72:
-#line 1490 "compilers/imcc/imcc.y"
+#line 1486 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->subid = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3683,14 +3679,14 @@
     break;
 
   case 73:
-#line 1500 "compilers/imcc/imcc.y"
+#line 1496 "compilers/imcc/imcc.y"
     {
            add_pcc_multi(IMCC_INFO(interp)->cur_call, NULL);
          ;}
     break;
 
   case 74:
-#line 1504 "compilers/imcc/imcc.y"
+#line 1500 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
@@ -3698,7 +3694,7 @@
     break;
 
   case 75:
-#line 1509 "compilers/imcc/imcc.y"
+#line 1505 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
@@ -3706,27 +3702,27 @@
     break;
 
   case 76:
-#line 1516 "compilers/imcc/imcc.y"
+#line 1512 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "INTVAL",   'S'); ;}
     break;
 
   case 77:
-#line 1517 "compilers/imcc/imcc.y"
+#line 1513 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); ;}
     break;
 
   case 78:
-#line 1518 "compilers/imcc/imcc.y"
+#line 1514 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "PMC",      'S'); ;}
     break;
 
   case 79:
-#line 1519 "compilers/imcc/imcc.y"
+#line 1515 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "STRING",   'S'); ;}
     break;
 
   case 80:
-#line 1521 "compilers/imcc/imcc.y"
+#line 1517 "compilers/imcc/imcc.y"
     {
            SymReg *r;
            if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3740,7 +3736,7 @@
     break;
 
   case 81:
-#line 1532 "compilers/imcc/imcc.y"
+#line 1528 "compilers/imcc/imcc.y"
     {
            SymReg *r;
            if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3754,12 +3750,12 @@
     break;
 
   case 82:
-#line 1542 "compilers/imcc/imcc.y"
+#line 1538 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); ;}
     break;
 
   case 85:
-#line 1552 "compilers/imcc/imcc.y"
+#line 1548 "compilers/imcc/imcc.y"
     {
            char name[128];
            SymReg *r, *r1;
@@ -3786,82 +3782,82 @@
     break;
 
   case 86:
-#line 1580 "compilers/imcc/imcc.y"
+#line 1576 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; ;}
     break;
 
   case 87:
-#line 1584 "compilers/imcc/imcc.y"
+#line 1580 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; ;}
     break;
 
   case 88:
-#line 1585 "compilers/imcc/imcc.y"
+#line 1581 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; ;}
     break;
 
   case 89:
-#line 1589 "compilers/imcc/imcc.y"
+#line 1585 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; ;}
     break;
 
   case 90:
-#line 1590 "compilers/imcc/imcc.y"
+#line 1586 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); ;}
     break;
 
   case 91:
-#line 1594 "compilers/imcc/imcc.y"
+#line 1590 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; ;}
     break;
 
   case 93:
-#line 1599 "compilers/imcc/imcc.y"
+#line 1595 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (1)].t); ;}
     break;
 
   case 94:
-#line 1600 "compilers/imcc/imcc.y"
+#line 1596 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); ;}
     break;
 
   case 95:
-#line 1604 "compilers/imcc/imcc.y"
+#line 1600 "compilers/imcc/imcc.y"
     { (yyval.t) = P_LOAD; ;}
     break;
 
   case 96:
-#line 1605 "compilers/imcc/imcc.y"
+#line 1601 "compilers/imcc/imcc.y"
     { (yyval.t) = P_INIT; ;}
     break;
 
   case 97:
-#line 1606 "compilers/imcc/imcc.y"
+#line 1602 "compilers/imcc/imcc.y"
     { (yyval.t) = P_MAIN; ;}
     break;
 
   case 98:
-#line 1607 "compilers/imcc/imcc.y"
+#line 1603 "compilers/imcc/imcc.y"
     { (yyval.t) = P_IMMEDIATE; ;}
     break;
 
   case 99:
-#line 1608 "compilers/imcc/imcc.y"
+#line 1604 "compilers/imcc/imcc.y"
     { (yyval.t) = P_POSTCOMP; ;}
     break;
 
   case 100:
-#line 1609 "compilers/imcc/imcc.y"
+#line 1605 "compilers/imcc/imcc.y"
     { (yyval.t) = P_ANON; ;}
     break;
 
   case 101:
-#line 1610 "compilers/imcc/imcc.y"
+#line 1606 "compilers/imcc/imcc.y"
     { (yyval.t) = P_NEED_LEX; ;}
     break;
 
   case 109:
-#line 1622 "compilers/imcc/imcc.y"
+#line 1618 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
            add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
@@ -3869,14 +3865,14 @@
     break;
 
   case 110:
-#line 1627 "compilers/imcc/imcc.y"
+#line 1623 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          ;}
     break;
 
   case 111:
-#line 1631 "compilers/imcc/imcc.y"
+#line 1627 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
            IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isNCI;
@@ -3884,21 +3880,21 @@
     break;
 
   case 112:
-#line 1636 "compilers/imcc/imcc.y"
+#line 1632 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          ;}
     break;
 
   case 113:
-#line 1640 "compilers/imcc/imcc.y"
+#line 1636 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S'));
          ;}
     break;
 
   case 114:
-#line 1644 "compilers/imcc/imcc.y"
+#line 1640 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (5)].sr));
            add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
@@ -3906,7 +3902,7 @@
     break;
 
   case 115:
-#line 1649 "compilers/imcc/imcc.y"
+#line 1645 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (5)].s), 'S'));
            add_pcc_cc(IMCC_INFO(interp)->cur_call, (yyvsp[(4) - (5)].sr));
@@ -3914,27 +3910,27 @@
     break;
 
   case 116:
-#line 1657 "compilers/imcc/imcc.y"
+#line 1653 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; ;}
     break;
 
   case 117:
-#line 1658 "compilers/imcc/imcc.y"
+#line 1654 "compilers/imcc/imcc.y"
     { add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); ;}
     break;
 
   case 118:
-#line 1662 "compilers/imcc/imcc.y"
+#line 1658 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (2)].sr); ;}
     break;
 
   case 119:
-#line 1667 "compilers/imcc/imcc.y"
+#line 1663 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; ;}
     break;
 
   case 120:
-#line 1669 "compilers/imcc/imcc.y"
+#line 1665 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -3942,17 +3938,17 @@
     break;
 
   case 121:
-#line 1676 "compilers/imcc/imcc.y"
+#line 1672 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); ;}
     break;
 
   case 122:
-#line 1677 "compilers/imcc/imcc.y"
+#line 1673 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; ;}
     break;
 
   case 123:
-#line 1678 "compilers/imcc/imcc.y"
+#line 1674 "compilers/imcc/imcc.y"
     {
            IdList * const l = (yyvsp[(4) - (4)].idlist);
            SymReg *ignored;
@@ -3967,62 +3963,62 @@
     break;
 
   case 124:
-#line 1692 "compilers/imcc/imcc.y"
+#line 1688 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; ;}
     break;
 
   case 125:
-#line 1693 "compilers/imcc/imcc.y"
+#line 1689 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); ;}
     break;
 
   case 126:
-#line 1697 "compilers/imcc/imcc.y"
+#line 1693 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT;   ;}
     break;
 
   case 127:
-#line 1698 "compilers/imcc/imcc.y"
+#line 1694 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPTIONAL; ;}
     break;
 
   case 128:
-#line 1699 "compilers/imcc/imcc.y"
+#line 1695 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPT_FLAG; ;}
     break;
 
   case 129:
-#line 1700 "compilers/imcc/imcc.y"
+#line 1696 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED; ;}
     break;
 
   case 130:
-#line 1701 "compilers/imcc/imcc.y"
+#line 1697 "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 1702 "compilers/imcc/imcc.y"
+#line 1698 "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 1703 "compilers/imcc/imcc.y"
+#line 1699 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_UNIQUE_REG; ;}
     break;
 
   case 133:
-#line 1708 "compilers/imcc/imcc.y"
+#line 1704 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 0); ;}
     break;
 
   case 134:
-#line 1710 "compilers/imcc/imcc.y"
+#line 1706 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; ;}
     break;
 
   case 135:
-#line 1712 "compilers/imcc/imcc.y"
+#line 1708 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->asm_state = AsmDefault;
            (yyval.i) = 0;
@@ -4030,22 +4026,22 @@
     break;
 
   case 136:
-#line 1719 "compilers/imcc/imcc.y"
+#line 1715 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 1); ;}
     break;
 
   case 137:
-#line 1721 "compilers/imcc/imcc.y"
+#line 1717 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; ;}
     break;
 
   case 138:
-#line 1725 "compilers/imcc/imcc.y"
+#line 1721 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; ;}
     break;
 
   case 139:
-#line 1727 "compilers/imcc/imcc.y"
+#line 1723 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
@@ -4053,7 +4049,7 @@
     break;
 
   case 140:
-#line 1732 "compilers/imcc/imcc.y"
+#line 1728 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
@@ -4061,12 +4057,12 @@
     break;
 
   case 141:
-#line 1739 "compilers/imcc/imcc.y"
+#line 1735 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; ;}
     break;
 
   case 142:
-#line 1741 "compilers/imcc/imcc.y"
+#line 1737 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
@@ -4074,7 +4070,7 @@
     break;
 
   case 143:
-#line 1746 "compilers/imcc/imcc.y"
+#line 1742 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
@@ -4082,17 +4078,17 @@
     break;
 
   case 144:
-#line 1753 "compilers/imcc/imcc.y"
+#line 1749 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); ;}
     break;
 
   case 145:
-#line 1757 "compilers/imcc/imcc.y"
+#line 1753 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); ;}
     break;
 
   case 146:
-#line 1762 "compilers/imcc/imcc.y"
+#line 1758 "compilers/imcc/imcc.y"
     {
           if (IMCC_INFO(interp)->asm_state == AsmDefault)
               begin_return_or_yield(interp, (yyvsp[(1) - (2)].t));
@@ -4100,7 +4096,7 @@
     break;
 
   case 147:
-#line 1767 "compilers/imcc/imcc.y"
+#line 1763 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->asm_state = AsmDefault;
           (yyval.t) = 0;
@@ -4108,22 +4104,22 @@
     break;
 
   case 148:
-#line 1774 "compilers/imcc/imcc.y"
+#line 1770 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; ;}
     break;
 
   case 149:
-#line 1775 "compilers/imcc/imcc.y"
+#line 1771 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; ;}
     break;
 
   case 150:
-#line 1779 "compilers/imcc/imcc.y"
+#line 1775 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; ;}
     break;
 
   case 151:
-#line 1781 "compilers/imcc/imcc.y"
+#line 1777 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                add_pcc_named_return(IMCC_INFO(interp)->sr_return,
@@ -4136,7 +4132,7 @@
     break;
 
   case 152:
-#line 1791 "compilers/imcc/imcc.y"
+#line 1787 "compilers/imcc/imcc.y"
     {
             SymReg * const name = mk_const(interp, (yyvsp[(1) - (3)].s), 'S');
             add_pcc_named_return(IMCC_INFO(interp)->sr_return, name, (yyvsp[(3) - (3)].sr));
@@ -4144,7 +4140,7 @@
     break;
 
   case 153:
-#line 1796 "compilers/imcc/imcc.y"
+#line 1792 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                add_pcc_named_return(IMCC_INFO(interp)->sr_return,
@@ -4157,7 +4153,7 @@
     break;
 
   case 154:
-#line 1806 "compilers/imcc/imcc.y"
+#line 1802 "compilers/imcc/imcc.y"
     {
            SymReg * const name = mk_const(interp, (yyvsp[(3) - (5)].s), 'S');
            add_pcc_named_return(IMCC_INFO(interp)->sr_return, name, (yyvsp[(5) - (5)].sr));
@@ -4165,47 +4161,47 @@
     break;
 
   case 157:
-#line 1827 "compilers/imcc/imcc.y"
+#line 1823 "compilers/imcc/imcc.y"
     { clear_state(interp); ;}
     break;
 
   case 158:
-#line 1832 "compilers/imcc/imcc.y"
+#line 1828 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (2)].i); ;}
     break;
 
   case 159:
-#line 1833 "compilers/imcc/imcc.y"
+#line 1829 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; ;}
     break;
 
   case 160:
-#line 1834 "compilers/imcc/imcc.y"
+#line 1830 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; ;}
     break;
 
   case 161:
-#line 1835 "compilers/imcc/imcc.y"
+#line 1831 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; ;}
     break;
 
   case 162:
-#line 1836 "compilers/imcc/imcc.y"
+#line 1832 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; ;}
     break;
 
   case 163:
-#line 1837 "compilers/imcc/imcc.y"
+#line 1833 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
     break;
 
   case 164:
-#line 1841 "compilers/imcc/imcc.y"
+#line 1837 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; ;}
     break;
 
   case 168:
-#line 1852 "compilers/imcc/imcc.y"
+#line 1848 "compilers/imcc/imcc.y"
     {
              Instruction * const i = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s)));
              mem_sys_free((yyvsp[(1) - (1)].s));
@@ -4214,12 +4210,12 @@
     break;
 
   case 169:
-#line 1862 "compilers/imcc/imcc.y"
+#line 1858 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (3)].i); ;}
     break;
 
   case 170:
-#line 1864 "compilers/imcc/imcc.y"
+#line 1860 "compilers/imcc/imcc.y"
     {
            if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) {
                IMCC_warning(interp, "Too many errors. Correct some first.\n");
@@ -4230,7 +4226,7 @@
     break;
 
   case 171:
-#line 1875 "compilers/imcc/imcc.y"
+#line 1871 "compilers/imcc/imcc.y"
     {
            IdList* const l = (yyvsp[(1) - (1)].idlist);
            l->next = NULL;
@@ -4239,7 +4235,7 @@
     break;
 
   case 172:
-#line 1882 "compilers/imcc/imcc.y"
+#line 1878 "compilers/imcc/imcc.y"
     {
            IdList* const l = (yyvsp[(3) - (3)].idlist);
            l->next = (yyvsp[(1) - (3)].idlist);
@@ -4248,7 +4244,7 @@
     break;
 
   case 173:
-#line 1891 "compilers/imcc/imcc.y"
+#line 1887 "compilers/imcc/imcc.y"
     {
            IdList* const l = mem_allocate_n_zeroed_typed(1, IdList);
            l->id           = (yyvsp[(1) - (2)].s);
@@ -4258,22 +4254,22 @@
     break;
 
   case 174:
-#line 1900 "compilers/imcc/imcc.y"
+#line 1896 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; ;}
     break;
 
   case 175:
-#line 1901 "compilers/imcc/imcc.y"
+#line 1897 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; ;}
     break;
 
   case 178:
-#line 1908 "compilers/imcc/imcc.y"
+#line 1904 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; ;}
     break;
 
   case 179:
-#line 1909 "compilers/imcc/imcc.y"
+#line 1905 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
            while (l) {
@@ -4292,7 +4288,7 @@
     break;
 
   case 180:
-#line 1925 "compilers/imcc/imcc.y"
+#line 1921 "compilers/imcc/imcc.y"
     {
            SymReg *n;
            char   *name = mem_sys_strdup((yyvsp[(2) - (4)].s) + 1);
@@ -4305,7 +4301,7 @@
     break;
 
   case 181:
-#line 1935 "compilers/imcc/imcc.y"
+#line 1931 "compilers/imcc/imcc.y"
     {
            SymReg *n = mk_const(interp, (yyvsp[(2) - (4)].s), 'U');
            set_lexical(interp, (yyvsp[(4) - (4)].sr), n); (yyval.i) = 0;
@@ -4314,12 +4310,12 @@
     break;
 
   case 182:
-#line 1940 "compilers/imcc/imcc.y"
+#line 1936 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; ;}
     break;
 
   case 183:
-#line 1941 "compilers/imcc/imcc.y"
+#line 1937 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0);
            IMCC_INFO(interp)->is_def = 0;
@@ -4328,12 +4324,12 @@
     break;
 
   case 185:
-#line 1948 "compilers/imcc/imcc.y"
+#line 1944 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->is_def = 1; ;}
     break;
 
   case 186:
-#line 1949 "compilers/imcc/imcc.y"
+#line 1945 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
            IMCC_INFO(interp)->is_def = 0;
@@ -4342,7 +4338,7 @@
     break;
 
   case 187:
-#line 1955 "compilers/imcc/imcc.y"
+#line 1951 "compilers/imcc/imcc.y"
     {
            (yyval.i) = NULL;
            IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isTAIL_CALL;
@@ -4351,14 +4347,14 @@
     break;
 
   case 188:
-#line 1961 "compilers/imcc/imcc.y"
+#line 1957 "compilers/imcc/imcc.y"
     {
             (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr));
          ;}
     break;
 
   case 189:
-#line 1965 "compilers/imcc/imcc.y"
+#line 1961 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp,
                     IMCC_INFO(interp)->cur_unit,
@@ -4373,47 +4369,47 @@
     break;
 
   case 190:
-#line 1976 "compilers/imcc/imcc.y"
+#line 1972 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); ;}
     break;
 
   case 191:
-#line 1977 "compilers/imcc/imcc.y"
+#line 1973 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; ;}
     break;
 
   case 192:
-#line 1978 "compilers/imcc/imcc.y"
+#line 1974 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; ;}
     break;
 
   case 195:
-#line 1981 "compilers/imcc/imcc.y"
+#line 1977 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;;}
     break;
 
   case 196:
-#line 1985 "compilers/imcc/imcc.y"
+#line 1981 "compilers/imcc/imcc.y"
     { (yyval.t) = 'I'; ;}
     break;
 
   case 197:
-#line 1986 "compilers/imcc/imcc.y"
+#line 1982 "compilers/imcc/imcc.y"
     { (yyval.t) = 'N'; ;}
     break;
 
   case 198:
-#line 1987 "compilers/imcc/imcc.y"
+#line 1983 "compilers/imcc/imcc.y"
     { (yyval.t) = 'S'; ;}
     break;
 
   case 199:
-#line 1988 "compilers/imcc/imcc.y"
+#line 1984 "compilers/imcc/imcc.y"
     { (yyval.t) = 'P'; ;}
     break;
 
   case 200:
-#line 1993 "compilers/imcc/imcc.y"
+#line 1989 "compilers/imcc/imcc.y"
     {
            /* there'd normally be a mem_sys_strdup() here, but the lexer already
             * copied the string, so it's safe to use directly */
@@ -4426,37 +4422,37 @@
     break;
 
   case 201:
-#line 2006 "compilers/imcc/imcc.y"
+#line 2002 "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 202:
-#line 2008 "compilers/imcc/imcc.y"
+#line 2004 "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 203:
-#line 2010 "compilers/imcc/imcc.y"
+#line 2006 "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 204:
-#line 2012 "compilers/imcc/imcc.y"
+#line 2008 "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 205:
-#line 2014 "compilers/imcc/imcc.y"
+#line 2010 "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 206:
-#line 2019 "compilers/imcc/imcc.y"
+#line 2015 "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 207:
-#line 2022 "compilers/imcc/imcc.y"
+#line 2018 "compilers/imcc/imcc.y"
     {
            add_pcc_result((yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
@@ -4465,14 +4461,14 @@
     break;
 
   case 208:
-#line 2028 "compilers/imcc/imcc.y"
+#line 2024 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
          ;}
     break;
 
   case 209:
-#line 2032 "compilers/imcc/imcc.y"
+#line 2028 "compilers/imcc/imcc.y"
     {
            IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
@@ -4480,144 +4476,144 @@
     break;
 
   case 213:
-#line 2040 "compilers/imcc/imcc.y"
+#line 2036 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
          ;}
     break;
 
   case 214:
-#line 2047 "compilers/imcc/imcc.y"
+#line 2043 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"not"; ;}
     break;
 
   case 215:
-#line 2048 "compilers/imcc/imcc.y"
+#line 2044 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bnot"; ;}
     break;
 
   case 216:
-#line 2049 "compilers/imcc/imcc.y"
+#line 2045 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"neg"; ;}
     break;
 
   case 217:
-#line 2053 "compilers/imcc/imcc.y"
+#line 2049 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; ;}
     break;
 
   case 218:
-#line 2054 "compilers/imcc/imcc.y"
+#line 2050 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; ;}
     break;
 
   case 219:
-#line 2055 "compilers/imcc/imcc.y"
+#line 2051 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; ;}
     break;
 
   case 220:
-#line 2056 "compilers/imcc/imcc.y"
+#line 2052 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; ;}
     break;
 
   case 221:
-#line 2057 "compilers/imcc/imcc.y"
+#line 2053 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; ;}
     break;
 
   case 222:
-#line 2058 "compilers/imcc/imcc.y"
+#line 2054 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; ;}
     break;
 
   case 223:
-#line 2059 "compilers/imcc/imcc.y"
+#line 2055 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"pow"; ;}
     break;
 
   case 224:
-#line 2060 "compilers/imcc/imcc.y"
+#line 2056 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; ;}
     break;
 
   case 225:
-#line 2061 "compilers/imcc/imcc.y"
+#line 2057 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"iseq"; ;}
     break;
 
   case 226:
-#line 2062 "compilers/imcc/imcc.y"
+#line 2058 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isne"; ;}
     break;
 
   case 227:
-#line 2063 "compilers/imcc/imcc.y"
+#line 2059 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isgt"; ;}
     break;
 
   case 228:
-#line 2064 "compilers/imcc/imcc.y"
+#line 2060 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isge"; ;}
     break;
 
   case 229:
-#line 2065 "compilers/imcc/imcc.y"
+#line 2061 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"islt"; ;}
     break;
 
   case 230:
-#line 2066 "compilers/imcc/imcc.y"
+#line 2062 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isle"; ;}
     break;
 
   case 231:
-#line 2067 "compilers/imcc/imcc.y"
+#line 2063 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; ;}
     break;
 
   case 232:
-#line 2068 "compilers/imcc/imcc.y"
+#line 2064 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; ;}
     break;
 
   case 233:
-#line 2069 "compilers/imcc/imcc.y"
+#line 2065 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; ;}
     break;
 
   case 234:
-#line 2070 "compilers/imcc/imcc.y"
+#line 2066 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"and"; ;}
     break;
 
   case 235:
-#line 2071 "compilers/imcc/imcc.y"
+#line 2067 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"or"; ;}
     break;
 
   case 236:
-#line 2072 "compilers/imcc/imcc.y"
+#line 2068 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"xor"; ;}
     break;
 
   case 237:
-#line 2073 "compilers/imcc/imcc.y"
+#line 2069 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; ;}
     break;
 
   case 238:
-#line 2074 "compilers/imcc/imcc.y"
+#line 2070 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; ;}
     break;
 
   case 239:
-#line 2075 "compilers/imcc/imcc.y"
+#line 2071 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; ;}
     break;
 
   case 240:
-#line 2081 "compilers/imcc/imcc.y"
+#line 2077 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            (yyval.i)->type &= ~ITCALL;
@@ -4626,84 +4622,84 @@
     break;
 
   case 241:
-#line 2086 "compilers/imcc/imcc.y"
+#line 2082 "compilers/imcc/imcc.y"
     {  (yyval.i) = 0; ;}
     break;
 
   case 242:
-#line 2093 "compilers/imcc/imcc.y"
+#line 2089 "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 243:
-#line 2099 "compilers/imcc/imcc.y"
+#line 2095 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; ;}
     break;
 
   case 244:
-#line 2100 "compilers/imcc/imcc.y"
+#line 2096 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; ;}
     break;
 
   case 245:
-#line 2101 "compilers/imcc/imcc.y"
+#line 2097 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; ;}
     break;
 
   case 246:
-#line 2102 "compilers/imcc/imcc.y"
+#line 2098 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; ;}
     break;
 
   case 247:
-#line 2103 "compilers/imcc/imcc.y"
+#line 2099 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; ;}
     break;
 
   case 248:
-#line 2104 "compilers/imcc/imcc.y"
+#line 2100 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; ;}
     break;
 
   case 249:
-#line 2105 "compilers/imcc/imcc.y"
+#line 2101 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; ;}
     break;
 
   case 250:
-#line 2106 "compilers/imcc/imcc.y"
+#line 2102 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; ;}
     break;
 
   case 251:
-#line 2107 "compilers/imcc/imcc.y"
+#line 2103 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; ;}
     break;
 
   case 252:
-#line 2108 "compilers/imcc/imcc.y"
+#line 2104 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; ;}
     break;
 
   case 253:
-#line 2109 "compilers/imcc/imcc.y"
+#line 2105 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; ;}
     break;
 
   case 254:
-#line 2110 "compilers/imcc/imcc.y"
+#line 2106 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; ;}
     break;
 
   case 255:
-#line 2111 "compilers/imcc/imcc.y"
+#line 2107 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; ;}
     break;
 
   case 256:
-#line 2117 "compilers/imcc/imcc.y"
+#line 2113 "compilers/imcc/imcc.y"
     {
         (yyval.i) = func_ins(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(1) - (4)].sr), (yyvsp[(3) - (4)].s),
                       IMCC_INFO(interp) -> regs,
@@ -4714,22 +4710,22 @@
     break;
 
   case 257:
-#line 2127 "compilers/imcc/imcc.y"
+#line 2123 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s));       mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 258:
-#line 2128 "compilers/imcc/imcc.y"
+#line 2124 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 259:
-#line 2129 "compilers/imcc/imcc.y"
+#line 2125 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));     mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 260:
-#line 2131 "compilers/imcc/imcc.y"
+#line 2127 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
            if ((yyvsp[(1) - (1)].sr)->set != 'P')
@@ -4738,7 +4734,7 @@
     break;
 
   case 261:
-#line 2137 "compilers/imcc/imcc.y"
+#line 2133 "compilers/imcc/imcc.y"
     {
             /* disallow bareword method names; SREG name constants are fine */
             const char * const name = (yyvsp[(3) - (3)].sr)->name;
@@ -4755,7 +4751,7 @@
     break;
 
   case 262:
-#line 2151 "compilers/imcc/imcc.y"
+#line 2147 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
             (yyval.sr)                         = mk_const(interp, (yyvsp[(3) - (3)].s), 'U');
@@ -4764,7 +4760,7 @@
     break;
 
   case 263:
-#line 2157 "compilers/imcc/imcc.y"
+#line 2153 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
             (yyval.sr)                         = mk_const(interp, (yyvsp[(3) - (3)].s), 'S');
@@ -4773,12 +4769,12 @@
     break;
 
   case 264:
-#line 2162 "compilers/imcc/imcc.y"
+#line 2158 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); ;}
     break;
 
   case 265:
-#line 2168 "compilers/imcc/imcc.y"
+#line 2164 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            IMCC_itcall_sub(interp, (yyvsp[(1) - (1)].sr));
@@ -4786,17 +4782,17 @@
     break;
 
   case 266:
-#line 2172 "compilers/imcc/imcc.y"
+#line 2168 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (5)].i); ;}
     break;
 
   case 267:
-#line 2176 "compilers/imcc/imcc.y"
+#line 2172 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; ;}
     break;
 
   case 268:
-#line 2178 "compilers/imcc/imcc.y"
+#line 2174 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4809,7 +4805,7 @@
     break;
 
   case 269:
-#line 2188 "compilers/imcc/imcc.y"
+#line 2184 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4822,7 +4818,7 @@
     break;
 
   case 270:
-#line 2198 "compilers/imcc/imcc.y"
+#line 2194 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg(IMCC_INFO(interp)->cur_call,
@@ -4832,7 +4828,7 @@
     break;
 
   case 271:
-#line 2205 "compilers/imcc/imcc.y"
+#line 2201 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg_var(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));
@@ -4840,7 +4836,7 @@
     break;
 
   case 272:
-#line 2210 "compilers/imcc/imcc.y"
+#line 2206 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg(IMCC_INFO(interp)->cur_call,
@@ -4850,47 +4846,47 @@
     break;
 
   case 273:
-#line 2219 "compilers/imcc/imcc.y"
+#line 2215 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); ;}
     break;
 
   case 274:
-#line 2223 "compilers/imcc/imcc.y"
+#line 2219 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; ;}
     break;
 
   case 275:
-#line 2224 "compilers/imcc/imcc.y"
+#line 2220 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); ;}
     break;
 
   case 276:
-#line 2228 "compilers/imcc/imcc.y"
+#line 2224 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT; ;}
     break;
 
   case 277:
-#line 2229 "compilers/imcc/imcc.y"
+#line 2225 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED; ;}
     break;
 
   case 278:
-#line 2232 "compilers/imcc/imcc.y"
+#line 2228 "compilers/imcc/imcc.y"
     { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; ;}
     break;
 
   case 279:
-#line 2233 "compilers/imcc/imcc.y"
+#line 2229 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s));   (yyval.t) = 0; ;}
     break;
 
   case 280:
-#line 2237 "compilers/imcc/imcc.y"
+#line 2233 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); ;}
     break;
 
   case 281:
-#line 2242 "compilers/imcc/imcc.y"
+#line 2238 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4903,7 +4899,7 @@
     break;
 
   case 282:
-#line 2252 "compilers/imcc/imcc.y"
+#line 2248 "compilers/imcc/imcc.y"
     {
             add_pcc_named_result(IMCC_INFO(interp)->cur_call,
             mk_const(interp, (yyvsp[(3) - (5)].s), 'S'), (yyvsp[(5) - (5)].sr));
@@ -4912,7 +4908,7 @@
     break;
 
   case 283:
-#line 2258 "compilers/imcc/imcc.y"
+#line 2254 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4925,7 +4921,7 @@
     break;
 
   case 284:
-#line 2268 "compilers/imcc/imcc.y"
+#line 2264 "compilers/imcc/imcc.y"
     {
            add_pcc_named_result(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(1) - (3)].s), 'S'), (yyvsp[(3) - (3)].sr));
            mem_sys_free((yyvsp[(1) - (3)].s));
@@ -4933,124 +4929,124 @@
     break;
 
   case 285:
-#line 2272 "compilers/imcc/imcc.y"
+#line 2268 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; ;}
     break;
 
   case 286:
-#line 2276 "compilers/imcc/imcc.y"
+#line 2272 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
     break;
 
   case 287:
-#line 2277 "compilers/imcc/imcc.y"
+#line 2273 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); ;}
     break;
 
   case 288:
-#line 2282 "compilers/imcc/imcc.y"
+#line 2278 "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));
          ;}
     break;
 
   case 289:
-#line 2286 "compilers/imcc/imcc.y"
+#line 2282 "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));
          ;}
     break;
 
   case 290:
-#line 2290 "compilers/imcc/imcc.y"
+#line 2286 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
          ;}
     break;
 
   case 291:
-#line 2297 "compilers/imcc/imcc.y"
+#line 2293 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
          ;}
     break;
 
   case 292:
-#line 2301 "compilers/imcc/imcc.y"
+#line 2297 "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));
          ;}
     break;
 
   case 293:
-#line 2305 "compilers/imcc/imcc.y"
+#line 2301 "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));
          ;}
     break;
 
   case 294:
-#line 2311 "compilers/imcc/imcc.y"
+#line 2307 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; ;}
     break;
 
   case 295:
-#line 2312 "compilers/imcc/imcc.y"
+#line 2308 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; ;}
     break;
 
   case 296:
-#line 2316 "compilers/imcc/imcc.y"
+#line 2312 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"eq"; ;}
     break;
 
   case 297:
-#line 2317 "compilers/imcc/imcc.y"
+#line 2313 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ne"; ;}
     break;
 
   case 298:
-#line 2318 "compilers/imcc/imcc.y"
+#line 2314 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"gt"; ;}
     break;
 
   case 299:
-#line 2319 "compilers/imcc/imcc.y"
+#line 2315 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ge"; ;}
     break;
 
   case 300:
-#line 2320 "compilers/imcc/imcc.y"
+#line 2316 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lt"; ;}
     break;
 
   case 301:
-#line 2321 "compilers/imcc/imcc.y"
+#line 2317 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"le"; ;}
     break;
 
   case 304:
-#line 2330 "compilers/imcc/imcc.y"
+#line 2326 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; ;}
     break;
 
   case 305:
-#line 2331 "compilers/imcc/imcc.y"
+#line 2327 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (1)].sr); ;}
     break;
 
   case 306:
-#line 2335 "compilers/imcc/imcc.y"
+#line 2331 "compilers/imcc/imcc.y"
     { (yyval.sr) = IMCC_INFO(interp)->regs[0]; ;}
     break;
 
   case 308:
-#line 2340 "compilers/imcc/imcc.y"
+#line 2336 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); ;}
     break;
 
   case 309:
-#line 2342 "compilers/imcc/imcc.y"
+#line 2338 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (4)].sr);
            IMCC_INFO(interp) -> keyvec |= KEY_BIT(IMCC_INFO(interp)->nargs);
@@ -5060,7 +5056,7 @@
     break;
 
   case 310:
-#line 2349 "compilers/imcc/imcc.y"
+#line 2345 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
            (yyval.sr) = (yyvsp[(2) - (3)].sr);
@@ -5068,45 +5064,44 @@
     break;
 
   case 312:
-#line 2356 "compilers/imcc/imcc.y"
+#line 2352 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 313:
-#line 2357 "compilers/imcc/imcc.y"
+#line 2353 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 314:
-#line 2361 "compilers/imcc/imcc.y"
+#line 2357 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 315:
-#line 2362 "compilers/imcc/imcc.y"
+#line 2358 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 316:
-#line 2366 "compilers/imcc/imcc.y"
+#line 2362 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 317:
-#line 2367 "compilers/imcc/imcc.y"
+#line 2363 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 322:
-#line 2381 "compilers/imcc/imcc.y"
+#line 2377 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys    = 0;
-           IMCC_INFO(interp)->in_slice = 0;
          ;}
     break;
 
   case 323:
-#line 2386 "compilers/imcc/imcc.y"
+#line 2381 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -5115,15 +5110,14 @@
     break;
 
   case 324:
-#line 2394 "compilers/imcc/imcc.y"
+#line 2389 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys = 0;
-           IMCC_INFO(interp)->in_slice = 0;
          ;}
     break;
 
   case 325:
-#line 2399 "compilers/imcc/imcc.y"
+#line 2393 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -5132,12 +5126,12 @@
     break;
 
   case 326:
-#line 2407 "compilers/imcc/imcc.y"
+#line 2401 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); ;}
     break;
 
   case 327:
-#line 2409 "compilers/imcc/imcc.y"
+#line 2403 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
            (yyval.sr) = IMCC_INFO(interp)->keys[0];
@@ -5145,62 +5139,60 @@
     break;
 
   case 328:
-#line 2417 "compilers/imcc/imcc.y"
+#line 2411 "compilers/imcc/imcc.y"
     {
-           if (IMCC_INFO(interp)->in_slice)
-               (yyvsp[(1) - (1)].sr)->type |= VT_START_SLICE | VT_END_SLICE;
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
          ;}
     break;
 
   case 329:
-#line 2425 "compilers/imcc/imcc.y"
+#line 2417 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); ;}
     break;
 
   case 330:
-#line 2426 "compilers/imcc/imcc.y"
+#line 2418 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); ;}
     break;
 
   case 331:
-#line 2427 "compilers/imcc/imcc.y"
+#line 2419 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); ;}
     break;
 
   case 332:
-#line 2428 "compilers/imcc/imcc.y"
+#line 2420 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); ;}
     break;
 
   case 333:
-#line 2429 "compilers/imcc/imcc.y"
+#line 2421 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 334:
-#line 2433 "compilers/imcc/imcc.y"
+#line 2425 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 335:
-#line 2434 "compilers/imcc/imcc.y"
+#line 2426 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 336:
-#line 2435 "compilers/imcc/imcc.y"
+#line 2427 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
   case 337:
-#line 2436 "compilers/imcc/imcc.y"
+#line 2428 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 5193 "compilers/imcc/imcparser.c"
+#line 5185 "compilers/imcc/imcparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5414,7 +5406,7 @@
 }
 
 
-#line 2442 "compilers/imcc/imcc.y"
+#line 2434 "compilers/imcc/imcc.y"
 
 
 /* I need this prototype somewhere... */

Modified: branches/auto_attrs/compilers/imcc/imcparser.h
==============================================================================
--- branches/auto_attrs/compilers/imcc/imcparser.h	Wed Aug  5 11:29:37 2009	(r40415)
+++ branches/auto_attrs/compilers/imcc/imcparser.h	Wed Aug  5 11:44:12 2009	(r40416)
@@ -303,7 +303,7 @@
     SymReg * sr;
     Instruction *i;
 }
-/* Line 1529 of yacc.c.  */
+/* Line 1489 of yacc.c.  */
 #line 297 "compilers/imcc/imcparser.h"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */

Modified: branches/auto_attrs/compilers/imcc/pbc.c
==============================================================================
--- branches/auto_attrs/compilers/imcc/pbc.c	Wed Aug  5 11:29:37 2009	(r40415)
+++ branches/auto_attrs/compilers/imcc/pbc.c	Wed Aug  5 11:44:12 2009	(r40416)
@@ -183,11 +183,6 @@
 static int old_blocks(PARROT_INTERP)
         __attribute__nonnull__(1);
 
-PARROT_CONST_FUNCTION
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static const char * slice_deb(int bits);
-
 static void store_fixup(PARROT_INTERP,
     ARGIN(const SymReg *r),
     int pc,
@@ -277,7 +272,6 @@
     || PARROT_ASSERT_ARG(r)
 #define ASSERT_ARGS_old_blocks __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp)
-#define ASSERT_ARGS_slice_deb __attribute__unused__ int _ASSERT_ARGS_CHECK = 0
 #define ASSERT_ARGS_store_fixup __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp) \
     || PARROT_ASSERT_ARG(r)
@@ -1588,42 +1582,6 @@
 
 /*
 
-=item C<static const char * slice_deb(int bits)>
-
-Returns debugging information for the indicated slice type.
-
-=cut
-
-*/
-
-PARROT_CONST_FUNCTION
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-static const char *
-slice_deb(int bits)
-{
-    ASSERT_ARGS(slice_deb)
-    if ((bits & VT_SLICE_BITS) == (VT_START_SLICE|VT_END_SLICE))
-        return "start+end";
-
-    if ((bits & VT_SLICE_BITS) == (VT_START_ZERO|VT_END_SLICE))
-        return "..end";
-
-    if ((bits & VT_SLICE_BITS) == (VT_START_SLICE|VT_END_INF))
-        return "start..";
-
-    if (bits & VT_START_SLICE)
-        return "start";
-
-    if (bits & VT_END_SLICE)
-        return "end";
-
-    return "";
-}
-
-
-/*
-
 =item C<static opcode_t build_key(PARROT_INTERP, SymReg *key_reg)>
 
 Builds a Key PMC from the given SymReg.
@@ -1660,7 +1618,7 @@
 
     for (key_length = 0; reg ; reg = reg->nextkey, key_length++) {
         SymReg *r = reg;
-        int     var_type, slice_bits, type;
+        int     type;
 
         if ((pc - key - 2) >= KEYLEN)
             IMCC_fatal(interp, 1, "build_key:"
@@ -1672,17 +1630,14 @@
         if (r->reg)
             r = r->reg;
 
-        var_type   = type & ~VT_SLICE_BITS;
-        slice_bits = type &  VT_SLICE_BITS;
-
-        switch (var_type) {
+        switch (type) {
             case VTIDENTIFIER:       /* P[S0] */
             case VTPASM:             /* P[S0] */
             case VTREG:              /* P[S0] */
                 if (r->set == 'I')
-                    *pc++ = PARROT_ARG_I | slice_bits;    /* register type */
+                    *pc++ = PARROT_ARG_I;    /* register type */
                 else if (r->set == 'S')
-                    *pc++ = PARROT_ARG_S | slice_bits;
+                    *pc++ = PARROT_ARG_S;
                 else
                     IMCC_fatal(interp, 1, "build_key: wrong register set\n");
 
@@ -1695,9 +1650,8 @@
                 sprintf(s+strlen(s), "%c%d", r->set, (int)r->color);
 
                 IMCC_debug(interp, DEBUG_PBC_CONST,
-                        " keypart reg %s %c%d slice %s\n",
-                        r->name, r->set, (int)r->color,
-                        slice_deb(slice_bits));
+                        " keypart reg %s %c%d\n",
+                        r->name, r->set, (int)r->color);
                 break;
             case VT_CONSTP:
             case VTCONST:
@@ -1705,27 +1659,25 @@
                 switch (r->set) {
                     case 'S':                       /* P["key"] */
                         /* str constant */
-                        *pc++ = PARROT_ARG_SC | slice_bits;
+                        *pc++ = PARROT_ARG_SC;
 
                         /* constant idx */
                         *pc++ = r->color;
 
                         IMCC_debug(interp, DEBUG_PBC_CONST,
-                                " keypart SC %s #%d slice %s\n",
-                                r->name, r->color,
-                                slice_deb(slice_bits));
+                                " keypart SC %s #%d\n",
+                                r->name, r->color);
                         break;
                     case 'I':                       /* P[;42;..] */
                         /* int constant */
-                        *pc++ = PARROT_ARG_IC | slice_bits;
+                        *pc++ = PARROT_ARG_IC;
 
                         /* value */
                         *pc++ = r->color = atol(r->name);
 
                         IMCC_debug(interp, DEBUG_PBC_CONST,
-                                " keypart IC %s #%d slice %s\n",
-                                r->name, r->color,
-                                slice_deb(slice_bits));
+                                " keypart IC %s #%d\n",
+                                r->name, r->color);
                         break;
                     default:
                         IMCC_fatal(interp, 1, "build_key: unknown set\n");
@@ -1734,7 +1686,7 @@
                 break;
             default:
                 IMCC_fatal(interp, 1, "build_key: "
-                    "unknown type 0x%x on %s\n", var_type, r->name);
+                    "unknown type 0x%x on %s\n", type, r->name);
         }
     }
 

Modified: branches/auto_attrs/compilers/imcc/symreg.c
==============================================================================
--- branches/auto_attrs/compilers/imcc/symreg.c	Wed Aug  5 11:29:37 2009	(r40415)
+++ branches/auto_attrs/compilers/imcc/symreg.c	Wed Aug  5 11:44:12 2009	(r40416)
@@ -1195,7 +1195,6 @@
     SymReg *key;
     SymReg *keychain;
     int     i;
-    int     any_slice = 0;
     size_t  len       = 0;
 
     /* namespace keys are global consts - no cur_unit */
@@ -1207,7 +1206,7 @@
         IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR, "link_keys: huh? no keys\n");
 
     /* short-circuit simple key unless we've been told not to */
-    if (nargs == 1 && !force && !(keys[0]->type & VT_SLICE_BITS))
+    if (nargs == 1 && !force)
         return keys[0];
 
     /* calc len of key_str
@@ -1215,13 +1214,8 @@
      * have the slice flag set */
     for (i = 0; i < nargs; i++) {
         len += 1 + strlen(keys[i]->name);
-        if (keys[i]->type & VT_SLICE_BITS)
-            any_slice = 1;
     }
 
-    if (any_slice && !(keys[0]->type & VT_SLICE_BITS))
-        keys[0]->type |= (VT_START_SLICE|VT_END_SLICE);
-
     key_str  = (char *)mem_sys_allocate(len);
     *key_str = '\0';
 
@@ -1233,7 +1227,7 @@
             strcat(key_str, ";");
     }
 
-    if (!any_slice && ((keychain = _get_sym(h, key_str)) != NULL)) {
+    if ((keychain = _get_sym(h, key_str)) != NULL) {
         mem_sys_free(key_str);
         return keychain;
     }

Modified: branches/auto_attrs/compilers/imcc/symreg.h
==============================================================================
--- branches/auto_attrs/compilers/imcc/symreg.h	Wed Aug  5 11:29:37 2009	(r40415)
+++ branches/auto_attrs/compilers/imcc/symreg.h	Wed Aug  5 11:44:12 2009	(r40416)
@@ -21,11 +21,6 @@
     VT_FLAT         = VARTYPE_BIT(8),   /* var :flat */
     VT_OPTIONAL     = VARTYPE_BIT(9),   /* var :optional */
     /* include/parrot/packfile.h */
-    VT_START_SLICE  = PF_VT_START_SLICE, /* x .. y slice range */
-    VT_END_SLICE    = PF_VT_END_SLICE,
-    VT_START_ZERO   = PF_VT_START_ZERO, /* .. y 0..start */
-    VT_END_INF      = PF_VT_END_INF,    /* x..  start..inf */
-    VT_SLICE_BITS   = PF_VT_SLICE_BITS,
     VT_ENCODED      = VARTYPE_BIT(16),  /* unicode string constant */
     VT_OPT_FLAG     = VARTYPE_BIT(17),  /* var :opt_flag */
     VT_NAMED        = VARTYPE_BIT(18),  /* var :named(name) */

Modified: branches/auto_attrs/include/parrot/key.h
==============================================================================
--- branches/auto_attrs/include/parrot/key.h	Wed Aug  5 11:29:37 2009	(r40415)
+++ branches/auto_attrs/include/parrot/key.h	Wed Aug  5 11:44:12 2009	(r40416)
@@ -15,30 +15,29 @@
 
 #include "parrot/parrot.h"
 
+/*
+ Type of Keys.
+ C<KEY_register_FLAG> used for indirect referencing. E.g.
+   $S0 = "foo"
+   $P1 = $P0[$S0]
+ In this case C<[$S0]> will have type C<KEY_string_FLAG | KEY_register_FLAG>
+ and store I<integer> value of string register number.
+*/
 typedef enum {
     KEY_integer_FLAG        = PObj_private0_FLAG,
     KEY_number_FLAG         = PObj_private1_FLAG,
-    KEY_hash_iterator_FLAGS = PObj_private0_FLAG | PObj_private1_FLAG,
     KEY_string_FLAG         = PObj_private2_FLAG,
     KEY_pmc_FLAG            = PObj_private3_FLAG,
     KEY_register_FLAG       = PObj_private4_FLAG,
 
-    KEY_start_slice_FLAG    = PObj_private5_FLAG,
-    KEY_end_slice_FLAG      = PObj_private6_FLAG,
-    KEY_inf_slice_FLAG      = PObj_private7_FLAG,
-
     KEY_type_FLAGS          = KEY_integer_FLAG         |
                               KEY_number_FLAG          |
                               KEY_string_FLAG          |
                               KEY_pmc_FLAG             |
-                              KEY_register_FLAG        |
-                              KEY_hash_iterator_FLAGS
+                              KEY_register_FLAG
 
 } KEY_flags;
 
-#define KEY_IS_HASH_ITERATOR(k) \
-    ((PObj_get_FLAGS((k)) & KEY_type_FLAGS) == KEY_hash_iterator_FLAGS)
-
 /* HEADERIZER BEGIN: src/key.c */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 

Modified: branches/auto_attrs/src/key.c
==============================================================================
--- branches/auto_attrs/src/key.c	Wed Aug  5 11:29:37 2009	(r40415)
+++ branches/auto_attrs/src/key.c	Wed Aug  5 11:44:12 2009	(r40416)
@@ -332,8 +332,6 @@
     FLOATVAL num_key;
 
     switch (PObj_get_FLAGS(key) & KEY_type_FLAGS) {
-        case KEY_hash_iterator_FLAGS:
-
         case KEY_integer_FLAG:
             GETATTR_Key_int_key(interp, key, int_key);
             return int_key;
@@ -367,14 +365,6 @@
             return Parrot_str_to_int(interp, s_reg);
             }
 
-        case KEY_string_FLAG | KEY_start_slice_FLAG:
-        case KEY_string_FLAG | KEY_inf_slice_FLAG:
-            {
-            STRING * const s_key = VTABLE_get_string(interp, key);
-            return Parrot_str_to_int(interp, s_key);
-            }
-        case KEY_start_slice_FLAG:
-        case KEY_inf_slice_FLAG:
         default:
             break;
     }
@@ -616,6 +606,7 @@
 key_mark(PARROT_INTERP, ARGIN(PMC *key))
 {
     ASSERT_ARGS(key_mark)
+    PMC          *next_key;
     const UINTVAL flags = PObj_get_FLAGS(key) & KEY_type_FLAGS;
 
     if (flags == KEY_string_FLAG) {
@@ -627,18 +618,10 @@
         Parrot_gc_mark_PObj_alive(interp, (PObj *)str_key);
     }
 
-    /*
-     * KEY_hash_iterator_FLAGS denote a hash key iteration, PMC_data() is
-     * the bucket_index and not the next key component
-     * Note to self: shoot whoever thought this was a good idea.
-     */
-    if (flags != KEY_hash_iterator_FLAGS) {
-        PMC *next_key;
-        /* if iteration hasn't started, above flag isn't set yet */
-        GETATTR_Key_next_key(interp, key, next_key);
-        if (next_key && (void *)next_key != (void *)INITBucketIndex)
-            Parrot_gc_mark_PObj_alive(interp, (PObj *)next_key);
-    }
+    /* Mark next key */
+    GETATTR_Key_next_key(interp, key, next_key);
+    if (next_key)
+        Parrot_gc_mark_PObj_alive(interp, (PObj *)next_key);
 
 }
 

Modified: branches/auto_attrs/src/packdump.c
==============================================================================
--- branches/auto_attrs/src/packdump.c	Wed Aug  5 11:29:37 2009	(r40415)
+++ branches/auto_attrs/src/packdump.c	Wed Aug  5 11:44:12 2009	(r40416)
@@ -194,16 +194,6 @@
             opcode_t type = PObj_get_FLAGS(key);
 
             Parrot_io_printf(interp, "       {\n");
-            if ((type & (KEY_start_slice_FLAG|KEY_inf_slice_FLAG)) ==
-                (KEY_start_slice_FLAG|KEY_inf_slice_FLAG))
-                Parrot_io_printf(interp, "        SLICE_BITS  => PF_VT_END_INF\n");
-            if ((type & (KEY_end_slice_FLAG|KEY_inf_slice_FLAG)) ==
-                (KEY_end_slice_FLAG|KEY_inf_slice_FLAG))
-                Parrot_io_printf(interp, "        SLICE_BITS  => PF_VT_START_ZERO\n");
-            if (type & KEY_start_slice_FLAG)
-                Parrot_io_printf(interp, "        SLICE_BITS  => PF_VT_START_SLICE\n");
-            if (type & KEY_end_slice_FLAG)
-                Parrot_io_printf(interp, "        SLICE_BITS  => PF_VT_END_SLICE\n");
 
             type &= KEY_type_FLAGS;
             pobj_flag_dump(interp, (long)PObj_get_FLAGS(key));

Modified: branches/auto_attrs/src/packfile.c
==============================================================================
--- branches/auto_attrs/src/packfile.c	Wed Aug  5 11:29:37 2009	(r40415)
+++ branches/auto_attrs/src/packfile.c	Wed Aug  5 11:44:12 2009	(r40416)
@@ -4106,15 +4106,6 @@
             default:
                 return NULL;
         }
-
-        if (slice_bits) {
-            if (slice_bits & PF_VT_START_SLICE)
-                PObj_get_FLAGS(tail) |= KEY_start_slice_FLAG;
-            if (slice_bits & PF_VT_END_SLICE)
-                PObj_get_FLAGS(tail) |= KEY_end_slice_FLAG;
-            if (slice_bits & (PF_VT_START_ZERO | PF_VT_END_INF))
-                PObj_get_FLAGS(tail) |= KEY_inf_slice_FLAG;
-        }
     }
 
     self->type  = PFC_KEY;

Modified: branches/auto_attrs/src/packout.c
==============================================================================
--- branches/auto_attrs/src/packout.c	Wed Aug  5 11:29:37 2009	(r40415)
+++ branches/auto_attrs/src/packout.c	Wed Aug  5 11:44:12 2009	(r40416)
@@ -270,7 +270,6 @@
     ASSERT_ARGS(PackFile_Constant_pack)
     PMC *key;
     size_t i;
-    opcode_t slice_bits;
     STRING *image;
 
     *cursor++ = self->type;
@@ -301,48 +300,37 @@
         /* and now type / value per component */
         for (key = self->u.key; key;) {
             const opcode_t type = PObj_get_FLAGS(key);
-            slice_bits = 0;
-            if ((type & (KEY_start_slice_FLAG|KEY_inf_slice_FLAG)) ==
-                    (KEY_start_slice_FLAG|KEY_inf_slice_FLAG))
-                slice_bits |= PF_VT_END_INF;
-            if ((type & (KEY_end_slice_FLAG|KEY_inf_slice_FLAG)) ==
-                    (KEY_end_slice_FLAG|KEY_inf_slice_FLAG))
-                slice_bits |= PF_VT_START_ZERO;
-            if (type & KEY_start_slice_FLAG)
-                slice_bits |= PF_VT_START_SLICE;
-            if (type & KEY_end_slice_FLAG)
-                slice_bits |= PF_VT_END_SLICE;
 
             switch (type & KEY_type_FLAGS) {
                 case KEY_integer_FLAG:
-                    *cursor++ = PARROT_ARG_IC | slice_bits;
+                    *cursor++ = PARROT_ARG_IC;
                     GETATTR_Key_int_key(interp, key, *cursor++);
                     break;
                 case KEY_number_FLAG:
-                    *cursor++ = PARROT_ARG_NC | slice_bits;
+                    *cursor++ = PARROT_ARG_NC;
                     /* Argh */
                     *cursor++ = PackFile_find_in_const(interp, const_table, key, PFC_NUMBER);
                     break;
                 case KEY_string_FLAG:
-                    *cursor++ = PARROT_ARG_SC | slice_bits;
+                    *cursor++ = PARROT_ARG_SC;
                     /* Argh */
                     *cursor++ = PackFile_find_in_const(interp, const_table, key, PFC_STRING);
                     break;
 
                 case KEY_integer_FLAG | KEY_register_FLAG:
-                    *cursor++ = PARROT_ARG_I | slice_bits;
+                    *cursor++ = PARROT_ARG_I;
                     GETATTR_Key_int_key(interp, key, *cursor++);
                     break;
                 case KEY_number_FLAG | KEY_register_FLAG:
-                    *cursor++ = PARROT_ARG_N | slice_bits;
+                    *cursor++ = PARROT_ARG_N;
                     GETATTR_Key_int_key(interp, key, *cursor++);
                     break;
                 case KEY_string_FLAG | KEY_register_FLAG:
-                    *cursor++ = PARROT_ARG_S | slice_bits;
+                    *cursor++ = PARROT_ARG_S;
                     GETATTR_Key_int_key(interp, key, *cursor++);
                     break;
                 case KEY_pmc_FLAG | KEY_register_FLAG:
-                    *cursor++ = PARROT_ARG_P | slice_bits;
+                    *cursor++ = PARROT_ARG_P;
                     GETATTR_Key_int_key(interp, key, *cursor++);
                     break;
                 default:

Modified: branches/auto_attrs/src/pmc/addrregistry.pmc
==============================================================================
--- branches/auto_attrs/src/pmc/addrregistry.pmc	Wed Aug  5 11:29:37 2009	(r40415)
+++ branches/auto_attrs/src/pmc/addrregistry.pmc	Wed Aug  5 11:44:12 2009	(r40416)
@@ -144,24 +144,6 @@
         }
     }
 
-/*
-
-=item C<PMC *get_pmc_keyed(PMC *key)>
-
-If called from iteration, return the key PMC, else PMCNULL is returned.
-
-=cut
-
-*/
-
-    VTABLE PMC *get_pmc_keyed(PMC *key) {
-        Hash * const hash = (Hash *)SELF.get_pointer();
-
-        if (KEY_IS_HASH_ITERATOR(key))
-            return (PMC *)parrot_hash_get_idx(INTERP, hash, key);
-
-        return PMCNULL;
-    }
 }
 
 /*


More information about the parrot-commits mailing list