[svn:parrot] r37950 - in branches/headercleanup: . compilers/imcc config/gen/makefiles include/parrot src src/interp

chromatic at svn.parrot.org chromatic at svn.parrot.org
Tue Apr 7 21:01:12 UTC 2009


Author: chromatic
Date: Tue Apr  7 21:01:10 2009
New Revision: 37950
URL: https://trac.parrot.org/parrot/changeset/37950

Log:
Moved the other src/interp_*.c files into src/interp/, updating all references
to them elsewhere (mostly documentation and comments).

Added:
   branches/headercleanup/src/interp/inter_cb.c   (contents, props changed)
      - copied, changed from r37947, branches/headercleanup/src/inter_cb.c
   branches/headercleanup/src/interp/inter_create.c   (contents, props changed)
      - copied, changed from r37949, branches/headercleanup/src/inter_create.c
   branches/headercleanup/src/interp/inter_misc.c   (contents, props changed)
      - copied, changed from r37947, branches/headercleanup/src/inter_misc.c
Deleted:
   branches/headercleanup/src/inter_cb.c
   branches/headercleanup/src/inter_create.c
   branches/headercleanup/src/inter_misc.c
Modified:
   branches/headercleanup/MANIFEST
   branches/headercleanup/compilers/imcc/imcparser.c
   branches/headercleanup/compilers/imcc/imcparser.h
   branches/headercleanup/config/gen/makefiles/root.in
   branches/headercleanup/include/parrot/interpreter.h
   branches/headercleanup/src/interp/interpreter.c

Modified: branches/headercleanup/MANIFEST
==============================================================================
--- branches/headercleanup/MANIFEST	Tue Apr  7 18:38:30 2009	(r37949)
+++ branches/headercleanup/MANIFEST	Tue Apr  7 21:01:10 2009	(r37950)
@@ -1270,9 +1270,9 @@
 src/global_setup.c                                          []
 src/hash.c                                                  []
 src/hll.c                                                   []
-src/inter_cb.c                                              []
-src/inter_create.c                                          []
-src/inter_misc.c                                            []
+src/interp/inter_cb.c                                       []
+src/interp/inter_create.c                                   []
+src/interp/inter_misc.c                                     []
 src/interp/interp_guts.h                                    []
 src/interp/interpreter.c                                    []
 src/io/api.c                                                []

Modified: branches/headercleanup/compilers/imcc/imcparser.c
==============================================================================
--- branches/headercleanup/compilers/imcc/imcparser.c	Tue Apr  7 18:38:30 2009	(r37949)
+++ branches/headercleanup/compilers/imcc/imcparser.c	Tue Apr  7 21:01:10 2009	(r37950)
@@ -1350,7 +1350,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 1007 "compilers/imcc/imcc.y"
+#line 1009 "compilers/imcc/imcc.y"
 {
     IdList * idlist;
     int t;
@@ -1359,7 +1359,7 @@
     Instruction *i;
 }
 /* Line 187 of yacc.c.  */
-#line 1350 "compilers/imcc/imcparser.c"
+#line 1352 "compilers/imcc/imcparser.c"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -1372,7 +1372,7 @@
 
 
 /* Line 216 of yacc.c.  */
-#line 1363 "compilers/imcc/imcparser.c"
+#line 1365 "compilers/imcc/imcparser.c"
 
 #ifdef short
 # undef short
@@ -1791,40 +1791,40 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,  1102,  1102,  1106,  1107,  1111,  1112,  1113,  1119,  1125,
-    1126,  1127,  1128,  1132,  1133,  1142,  1147,  1154,  1166,  1178,
-    1178,  1187,  1187,  1193,  1193,  1200,  1201,  1205,  1206,  1210,
-    1211,  1212,  1213,  1214,  1215,  1216,  1219,  1219,  1228,  1227,
-    1239,  1243,  1251,  1255,  1259,  1259,  1271,  1273,  1277,  1292,
-    1300,  1305,  1309,  1313,  1304,  1325,  1326,  1327,  1340,  1340,
-    1344,  1358,  1362,  1368,  1377,  1383,  1392,  1398,  1407,  1413,
-    1422,  1430,  1435,  1446,  1449,  1454,  1462,  1463,  1464,  1465,
-    1466,  1477,  1488,  1491,  1493,  1498,  1497,  1530,  1531,  1535,
-    1536,  1540,  1541,  1545,  1546,  1550,  1551,  1552,  1553,  1554,
-    1555,  1556,  1557,  1558,  1559,  1560,  1561,  1562,  1563,  1567,
-    1572,  1576,  1581,  1585,  1589,  1594,  1603,  1604,  1608,  1613,
-    1614,  1622,  1623,  1623,  1638,  1639,  1643,  1644,  1645,  1646,
-    1647,  1648,  1653,  1653,  1656,  1664,  1664,  1670,  1671,  1676,
-    1684,  1685,  1690,  1698,  1702,  1707,  1706,  1719,  1720,  1724,
-    1725,  1735,  1739,  1749,  1757,  1758,  1770,  1774,  1776,  1777,
-    1778,  1779,  1780,  1784,  1785,  1789,  1790,  1794,  1803,  1804,
-    1815,  1822,  1831,  1841,  1842,  1847,  1848,  1849,  1849,  1865,
-    1869,  1869,  1876,  1877,  1877,  1883,  1889,  1893,  1905,  1906,
-    1907,  1908,  1909,  1910,  1914,  1915,  1916,  1917,  1921,  1934,
-    1936,  1938,  1940,  1942,  1947,  1950,  1957,  1956,  1965,  1966,
-    1967,  1968,  1976,  1977,  1978,  1982,  1983,  1984,  1985,  1986,
-    1987,  1988,  1989,  1990,  1991,  1992,  1993,  1994,  1995,  1996,
-    1997,  1998,  1999,  2000,  2001,  2002,  2003,  2004,  2010,  2009,
-    2021,  2028,  2029,  2030,  2031,  2032,  2033,  2034,  2035,  2036,
-    2037,  2038,  2039,  2040,  2045,  2056,  2057,  2058,  2059,  2065,
-    2079,  2085,  2091,  2090,  2099,  2100,  2110,  2120,  2126,  2131,
-    2140,  2144,  2145,  2149,  2150,  2153,  2157,  2161,  2171,  2176,
-    2186,  2191,  2195,  2196,  2200,  2204,  2208,  2215,  2219,  2223,
-    2230,  2231,  2235,  2236,  2237,  2238,  2239,  2240,  2244,  2245,
-    2249,  2250,  2254,  2255,  2259,  2260,  2267,  2274,  2275,  2276,
-    2280,  2281,  2285,  2286,  2290,  2291,  2295,  2296,  2300,  2300,
-    2313,  2313,  2326,  2327,  2335,  2344,  2345,  2346,  2347,  2348,
-    2352,  2353,  2354,  2355
+       0,  1104,  1104,  1108,  1109,  1113,  1114,  1115,  1121,  1127,
+    1128,  1129,  1130,  1134,  1135,  1144,  1149,  1156,  1168,  1180,
+    1180,  1189,  1189,  1195,  1195,  1202,  1203,  1207,  1208,  1212,
+    1213,  1214,  1215,  1216,  1217,  1218,  1221,  1221,  1230,  1229,
+    1241,  1245,  1253,  1257,  1261,  1261,  1273,  1275,  1279,  1294,
+    1302,  1307,  1311,  1315,  1306,  1327,  1328,  1329,  1342,  1342,
+    1346,  1360,  1364,  1370,  1379,  1385,  1394,  1400,  1409,  1415,
+    1424,  1432,  1437,  1448,  1451,  1456,  1464,  1465,  1466,  1467,
+    1468,  1479,  1490,  1493,  1495,  1500,  1499,  1532,  1533,  1537,
+    1538,  1542,  1543,  1547,  1548,  1552,  1553,  1554,  1555,  1556,
+    1557,  1558,  1559,  1560,  1561,  1562,  1563,  1564,  1565,  1569,
+    1574,  1578,  1583,  1587,  1591,  1596,  1605,  1606,  1610,  1615,
+    1616,  1624,  1625,  1625,  1640,  1641,  1645,  1646,  1647,  1648,
+    1649,  1650,  1655,  1655,  1658,  1666,  1666,  1672,  1673,  1678,
+    1686,  1687,  1692,  1700,  1704,  1709,  1708,  1721,  1722,  1726,
+    1727,  1737,  1741,  1751,  1759,  1760,  1772,  1776,  1778,  1779,
+    1780,  1781,  1782,  1786,  1787,  1791,  1792,  1796,  1805,  1806,
+    1817,  1824,  1833,  1843,  1844,  1849,  1850,  1851,  1851,  1867,
+    1871,  1871,  1878,  1879,  1879,  1885,  1891,  1895,  1907,  1908,
+    1909,  1910,  1911,  1912,  1916,  1917,  1918,  1919,  1923,  1936,
+    1938,  1940,  1942,  1944,  1949,  1952,  1959,  1958,  1967,  1968,
+    1969,  1970,  1978,  1979,  1980,  1984,  1985,  1986,  1987,  1988,
+    1989,  1990,  1991,  1992,  1993,  1994,  1995,  1996,  1997,  1998,
+    1999,  2000,  2001,  2002,  2003,  2004,  2005,  2006,  2012,  2011,
+    2023,  2030,  2031,  2032,  2033,  2034,  2035,  2036,  2037,  2038,
+    2039,  2040,  2041,  2042,  2047,  2058,  2059,  2060,  2061,  2067,
+    2081,  2087,  2093,  2092,  2101,  2102,  2112,  2122,  2128,  2133,
+    2142,  2146,  2147,  2151,  2152,  2155,  2159,  2163,  2173,  2178,
+    2188,  2193,  2197,  2198,  2202,  2206,  2210,  2217,  2221,  2225,
+    2232,  2233,  2237,  2238,  2239,  2240,  2241,  2242,  2246,  2247,
+    2251,  2252,  2256,  2257,  2261,  2262,  2269,  2276,  2277,  2278,
+    2282,  2283,  2287,  2288,  2292,  2293,  2297,  2298,  2302,  2302,
+    2315,  2315,  2328,  2329,  2337,  2346,  2347,  2348,  2349,  2350,
+    2354,  2355,  2356,  2357
 };
 #endif
 
@@ -3175,22 +3175,22 @@
   switch (yyn)
     {
         case 2:
-#line 1102 "compilers/imcc/imcc.y"
+#line 1104 "compilers/imcc/imcc.y"
     { if (yynerrs) YYABORT; (yyval.i) = 0; }
     break;
 
   case 5:
-#line 1111 "compilers/imcc/imcc.y"
+#line 1113 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 6:
-#line 1112 "compilers/imcc/imcc.y"
+#line 1114 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 7:
-#line 1114 "compilers/imcc/imcc.y"
+#line 1116 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3199,7 +3199,7 @@
     break;
 
   case 8:
-#line 1120 "compilers/imcc/imcc.y"
+#line 1122 "compilers/imcc/imcc.y"
     {
            (yyval.i) = (yyvsp[(1) - (1)].i);
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3208,32 +3208,32 @@
     break;
 
   case 9:
-#line 1125 "compilers/imcc/imcc.y"
+#line 1127 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 10:
-#line 1126 "compilers/imcc/imcc.y"
+#line 1128 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 11:
-#line 1127 "compilers/imcc/imcc.y"
+#line 1129 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 12:
-#line 1128 "compilers/imcc/imcc.y"
+#line 1130 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 13:
-#line 1132 "compilers/imcc/imcc.y"
+#line 1134 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 14:
-#line 1134 "compilers/imcc/imcc.y"
+#line 1136 "compilers/imcc/imcc.y"
     {
            (yyval.i) = 0;
            do_loadlib(interp, (yyvsp[(2) - (3)].s));
@@ -3242,7 +3242,7 @@
     break;
 
   case 15:
-#line 1143 "compilers/imcc/imcc.y"
+#line 1145 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->line = atoi((yyvsp[(2) - (5)].s));
            set_filename(interp, (yyvsp[(4) - (5)].s));
@@ -3250,14 +3250,14 @@
     break;
 
   case 16:
-#line 1148 "compilers/imcc/imcc.y"
+#line 1150 "compilers/imcc/imcc.y"
     {
            set_filename(interp, (yyvsp[(2) - (3)].s));
          }
     break;
 
   case 17:
-#line 1155 "compilers/imcc/imcc.y"
+#line 1157 "compilers/imcc/imcc.y"
     {
           /* We'll want to store an entry while emitting instructions, so just
            * store annotation like it's an instruction. */
@@ -3268,7 +3268,7 @@
     break;
 
   case 18:
-#line 1167 "compilers/imcc/imcc.y"
+#line 1169 "compilers/imcc/imcc.y"
     {
             STRING * const hll_name = Parrot_str_unescape(interp, (yyvsp[(2) - (2)].s) + 1, '"', NULL);
             CONTEXT(interp)->current_HLL =
@@ -3280,12 +3280,12 @@
     break;
 
   case 19:
-#line 1178 "compilers/imcc/imcc.y"
+#line 1180 "compilers/imcc/imcc.y"
     { pesky_global__is_def = 1; }
     break;
 
   case 20:
-#line 1179 "compilers/imcc/imcc.y"
+#line 1181 "compilers/imcc/imcc.y"
     {
              mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
              mem_sys_free((yyvsp[(4) - (6)].s));
@@ -3294,12 +3294,12 @@
     break;
 
   case 21:
-#line 1187 "compilers/imcc/imcc.y"
+#line 1189 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
   case 22:
-#line 1188 "compilers/imcc/imcc.y"
+#line 1190 "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));
            pesky_global__is_def = 0;
@@ -3307,12 +3307,12 @@
     break;
 
   case 23:
-#line 1193 "compilers/imcc/imcc.y"
+#line 1195 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
   case 24:
-#line 1194 "compilers/imcc/imcc.y"
+#line 1196 "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));
            pesky_global__is_def = 0;
@@ -3320,37 +3320,37 @@
     break;
 
   case 29:
-#line 1210 "compilers/imcc/imcc.y"
+#line 1212 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 30:
-#line 1211 "compilers/imcc/imcc.y"
+#line 1213 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 31:
-#line 1212 "compilers/imcc/imcc.y"
+#line 1214 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 32:
-#line 1213 "compilers/imcc/imcc.y"
+#line 1215 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;  }
     break;
 
   case 33:
-#line 1214 "compilers/imcc/imcc.y"
+#line 1216 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 36:
-#line 1219 "compilers/imcc/imcc.y"
+#line 1221 "compilers/imcc/imcc.y"
     { clear_state(interp); }
     break;
 
   case 37:
-#line 1221 "compilers/imcc/imcc.y"
+#line 1223 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp, IMCC_INFO(interp)->cur_unit,
                     (yyvsp[(2) - (3)].s), 0, IMCC_INFO(interp)->regs,
@@ -3360,7 +3360,7 @@
     break;
 
   case 38:
-#line 1228 "compilers/imcc/imcc.y"
+#line 1230 "compilers/imcc/imcc.y"
     {
            imc_close_unit(interp, IMCC_INFO(interp)->cur_unit);
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM);
@@ -3368,7 +3368,7 @@
     break;
 
   case 39:
-#line 1233 "compilers/imcc/imcc.y"
+#line 1235 "compilers/imcc/imcc.y"
     {
            (yyval.i) = iSUBROUTINE(interp,
                     IMCC_INFO(interp)->cur_unit,
@@ -3378,14 +3378,14 @@
     break;
 
   case 40:
-#line 1240 "compilers/imcc/imcc.y"
+#line 1242 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr));
          }
     break;
 
   case 41:
-#line 1244 "compilers/imcc/imcc.y"
+#line 1246 "compilers/imcc/imcc.y"
     {
            SymReg *r = mk_pasm_reg(interp, (yyvsp[(4) - (4)].s));
            set_lexical(interp, r, (yyvsp[(2) - (4)].s));
@@ -3396,17 +3396,17 @@
     break;
 
   case 42:
-#line 1251 "compilers/imcc/imcc.y"
+#line 1253 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
   case 44:
-#line 1259 "compilers/imcc/imcc.y"
+#line 1261 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PASM); }
     break;
 
   case 45:
-#line 1262 "compilers/imcc/imcc.y"
+#line 1264 "compilers/imcc/imcc.y"
     {
            /* if (optimizer_level & OPT_PASM)
                          imc_compile_unit(interp, IMCC_INFO(interp)->cur_unit);
@@ -3417,7 +3417,7 @@
     break;
 
   case 48:
-#line 1278 "compilers/imcc/imcc.y"
+#line 1280 "compilers/imcc/imcc.y"
     {
            int re_open = 0;
            (yyval.i) = 0;
@@ -3432,7 +3432,7 @@
     break;
 
   case 49:
-#line 1293 "compilers/imcc/imcc.y"
+#line 1295 "compilers/imcc/imcc.y"
     {
             if (IMCC_INFO(interp)->in_slice)
                 IMCC_fataly(interp, EXCEPTION_SYNTAX_ERROR,
@@ -3443,26 +3443,26 @@
     break;
 
   case 50:
-#line 1300 "compilers/imcc/imcc.y"
+#line 1302 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
   case 51:
-#line 1305 "compilers/imcc/imcc.y"
+#line 1307 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->cur_unit = imc_open_unit(interp, IMC_PCCSUB);
          }
     break;
 
   case 52:
-#line 1309 "compilers/imcc/imcc.y"
+#line 1311 "compilers/imcc/imcc.y"
     {
            iSUBROUTINE(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (3)].sr));
          }
     break;
 
   case 53:
-#line 1313 "compilers/imcc/imcc.y"
+#line 1315 "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) {
@@ -3473,22 +3473,22 @@
     break;
 
   case 54:
-#line 1321 "compilers/imcc/imcc.y"
+#line 1323 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 55:
-#line 1325 "compilers/imcc/imcc.y"
+#line 1327 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 56:
-#line 1326 "compilers/imcc/imcc.y"
+#line 1328 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 57:
-#line 1328 "compilers/imcc/imcc.y"
+#line 1330 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                  add_pcc_named_param(interp, IMCC_INFO(interp)->cur_call,
@@ -3501,17 +3501,17 @@
     break;
 
   case 58:
-#line 1340 "compilers/imcc/imcc.y"
+#line 1342 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
   case 59:
-#line 1340 "compilers/imcc/imcc.y"
+#line 1342 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(3) - (3)].sr); pesky_global__is_def=0; }
     break;
 
   case 60:
-#line 1345 "compilers/imcc/imcc.y"
+#line 1347 "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));
@@ -3523,12 +3523,12 @@
     break;
 
   case 61:
-#line 1358 "compilers/imcc/imcc.y"
+#line 1360 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 62:
-#line 1363 "compilers/imcc/imcc.y"
+#line 1365 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->outer = mk_sub_address_fromc(interp, (yyvsp[(3) - (4)].s));
@@ -3537,7 +3537,7 @@
     break;
 
   case 63:
-#line 1369 "compilers/imcc/imcc.y"
+#line 1371 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->outer = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3546,7 +3546,7 @@
     break;
 
   case 64:
-#line 1378 "compilers/imcc/imcc.y"
+#line 1380 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_VTABLE;
            IMCC_INFO(interp)->cur_unit->vtable_name = NULL;
@@ -3555,7 +3555,7 @@
     break;
 
   case 65:
-#line 1384 "compilers/imcc/imcc.y"
+#line 1386 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_VTABLE;
            IMCC_INFO(interp)->cur_unit->vtable_name = (yyvsp[(3) - (4)].s);
@@ -3564,7 +3564,7 @@
     break;
 
   case 66:
-#line 1393 "compilers/imcc/imcc.y"
+#line 1395 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
            IMCC_INFO(interp)->cur_unit->method_name = NULL;
@@ -3573,7 +3573,7 @@
     break;
 
   case 67:
-#line 1399 "compilers/imcc/imcc.y"
+#line 1401 "compilers/imcc/imcc.y"
     {
            (yyval.t) = P_METHOD;
            IMCC_INFO(interp)->cur_unit->method_name = (yyvsp[(3) - (4)].s);
@@ -3582,7 +3582,7 @@
     break;
 
   case 68:
-#line 1408 "compilers/imcc/imcc.y"
+#line 1410 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->ns_entry_name = NULL;
@@ -3591,7 +3591,7 @@
     break;
 
   case 69:
-#line 1414 "compilers/imcc/imcc.y"
+#line 1416 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->ns_entry_name = (yyvsp[(3) - (4)].s);
@@ -3600,7 +3600,7 @@
     break;
 
   case 70:
-#line 1423 "compilers/imcc/imcc.y"
+#line 1425 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->instance_of = (yyvsp[(3) - (4)].s);
@@ -3608,7 +3608,7 @@
     break;
 
   case 71:
-#line 1431 "compilers/imcc/imcc.y"
+#line 1433 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->subid = NULL;
@@ -3616,7 +3616,7 @@
     break;
 
   case 72:
-#line 1436 "compilers/imcc/imcc.y"
+#line 1438 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            IMCC_INFO(interp)->cur_unit->subid = mk_const(interp, (yyvsp[(3) - (4)].s), 'S');
@@ -3626,14 +3626,14 @@
     break;
 
   case 73:
-#line 1446 "compilers/imcc/imcc.y"
+#line 1448 "compilers/imcc/imcc.y"
     {
            add_pcc_multi(IMCC_INFO(interp)->cur_call, NULL);
          }
     break;
 
   case 74:
-#line 1450 "compilers/imcc/imcc.y"
+#line 1452 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (3)].sr));
@@ -3641,7 +3641,7 @@
     break;
 
   case 75:
-#line 1455 "compilers/imcc/imcc.y"
+#line 1457 "compilers/imcc/imcc.y"
     {
            (yyval.t) = 0;
            add_pcc_multi(IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (1)].sr));
@@ -3649,27 +3649,27 @@
     break;
 
   case 76:
-#line 1462 "compilers/imcc/imcc.y"
+#line 1464 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "INTVAL",   'S'); }
     break;
 
   case 77:
-#line 1463 "compilers/imcc/imcc.y"
+#line 1465 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "FLOATVAL", 'S'); }
     break;
 
   case 78:
-#line 1464 "compilers/imcc/imcc.y"
+#line 1466 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "PMC",      'S'); }
     break;
 
   case 79:
-#line 1465 "compilers/imcc/imcc.y"
+#line 1467 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, "STRING",   'S'); }
     break;
 
   case 80:
-#line 1467 "compilers/imcc/imcc.y"
+#line 1469 "compilers/imcc/imcc.y"
     {
            SymReg *r;
            if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3683,7 +3683,7 @@
     break;
 
   case 81:
-#line 1478 "compilers/imcc/imcc.y"
+#line 1480 "compilers/imcc/imcc.y"
     {
            SymReg *r;
            if (strcmp((yyvsp[(1) - (1)].s), "_") != 0)
@@ -3697,12 +3697,12 @@
     break;
 
   case 82:
-#line 1488 "compilers/imcc/imcc.y"
+#line 1490 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 85:
-#line 1498 "compilers/imcc/imcc.y"
+#line 1500 "compilers/imcc/imcc.y"
     {
            char name[128];
            SymReg *r, *r1;
@@ -3729,82 +3729,82 @@
     break;
 
   case 86:
-#line 1526 "compilers/imcc/imcc.y"
+#line 1528 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 87:
-#line 1530 "compilers/imcc/imcc.y"
+#line 1532 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 0; }
     break;
 
   case 88:
-#line 1531 "compilers/imcc/imcc.y"
+#line 1533 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; IMCC_INFO(interp)->cur_call->pcc_sub->label = 1; }
     break;
 
   case 89:
-#line 1535 "compilers/imcc/imcc.y"
+#line 1537 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
   case 90:
-#line 1536 "compilers/imcc/imcc.y"
+#line 1538 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL;  IMCC_INFO(interp)->cur_call->pcc_sub->object = (yyvsp[(2) - (3)].sr); }
     break;
 
   case 91:
-#line 1540 "compilers/imcc/imcc.y"
+#line 1542 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 93:
-#line 1545 "compilers/imcc/imcc.y"
+#line 1547 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (1)].t); }
     break;
 
   case 94:
-#line 1546 "compilers/imcc/imcc.y"
+#line 1548 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 95:
-#line 1550 "compilers/imcc/imcc.y"
+#line 1552 "compilers/imcc/imcc.y"
     { (yyval.t) = P_LOAD; }
     break;
 
   case 96:
-#line 1551 "compilers/imcc/imcc.y"
+#line 1553 "compilers/imcc/imcc.y"
     { (yyval.t) = P_INIT; }
     break;
 
   case 97:
-#line 1552 "compilers/imcc/imcc.y"
+#line 1554 "compilers/imcc/imcc.y"
     { (yyval.t) = P_MAIN; }
     break;
 
   case 98:
-#line 1553 "compilers/imcc/imcc.y"
+#line 1555 "compilers/imcc/imcc.y"
     { (yyval.t) = P_IMMEDIATE; }
     break;
 
   case 99:
-#line 1554 "compilers/imcc/imcc.y"
+#line 1556 "compilers/imcc/imcc.y"
     { (yyval.t) = P_POSTCOMP; }
     break;
 
   case 100:
-#line 1555 "compilers/imcc/imcc.y"
+#line 1557 "compilers/imcc/imcc.y"
     { (yyval.t) = P_ANON; }
     break;
 
   case 101:
-#line 1556 "compilers/imcc/imcc.y"
+#line 1558 "compilers/imcc/imcc.y"
     { (yyval.t) = P_NEED_LEX; }
     break;
 
   case 109:
-#line 1568 "compilers/imcc/imcc.y"
+#line 1570 "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));
@@ -3812,14 +3812,14 @@
     break;
 
   case 110:
-#line 1573 "compilers/imcc/imcc.y"
+#line 1575 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          }
     break;
 
   case 111:
-#line 1577 "compilers/imcc/imcc.y"
+#line 1579 "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;
@@ -3827,21 +3827,21 @@
     break;
 
   case 112:
-#line 1582 "compilers/imcc/imcc.y"
+#line 1584 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
          }
     break;
 
   case 113:
-#line 1586 "compilers/imcc/imcc.y"
+#line 1588 "compilers/imcc/imcc.y"
     {
            add_pcc_sub(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(2) - (3)].s), 'S'));
          }
     break;
 
   case 114:
-#line 1590 "compilers/imcc/imcc.y"
+#line 1592 "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));
@@ -3849,7 +3849,7 @@
     break;
 
   case 115:
-#line 1595 "compilers/imcc/imcc.y"
+#line 1597 "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));
@@ -3857,27 +3857,27 @@
     break;
 
   case 116:
-#line 1603 "compilers/imcc/imcc.y"
+#line 1605 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 117:
-#line 1604 "compilers/imcc/imcc.y"
+#line 1606 "compilers/imcc/imcc.y"
     { add_pcc_arg(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr)); }
     break;
 
   case 118:
-#line 1608 "compilers/imcc/imcc.y"
+#line 1610 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (2)].sr); }
     break;
 
   case 119:
-#line 1613 "compilers/imcc/imcc.y"
+#line 1615 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 120:
-#line 1615 "compilers/imcc/imcc.y"
+#line 1617 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->cur_call, (yyvsp[(2) - (3)].sr));
@@ -3885,17 +3885,17 @@
     break;
 
   case 121:
-#line 1622 "compilers/imcc/imcc.y"
+#line 1624 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 122:
-#line 1623 "compilers/imcc/imcc.y"
+#line 1625 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
   case 123:
-#line 1624 "compilers/imcc/imcc.y"
+#line 1626 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
            SymReg *ignored;
@@ -3910,57 +3910,57 @@
     break;
 
   case 124:
-#line 1638 "compilers/imcc/imcc.y"
+#line 1640 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 125:
-#line 1639 "compilers/imcc/imcc.y"
+#line 1641 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 126:
-#line 1643 "compilers/imcc/imcc.y"
+#line 1645 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT;   }
     break;
 
   case 127:
-#line 1644 "compilers/imcc/imcc.y"
+#line 1646 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPTIONAL; }
     break;
 
   case 128:
-#line 1645 "compilers/imcc/imcc.y"
+#line 1647 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_OPT_FLAG; }
     break;
 
   case 129:
-#line 1646 "compilers/imcc/imcc.y"
+#line 1648 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED; }
     break;
 
   case 130:
-#line 1647 "compilers/imcc/imcc.y"
+#line 1649 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
   case 131:
-#line 1648 "compilers/imcc/imcc.y"
+#line 1650 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_UNIQUE_REG; }
     break;
 
   case 132:
-#line 1653 "compilers/imcc/imcc.y"
+#line 1655 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 0); }
     break;
 
   case 133:
-#line 1655 "compilers/imcc/imcc.y"
+#line 1657 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 134:
-#line 1657 "compilers/imcc/imcc.y"
+#line 1659 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->asm_state = AsmDefault;
            (yyval.i) = 0;
@@ -3968,22 +3968,22 @@
     break;
 
   case 135:
-#line 1664 "compilers/imcc/imcc.y"
+#line 1666 "compilers/imcc/imcc.y"
     { begin_return_or_yield(interp, 1); }
     break;
 
   case 136:
-#line 1666 "compilers/imcc/imcc.y"
+#line 1668 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->asm_state = AsmDefault; }
     break;
 
   case 137:
-#line 1670 "compilers/imcc/imcc.y"
+#line 1672 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 138:
-#line 1672 "compilers/imcc/imcc.y"
+#line 1674 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
@@ -3991,7 +3991,7 @@
     break;
 
   case 139:
-#line 1677 "compilers/imcc/imcc.y"
+#line 1679 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
@@ -3999,12 +3999,12 @@
     break;
 
   case 140:
-#line 1684 "compilers/imcc/imcc.y"
+#line 1686 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 141:
-#line 1686 "compilers/imcc/imcc.y"
+#line 1688 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(1) - (2)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (2)].sr));
@@ -4012,7 +4012,7 @@
     break;
 
   case 142:
-#line 1691 "compilers/imcc/imcc.y"
+#line 1693 "compilers/imcc/imcc.y"
     {
            if ((yyvsp[(2) - (3)].sr))
                add_pcc_result(IMCC_INFO(interp)->sr_return, (yyvsp[(2) - (3)].sr));
@@ -4020,17 +4020,17 @@
     break;
 
   case 143:
-#line 1698 "compilers/imcc/imcc.y"
+#line 1700 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 144:
-#line 1702 "compilers/imcc/imcc.y"
+#line 1704 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(2) - (3)].sr); (yyval.sr)->type |= (yyvsp[(3) - (3)].t); }
     break;
 
   case 145:
-#line 1707 "compilers/imcc/imcc.y"
+#line 1709 "compilers/imcc/imcc.y"
     {
           if (IMCC_INFO(interp)->asm_state == AsmDefault)
               begin_return_or_yield(interp, (yyvsp[(1) - (2)].t));
@@ -4038,7 +4038,7 @@
     break;
 
   case 146:
-#line 1712 "compilers/imcc/imcc.y"
+#line 1714 "compilers/imcc/imcc.y"
     {
           IMCC_INFO(interp)->asm_state = AsmDefault;
           (yyval.t) = 0;
@@ -4046,22 +4046,22 @@
     break;
 
   case 147:
-#line 1719 "compilers/imcc/imcc.y"
+#line 1721 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 148:
-#line 1720 "compilers/imcc/imcc.y"
+#line 1722 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
   case 149:
-#line 1724 "compilers/imcc/imcc.y"
+#line 1726 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 150:
-#line 1726 "compilers/imcc/imcc.y"
+#line 1728 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -4074,14 +4074,14 @@
     break;
 
   case 151:
-#line 1736 "compilers/imcc/imcc.y"
+#line 1738 "compilers/imcc/imcc.y"
     {
            add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
          }
     break;
 
   case 152:
-#line 1740 "compilers/imcc/imcc.y"
+#line 1742 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->adv_named_id) {
                add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return,
@@ -4094,66 +4094,66 @@
     break;
 
   case 153:
-#line 1750 "compilers/imcc/imcc.y"
+#line 1752 "compilers/imcc/imcc.y"
     {
            add_pcc_named_return(interp, IMCC_INFO(interp)->sr_return, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
          }
     break;
 
   case 156:
-#line 1770 "compilers/imcc/imcc.y"
+#line 1772 "compilers/imcc/imcc.y"
     { clear_state(interp); }
     break;
 
   case 157:
-#line 1775 "compilers/imcc/imcc.y"
+#line 1777 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (2)].i); }
     break;
 
   case 158:
-#line 1776 "compilers/imcc/imcc.y"
+#line 1778 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 159:
-#line 1777 "compilers/imcc/imcc.y"
+#line 1779 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 160:
-#line 1778 "compilers/imcc/imcc.y"
+#line 1780 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 161:
-#line 1779 "compilers/imcc/imcc.y"
+#line 1781 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 162:
-#line 1780 "compilers/imcc/imcc.y"
+#line 1782 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 163:
-#line 1784 "compilers/imcc/imcc.y"
+#line 1786 "compilers/imcc/imcc.y"
     { (yyval.i) = NULL; }
     break;
 
   case 167:
-#line 1795 "compilers/imcc/imcc.y"
+#line 1797 "compilers/imcc/imcc.y"
     {
            (yyval.i) = iLABEL(interp, IMCC_INFO(interp)->cur_unit, mk_local_label(interp, (yyvsp[(1) - (1)].s)));
          }
     break;
 
   case 168:
-#line 1803 "compilers/imcc/imcc.y"
+#line 1805 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (3)].i); }
     break;
 
   case 169:
-#line 1805 "compilers/imcc/imcc.y"
+#line 1807 "compilers/imcc/imcc.y"
     {
            if (yynerrs >= PARROT_MAX_RECOVER_ERRORS) {
                IMCC_warning(interp, "Too many errors. Correct some first.\n");
@@ -4164,7 +4164,7 @@
     break;
 
   case 170:
-#line 1816 "compilers/imcc/imcc.y"
+#line 1818 "compilers/imcc/imcc.y"
     {
            IdList* l = (yyvsp[(1) - (1)].idlist);
            l->next = NULL;
@@ -4173,7 +4173,7 @@
     break;
 
   case 171:
-#line 1823 "compilers/imcc/imcc.y"
+#line 1825 "compilers/imcc/imcc.y"
     {
            IdList* l = (yyvsp[(3) - (3)].idlist);
            l->next = (yyvsp[(1) - (3)].idlist);
@@ -4182,7 +4182,7 @@
     break;
 
   case 172:
-#line 1832 "compilers/imcc/imcc.y"
+#line 1834 "compilers/imcc/imcc.y"
     {
            IdList* const l = mem_allocate_n_zeroed_typed(1, IdList);
            l->id           = (yyvsp[(1) - (2)].s);
@@ -4192,22 +4192,22 @@
     break;
 
   case 173:
-#line 1841 "compilers/imcc/imcc.y"
+#line 1843 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 174:
-#line 1842 "compilers/imcc/imcc.y"
+#line 1844 "compilers/imcc/imcc.y"
     { (yyval.t) = 1; }
     break;
 
   case 177:
-#line 1849 "compilers/imcc/imcc.y"
+#line 1851 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
   case 178:
-#line 1850 "compilers/imcc/imcc.y"
+#line 1852 "compilers/imcc/imcc.y"
     {
            IdList *l = (yyvsp[(4) - (4)].idlist);
            while (l) {
@@ -4226,19 +4226,19 @@
     break;
 
   case 179:
-#line 1866 "compilers/imcc/imcc.y"
+#line 1868 "compilers/imcc/imcc.y"
     {
            set_lexical(interp, (yyvsp[(4) - (4)].sr), (yyvsp[(2) - (4)].s)); (yyval.i) = 0;
          }
     break;
 
   case 180:
-#line 1869 "compilers/imcc/imcc.y"
+#line 1871 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
   case 181:
-#line 1870 "compilers/imcc/imcc.y"
+#line 1872 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 0);
            pesky_global__is_def=0;
@@ -4247,12 +4247,12 @@
     break;
 
   case 183:
-#line 1877 "compilers/imcc/imcc.y"
+#line 1879 "compilers/imcc/imcc.y"
     { pesky_global__is_def=1; }
     break;
 
   case 184:
-#line 1878 "compilers/imcc/imcc.y"
+#line 1880 "compilers/imcc/imcc.y"
     {
            mk_const_ident(interp, (yyvsp[(4) - (6)].s), (yyvsp[(3) - (6)].t), (yyvsp[(6) - (6)].sr), 1);
            pesky_global__is_def=0;
@@ -4261,7 +4261,7 @@
     break;
 
   case 185:
-#line 1884 "compilers/imcc/imcc.y"
+#line 1886 "compilers/imcc/imcc.y"
     {
            (yyval.i) = NULL;
            IMCC_INFO(interp)->cur_call->pcc_sub->flags |= isTAIL_CALL;
@@ -4270,14 +4270,14 @@
     break;
 
   case 186:
-#line 1890 "compilers/imcc/imcc.y"
+#line 1892 "compilers/imcc/imcc.y"
     {
             (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "branch", 1, (yyvsp[(2) - (2)].sr));
          }
     break;
 
   case 187:
-#line 1894 "compilers/imcc/imcc.y"
+#line 1896 "compilers/imcc/imcc.y"
     {
            (yyval.i) = INS(interp,
                     IMCC_INFO(interp)->cur_unit,
@@ -4292,47 +4292,47 @@
     break;
 
   case 188:
-#line 1905 "compilers/imcc/imcc.y"
+#line 1907 "compilers/imcc/imcc.y"
     { (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(2) - (2)].sr)); }
     break;
 
   case 189:
-#line 1906 "compilers/imcc/imcc.y"
+#line 1908 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; IMCC_INFO(interp)->cur_call = NULL; }
     break;
 
   case 190:
-#line 1907 "compilers/imcc/imcc.y"
+#line 1909 "compilers/imcc/imcc.y"
     { (yyval.i) = 0; }
     break;
 
   case 193:
-#line 1910 "compilers/imcc/imcc.y"
+#line 1912 "compilers/imcc/imcc.y"
     { (yyval.i) = 0;}
     break;
 
   case 194:
-#line 1914 "compilers/imcc/imcc.y"
+#line 1916 "compilers/imcc/imcc.y"
     { (yyval.t) = 'I'; }
     break;
 
   case 195:
-#line 1915 "compilers/imcc/imcc.y"
+#line 1917 "compilers/imcc/imcc.y"
     { (yyval.t) = 'N'; }
     break;
 
   case 196:
-#line 1916 "compilers/imcc/imcc.y"
+#line 1918 "compilers/imcc/imcc.y"
     { (yyval.t) = 'S'; }
     break;
 
   case 197:
-#line 1917 "compilers/imcc/imcc.y"
+#line 1919 "compilers/imcc/imcc.y"
     { (yyval.t) = 'P'; }
     break;
 
   case 198:
-#line 1922 "compilers/imcc/imcc.y"
+#line 1924 "compilers/imcc/imcc.y"
     {
            /* there'd normally be a str_dup() here, but the lexer already
             * copied the string, so it's safe to use directly */
@@ -4345,37 +4345,37 @@
     break;
 
   case 199:
-#line 1935 "compilers/imcc/imcc.y"
+#line 1937 "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 200:
-#line 1937 "compilers/imcc/imcc.y"
+#line 1939 "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 201:
-#line 1939 "compilers/imcc/imcc.y"
+#line 1941 "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 202:
-#line 1941 "compilers/imcc/imcc.y"
+#line 1943 "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 203:
-#line 1943 "compilers/imcc/imcc.y"
+#line 1945 "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 204:
-#line 1948 "compilers/imcc/imcc.y"
+#line 1950 "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 205:
-#line 1951 "compilers/imcc/imcc.y"
+#line 1953 "compilers/imcc/imcc.y"
     {
            add_pcc_result((yyvsp[(3) - (3)].i)->symregs[0], (yyvsp[(1) - (3)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
@@ -4384,14 +4384,14 @@
     break;
 
   case 206:
-#line 1957 "compilers/imcc/imcc.y"
+#line 1959 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
          }
     break;
 
   case 207:
-#line 1961 "compilers/imcc/imcc.y"
+#line 1963 "compilers/imcc/imcc.y"
     {
            IMCC_itcall_sub(interp, (yyvsp[(6) - (9)].sr));
            IMCC_INFO(interp)->cur_call = NULL;
@@ -4399,144 +4399,144 @@
     break;
 
   case 211:
-#line 1969 "compilers/imcc/imcc.y"
+#line 1971 "compilers/imcc/imcc.y"
     {
            (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "null", 1, (yyvsp[(1) - (3)].sr));
          }
     break;
 
   case 212:
-#line 1976 "compilers/imcc/imcc.y"
+#line 1978 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"not"; }
     break;
 
   case 213:
-#line 1977 "compilers/imcc/imcc.y"
+#line 1979 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bnot"; }
     break;
 
   case 214:
-#line 1978 "compilers/imcc/imcc.y"
+#line 1980 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"neg"; }
     break;
 
   case 215:
-#line 1982 "compilers/imcc/imcc.y"
+#line 1984 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
   case 216:
-#line 1983 "compilers/imcc/imcc.y"
+#line 1985 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
   case 217:
-#line 1984 "compilers/imcc/imcc.y"
+#line 1986 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
   case 218:
-#line 1985 "compilers/imcc/imcc.y"
+#line 1987 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
   case 219:
-#line 1986 "compilers/imcc/imcc.y"
+#line 1988 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
   case 220:
-#line 1987 "compilers/imcc/imcc.y"
+#line 1989 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
   case 221:
-#line 1988 "compilers/imcc/imcc.y"
+#line 1990 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"pow"; }
     break;
 
   case 222:
-#line 1989 "compilers/imcc/imcc.y"
+#line 1991 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
   case 223:
-#line 1990 "compilers/imcc/imcc.y"
+#line 1992 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"iseq"; }
     break;
 
   case 224:
-#line 1991 "compilers/imcc/imcc.y"
+#line 1993 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isne"; }
     break;
 
   case 225:
-#line 1992 "compilers/imcc/imcc.y"
+#line 1994 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isgt"; }
     break;
 
   case 226:
-#line 1993 "compilers/imcc/imcc.y"
+#line 1995 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isge"; }
     break;
 
   case 227:
-#line 1994 "compilers/imcc/imcc.y"
+#line 1996 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"islt"; }
     break;
 
   case 228:
-#line 1995 "compilers/imcc/imcc.y"
+#line 1997 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"isle"; }
     break;
 
   case 229:
-#line 1996 "compilers/imcc/imcc.y"
+#line 1998 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
   case 230:
-#line 1997 "compilers/imcc/imcc.y"
+#line 1999 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
   case 231:
-#line 1998 "compilers/imcc/imcc.y"
+#line 2000 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
   case 232:
-#line 1999 "compilers/imcc/imcc.y"
+#line 2001 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"and"; }
     break;
 
   case 233:
-#line 2000 "compilers/imcc/imcc.y"
+#line 2002 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"or"; }
     break;
 
   case 234:
-#line 2001 "compilers/imcc/imcc.y"
+#line 2003 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"xor"; }
     break;
 
   case 235:
-#line 2002 "compilers/imcc/imcc.y"
+#line 2004 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
   case 236:
-#line 2003 "compilers/imcc/imcc.y"
+#line 2005 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
   case 237:
-#line 2004 "compilers/imcc/imcc.y"
+#line 2006 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
   case 238:
-#line 2010 "compilers/imcc/imcc.y"
+#line 2012 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            (yyval.i)->type &= ~ITCALL;
@@ -4545,84 +4545,84 @@
     break;
 
   case 239:
-#line 2015 "compilers/imcc/imcc.y"
+#line 2017 "compilers/imcc/imcc.y"
     {  (yyval.i) = 0; }
     break;
 
   case 240:
-#line 2022 "compilers/imcc/imcc.y"
+#line 2024 "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 241:
-#line 2028 "compilers/imcc/imcc.y"
+#line 2030 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"add"; }
     break;
 
   case 242:
-#line 2029 "compilers/imcc/imcc.y"
+#line 2031 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"sub"; }
     break;
 
   case 243:
-#line 2030 "compilers/imcc/imcc.y"
+#line 2032 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mul"; }
     break;
 
   case 244:
-#line 2031 "compilers/imcc/imcc.y"
+#line 2033 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"div"; }
     break;
 
   case 245:
-#line 2032 "compilers/imcc/imcc.y"
+#line 2034 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"mod"; }
     break;
 
   case 246:
-#line 2033 "compilers/imcc/imcc.y"
+#line 2035 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"fdiv"; }
     break;
 
   case 247:
-#line 2034 "compilers/imcc/imcc.y"
+#line 2036 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"concat"; }
     break;
 
   case 248:
-#line 2035 "compilers/imcc/imcc.y"
+#line 2037 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"band"; }
     break;
 
   case 249:
-#line 2036 "compilers/imcc/imcc.y"
+#line 2038 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bor"; }
     break;
 
   case 250:
-#line 2037 "compilers/imcc/imcc.y"
+#line 2039 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"bxor"; }
     break;
 
   case 251:
-#line 2038 "compilers/imcc/imcc.y"
+#line 2040 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shr"; }
     break;
 
   case 252:
-#line 2039 "compilers/imcc/imcc.y"
+#line 2041 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"shl"; }
     break;
 
   case 253:
-#line 2040 "compilers/imcc/imcc.y"
+#line 2042 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lsr"; }
     break;
 
   case 254:
-#line 2046 "compilers/imcc/imcc.y"
+#line 2048 "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,
@@ -4633,22 +4633,22 @@
     break;
 
   case 255:
-#line 2056 "compilers/imcc/imcc.y"
+#line 2058 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 256:
-#line 2057 "compilers/imcc/imcc.y"
+#line 2059 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 257:
-#line 2058 "compilers/imcc/imcc.y"
+#line 2060 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 258:
-#line 2060 "compilers/imcc/imcc.y"
+#line 2062 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = (yyvsp[(1) - (1)].sr);
            if ((yyvsp[(1) - (1)].sr)->set != 'P')
@@ -4657,7 +4657,7 @@
     break;
 
   case 259:
-#line 2066 "compilers/imcc/imcc.y"
+#line 2068 "compilers/imcc/imcc.y"
     {
             /* disallow bareword method names; SREG name constants are fine */
             char *name = (yyvsp[(3) - (3)].sr)->name;
@@ -4674,7 +4674,7 @@
     break;
 
   case 260:
-#line 2080 "compilers/imcc/imcc.y"
+#line 2082 "compilers/imcc/imcc.y"
     {
             IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr);
             (yyval.sr)                         = mk_const(interp, (yyvsp[(3) - (3)].s), 'S');
@@ -4683,12 +4683,12 @@
     break;
 
   case 261:
-#line 2085 "compilers/imcc/imcc.y"
+#line 2087 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->cur_obj = (yyvsp[(1) - (3)].sr); (yyval.sr) = (yyvsp[(3) - (3)].sr); }
     break;
 
   case 262:
-#line 2091 "compilers/imcc/imcc.y"
+#line 2093 "compilers/imcc/imcc.y"
     {
            (yyval.i) = IMCC_create_itcall_label(interp);
            IMCC_itcall_sub(interp, (yyvsp[(1) - (1)].sr));
@@ -4696,17 +4696,17 @@
     break;
 
   case 263:
-#line 2095 "compilers/imcc/imcc.y"
+#line 2097 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(2) - (5)].i); }
     break;
 
   case 264:
-#line 2099 "compilers/imcc/imcc.y"
+#line 2101 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 265:
-#line 2101 "compilers/imcc/imcc.y"
+#line 2103 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4719,7 +4719,7 @@
     break;
 
   case 266:
-#line 2111 "compilers/imcc/imcc.y"
+#line 2113 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4732,7 +4732,7 @@
     break;
 
   case 267:
-#line 2121 "compilers/imcc/imcc.y"
+#line 2123 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
@@ -4741,7 +4741,7 @@
     break;
 
   case 268:
-#line 2127 "compilers/imcc/imcc.y"
+#line 2129 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg_var(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].sr), (yyvsp[(3) - (3)].sr));
@@ -4749,7 +4749,7 @@
     break;
 
   case 269:
-#line 2132 "compilers/imcc/imcc.y"
+#line 2134 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            add_pcc_named_arg(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
@@ -4758,42 +4758,42 @@
     break;
 
   case 270:
-#line 2140 "compilers/imcc/imcc.y"
+#line 2142 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
   case 271:
-#line 2144 "compilers/imcc/imcc.y"
+#line 2146 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 272:
-#line 2145 "compilers/imcc/imcc.y"
+#line 2147 "compilers/imcc/imcc.y"
     { (yyval.t) = (yyvsp[(1) - (2)].t) | (yyvsp[(2) - (2)].t); }
     break;
 
   case 273:
-#line 2149 "compilers/imcc/imcc.y"
+#line 2151 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_FLAT; }
     break;
 
   case 274:
-#line 2150 "compilers/imcc/imcc.y"
+#line 2152 "compilers/imcc/imcc.y"
     { (yyval.t) = VT_NAMED; }
     break;
 
   case 275:
-#line 2153 "compilers/imcc/imcc.y"
+#line 2155 "compilers/imcc/imcc.y"
     { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
     break;
 
   case 276:
-#line 2157 "compilers/imcc/imcc.y"
+#line 2159 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
     break;
 
   case 277:
-#line 2162 "compilers/imcc/imcc.y"
+#line 2164 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4806,7 +4806,7 @@
     break;
 
   case 278:
-#line 2172 "compilers/imcc/imcc.y"
+#line 2174 "compilers/imcc/imcc.y"
     {
            add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(3) - (5)].s), (yyvsp[(5) - (5)].sr));
            mem_sys_free((yyvsp[(3) - (5)].s));
@@ -4814,7 +4814,7 @@
     break;
 
   case 279:
-#line 2177 "compilers/imcc/imcc.y"
+#line 2179 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = 0;
            if (IMCC_INFO(interp)->adv_named_id) {
@@ -4827,7 +4827,7 @@
     break;
 
   case 280:
-#line 2187 "compilers/imcc/imcc.y"
+#line 2189 "compilers/imcc/imcc.y"
     {
            add_pcc_named_result(interp, IMCC_INFO(interp)->cur_call, (yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].sr));
            mem_sys_free((yyvsp[(1) - (3)].s));
@@ -4835,124 +4835,124 @@
     break;
 
   case 281:
-#line 2191 "compilers/imcc/imcc.y"
+#line 2193 "compilers/imcc/imcc.y"
     { (yyval.sr) = 0; }
     break;
 
   case 282:
-#line 2195 "compilers/imcc/imcc.y"
+#line 2197 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 283:
-#line 2196 "compilers/imcc/imcc.y"
+#line 2198 "compilers/imcc/imcc.y"
     { (yyval.i) = (yyvsp[(1) - (1)].i); }
     break;
 
   case 284:
-#line 2201 "compilers/imcc/imcc.y"
+#line 2203 "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 285:
-#line 2205 "compilers/imcc/imcc.y"
+#line 2207 "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 286:
-#line 2209 "compilers/imcc/imcc.y"
+#line 2211 "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 287:
-#line 2216 "compilers/imcc/imcc.y"
+#line 2218 "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 288:
-#line 2220 "compilers/imcc/imcc.y"
+#line 2222 "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 289:
-#line 2224 "compilers/imcc/imcc.y"
+#line 2226 "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 290:
-#line 2230 "compilers/imcc/imcc.y"
+#line 2232 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 291:
-#line 2231 "compilers/imcc/imcc.y"
+#line 2233 "compilers/imcc/imcc.y"
     { (yyval.t) = 0; }
     break;
 
   case 292:
-#line 2235 "compilers/imcc/imcc.y"
+#line 2237 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"eq"; }
     break;
 
   case 293:
-#line 2236 "compilers/imcc/imcc.y"
+#line 2238 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ne"; }
     break;
 
   case 294:
-#line 2237 "compilers/imcc/imcc.y"
+#line 2239 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"gt"; }
     break;
 
   case 295:
-#line 2238 "compilers/imcc/imcc.y"
+#line 2240 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"ge"; }
     break;
 
   case 296:
-#line 2239 "compilers/imcc/imcc.y"
+#line 2241 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"lt"; }
     break;
 
   case 297:
-#line 2240 "compilers/imcc/imcc.y"
+#line 2242 "compilers/imcc/imcc.y"
     { (yyval.s) = (char *)"le"; }
     break;
 
   case 300:
-#line 2249 "compilers/imcc/imcc.y"
+#line 2251 "compilers/imcc/imcc.y"
     { (yyval.sr) = NULL; }
     break;
 
   case 301:
-#line 2250 "compilers/imcc/imcc.y"
+#line 2252 "compilers/imcc/imcc.y"
     { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 302:
-#line 2254 "compilers/imcc/imcc.y"
+#line 2256 "compilers/imcc/imcc.y"
     { (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
     break;
 
   case 304:
-#line 2259 "compilers/imcc/imcc.y"
+#line 2261 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 305:
-#line 2261 "compilers/imcc/imcc.y"
+#line 2263 "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);
@@ -4962,7 +4962,7 @@
     break;
 
   case 306:
-#line 2268 "compilers/imcc/imcc.y"
+#line 2270 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
            (yyval.sr) = (yyvsp[(2) - (3)].sr);
@@ -4970,37 +4970,37 @@
     break;
 
   case 308:
-#line 2275 "compilers/imcc/imcc.y"
+#line 2277 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 309:
-#line 2276 "compilers/imcc/imcc.y"
+#line 2278 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s));  mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 310:
-#line 2280 "compilers/imcc/imcc.y"
+#line 2282 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 311:
-#line 2281 "compilers/imcc/imcc.y"
+#line 2283 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 312:
-#line 2285 "compilers/imcc/imcc.y"
+#line 2287 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 313:
-#line 2286 "compilers/imcc/imcc.y"
+#line 2288 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 318:
-#line 2300 "compilers/imcc/imcc.y"
+#line 2302 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys    = 0;
            IMCC_INFO(interp)->in_slice = 0;
@@ -5008,7 +5008,7 @@
     break;
 
   case 319:
-#line 2305 "compilers/imcc/imcc.y"
+#line 2307 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -5017,7 +5017,7 @@
     break;
 
   case 320:
-#line 2313 "compilers/imcc/imcc.y"
+#line 2315 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->nkeys = 0;
            IMCC_INFO(interp)->in_slice = 0;
@@ -5025,7 +5025,7 @@
     break;
 
   case 321:
-#line 2318 "compilers/imcc/imcc.y"
+#line 2320 "compilers/imcc/imcc.y"
     {
            (yyval.sr) = link_keys(interp,
                           IMCC_INFO(interp)->nkeys,
@@ -5034,12 +5034,12 @@
     break;
 
   case 322:
-#line 2326 "compilers/imcc/imcc.y"
+#line 2328 "compilers/imcc/imcc.y"
     { IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
     break;
 
   case 323:
-#line 2328 "compilers/imcc/imcc.y"
+#line 2330 "compilers/imcc/imcc.y"
     {
            IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
            (yyval.sr) = IMCC_INFO(interp)->keys[0];
@@ -5047,7 +5047,7 @@
     break;
 
   case 324:
-#line 2336 "compilers/imcc/imcc.y"
+#line 2338 "compilers/imcc/imcc.y"
     {
            if (IMCC_INFO(interp)->in_slice)
                (yyvsp[(1) - (1)].sr)->type |= VT_START_SLICE | VT_END_SLICE;
@@ -5056,53 +5056,53 @@
     break;
 
   case 325:
-#line 2344 "compilers/imcc/imcc.y"
+#line 2346 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
     break;
 
   case 326:
-#line 2345 "compilers/imcc/imcc.y"
+#line 2347 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
     break;
 
   case 327:
-#line 2346 "compilers/imcc/imcc.y"
+#line 2348 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
     break;
 
   case 328:
-#line 2347 "compilers/imcc/imcc.y"
+#line 2349 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
     break;
 
   case 329:
-#line 2348 "compilers/imcc/imcc.y"
+#line 2350 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 330:
-#line 2352 "compilers/imcc/imcc.y"
+#line 2354 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 331:
-#line 2353 "compilers/imcc/imcc.y"
+#line 2355 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 332:
-#line 2354 "compilers/imcc/imcc.y"
+#line 2356 "compilers/imcc/imcc.y"
     { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
     break;
 
   case 333:
-#line 2355 "compilers/imcc/imcc.y"
+#line 2357 "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 5093 "compilers/imcc/imcparser.c"
+#line 5095 "compilers/imcc/imcparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5316,7 +5316,7 @@
 }
 
 
-#line 2361 "compilers/imcc/imcc.y"
+#line 2363 "compilers/imcc/imcc.y"
 
 
 /* I need this prototype somewhere... */

Modified: branches/headercleanup/compilers/imcc/imcparser.h
==============================================================================
--- branches/headercleanup/compilers/imcc/imcparser.h	Tue Apr  7 18:38:30 2009	(r37949)
+++ branches/headercleanup/compilers/imcc/imcparser.h	Tue Apr  7 21:01:10 2009	(r37950)
@@ -295,7 +295,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 1007 "compilers/imcc/imcc.y"
+#line 1009 "compilers/imcc/imcc.y"
 {
     IdList * idlist;
     int t;

Modified: branches/headercleanup/config/gen/makefiles/root.in
==============================================================================
--- branches/headercleanup/config/gen/makefiles/root.in	Tue Apr  7 18:38:30 2009	(r37949)
+++ branches/headercleanup/config/gen/makefiles/root.in	Tue Apr  7 21:01:10 2009	(r37950)
@@ -410,9 +410,9 @@
     $(SRC_DIR)/hash$(O) \
     $(SRC_DIR)/hll$(O) \
     $(SRC_DIR)/call/pcc$(O)  \
-    $(SRC_DIR)/inter_cb$(O)  \
-    $(SRC_DIR)/inter_create$(O)  \
-    $(SRC_DIR)/inter_misc$(O)  \
+    $(SRC_DIR)/interp/inter_cb$(O)  \
+    $(SRC_DIR)/interp/inter_create$(O)  \
+    $(SRC_DIR)/interp/inter_misc$(O)  \
     $(SRC_DIR)/interp/interpreter$(O)  \
     $(SRC_DIR)/call/ops$(O)  \
     $(SRC_DIR)/key$(O) \
@@ -592,9 +592,9 @@
     $(SRC_DIR)/global_setup.str \
     $(SRC_DIR)/hll.str \
     $(SRC_DIR)/call/pcc.str \
-    $(SRC_DIR)/inter_cb.str \
-    $(SRC_DIR)/inter_create.str \
-    $(SRC_DIR)/inter_misc.str \
+    $(SRC_DIR)/interp/inter_cb.str \
+    $(SRC_DIR)/interp/inter_create.str \
+    $(SRC_DIR)/interp/inter_misc.str \
     $(SRC_DIR)/io/api.str \
     $(SRC_DIR)/key.str \
     $(SRC_DIR)/library.str \
@@ -1127,14 +1127,14 @@
 	$(SRC_DIR)/call/pcc.str $(SRC_DIR)/pmc/pmc_fixedintegerarray.h \
 	$(SRC_DIR)/pmc/pmc_key.h $(SRC_DIR)/pmc/pmc_continuation.h
 
-$(SRC_DIR)/inter_cb$(O) : $(SRC_DIR)/inter_cb.c $(GENERAL_H_FILES) \
-    $(SRC_DIR)/inter_cb.str
+$(SRC_DIR)/interp/inter_cb$(O) : $(SRC_DIR)/interp/inter_cb.c \
+	$(GENERAL_H_FILES) $(SRC_DIR)/interp/inter_cb.str
 
-$(SRC_DIR)/inter_misc$(O) : $(SRC_DIR)/inter_misc.c $(GENERAL_H_FILES) \
-    $(SRC_DIR)/inter_misc.str
+$(SRC_DIR)/interp/inter_misc$(O) : $(SRC_DIR)/interp/inter_misc.c \
+	$(GENERAL_H_FILES) $(SRC_DIR)/interp/inter_misc.str
 
-$(SRC_DIR)/inter_create$(O) : $(SRC_DIR)/inter_create.c $(GENERAL_H_FILES) \
-    $(SRC_DIR)/inter_create.str
+$(SRC_DIR)/interp/inter_create$(O) : $(SRC_DIR)/interp/inter_create.c \
+	$(GENERAL_H_FILES) $(SRC_DIR)/interp/inter_create.str
 
 $(SRC_DIR)/call/ops$(O) : $(SRC_DIR)/call/ops.c $(GENERAL_H_FILES) \
 	$(SRC_DIR)/pmc/pmc_continuation.h

Modified: branches/headercleanup/include/parrot/interpreter.h
==============================================================================
--- branches/headercleanup/include/parrot/interpreter.h	Tue Apr  7 18:38:30 2009	(r37949)
+++ branches/headercleanup/include/parrot/interpreter.h	Tue Apr  7 21:01:10 2009	(r37950)
@@ -497,7 +497,7 @@
 typedef PMC *(*Parrot_compiler_func_t)(PARROT_INTERP,
                                        const char * program);
 
-/* HEADERIZER BEGIN: src/inter_create.c */
+/* HEADERIZER BEGIN: src/interp/inter_create.c */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
 PARROT_EXPORT
@@ -519,9 +519,9 @@
 #define ASSERT_ARGS_Parrot_really_destroy __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp)
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
-/* HEADERIZER END: src/inter_create.c */
+/* HEADERIZER END: src/interp/inter_create.c */
 
-/* HEADERIZER BEGIN: src/inter_cb.c */
+/* HEADERIZER BEGIN: src/interp/inter_cb.c */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
 PARROT_EXPORT
@@ -574,9 +574,9 @@
     || PARROT_ASSERT_ARG(user_data) \
     || PARROT_ASSERT_ARG(external_data)
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
-/* HEADERIZER END: src/inter_cb.c */
+/* HEADERIZER END: src/interp/inter_cb.c */
 
-/* HEADERIZER BEGIN: src/inter_misc.c */
+/* HEADERIZER BEGIN: src/interp/inter_misc.c */
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
 
 PARROT_EXPORT
@@ -678,7 +678,7 @@
 #define ASSERT_ARGS_sysinfo_s __attribute__unused__ int _ASSERT_ARGS_CHECK = \
        PARROT_ASSERT_ARG(interp)
 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
-/* HEADERIZER END: src/inter_misc.c */
+/* HEADERIZER END: src/interp/inter_misc.c */
 
 
 /* interpreter.c */

Deleted: branches/headercleanup/src/inter_cb.c
==============================================================================
--- branches/headercleanup/src/inter_cb.c	Tue Apr  7 21:01:10 2009	(r37949)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,406 +0,0 @@
-/*
-Copyright (C) 2001-2008, Parrot Foundation.
-$Id$
-
-=head1 NAME
-
-src/inter_cb.c - Parrot Interpreter - Callback Function Handling
-
-=head1 DESCRIPTION
-
-NCI callback functions may run whenever the C code executes the callback.
-To be prepared for asynchronous callbacks these are converted to callback
-events.
-
-Often callbacks should run synchronously. This can only happen when
-the C-library calls the callback, because Parrot called a function in
-the C-library.
-
-=head2 Functions
-
-=over 4
-
-=cut
-
-*/
-
-#include "parrot/parrot.h"
-#include "inter_cb.str"
-
-
-/* HEADERIZER HFILE: include/parrot/interpreter.h */
-
-/* HEADERIZER BEGIN: static */
-/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
-
-static void callback_CD(PARROT_INTERP,
-    ARGIN(char *external_data),
-    ARGMOD(PMC *user_data))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        __attribute__nonnull__(3)
-        FUNC_MODIFIES(*user_data);
-
-static void verify_CD(ARGIN(char *external_data), ARGMOD(PMC *user_data))
-        __attribute__nonnull__(1)
-        __attribute__nonnull__(2)
-        FUNC_MODIFIES(*user_data);
-
-#define ASSERT_ARGS_callback_CD __attribute__unused__ int _ASSERT_ARGS_CHECK = \
-       PARROT_ASSERT_ARG(interp) \
-    || PARROT_ASSERT_ARG(external_data) \
-    || PARROT_ASSERT_ARG(user_data)
-#define ASSERT_ARGS_verify_CD __attribute__unused__ int _ASSERT_ARGS_CHECK = \
-       PARROT_ASSERT_ARG(external_data) \
-    || PARROT_ASSERT_ARG(user_data)
-/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
-/* HEADERIZER END: static */
-
-/*
-
-=item C<PMC* Parrot_make_cb(PARROT_INTERP, PMC* sub, PMC* user_data, STRING
-*cb_signature)>
-
-Create a callback function according to pdd16.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-PMC*
-Parrot_make_cb(PARROT_INTERP, ARGMOD(PMC* sub), ARGIN(PMC* user_data),
-        ARGIN(STRING *cb_signature))
-{
-    ASSERT_ARGS(Parrot_make_cb)
-    PMC *cb, *cb_sig;
-    int type;
-    char * sig_str;
-    STRING *sc;
-    /*
-     * we stuff all the information into the user_data PMC and pass that
-     * on to the external sub
-     */
-    PMC * const interp_pmc = VTABLE_get_pmc_keyed_int(interp, interp->iglobals,
-            (INTVAL) IGLOBALS_INTERPRETER);
-
-    /* be sure __LINE__ is consistent */
-    sc = CONST_STRING(interp, "_interpreter");
-    VTABLE_setprop(interp, user_data, sc, interp_pmc);
-    sc = CONST_STRING(interp, "_sub");
-    VTABLE_setprop(interp, user_data, sc, sub);
-    /* only ASCII signatures are supported */
-    sig_str = cb_signature->strstart;
-
-    if (strlen(sig_str) != 3)
-        Parrot_ex_throw_from_c_args(interp, NULL, 1,
-            "unhandled signature '%s' in make_cb", cb_signature->strstart);
-
-    ++sig_str;     /* Skip callback return type */
-
-    if (*sig_str == 'U') {
-        type = 'D';
-    }
-    else {
-        ++sig_str;
-        if (*sig_str == 'U') {
-            type = 'C';
-        }
-        else {
-            Parrot_ex_throw_from_c_args(interp, NULL, 1,
-                "unhandled signature '%s' in make_cb", cb_signature->strstart);
-        }
-    }
-
-    cb_sig = pmc_new(interp, enum_class_String);
-    VTABLE_set_string_native(interp, cb_sig, cb_signature);
-    sc = CONST_STRING(interp, "_signature");
-    VTABLE_setprop(interp, user_data, sc, cb_sig);
-    /*
-     * We are going to be passing the user_data PMC to external code, but
-     * it may go out of scope until the callback is called -- we don't know
-     * for certain as we don't know when the callback will be called.
-     * Therefore, to prevent the PMC from being destroyed by a GC sweep,
-     * we need to anchor it.
-     *
-     */
-    gc_register_pmc(interp, user_data);
-
-    /*
-     * Finally, the external lib awaits a function pointer.
-     * Create a PMC that points to Parrot_callback_C (or _D);
-     * it can be passed on with signature 'p'.
-     */
-    cb = pmc_new(interp, enum_class_UnManagedStruct);
-    /*
-     * Currently, we handle only 2 types:
-     * _C ... user_data is 2nd parameter
-     * _D ... user_data is 1st parameter
-     */
-    if (type == 'C')
-        VTABLE_set_pointer(interp, cb, F2DPTR(Parrot_callback_C));
-    else
-        VTABLE_set_pointer(interp, cb, F2DPTR(Parrot_callback_D));
-    gc_register_pmc(interp, cb);
-
-    return cb;
-}
-
-/*
-
-=item C<static void verify_CD(char *external_data, PMC *user_data)>
-
-Verify user_data PMC then continue with callback_CD
-
-=cut
-
-*/
-
-static void
-verify_CD(ARGIN(char *external_data), ARGMOD(PMC *user_data))
-{
-    ASSERT_ARGS(verify_CD)
-    PARROT_INTERP = NULL;
-    size_t i;
-
-    /*
-     * 1.) user_data is from external code so:
-     *     verify that we get a PMC that is one that we have passed in
-     *     as user data, when we prepared the callback
-     */
-
-    /* a NULL pointer or a pointer not aligned is very likely wrong */
-    if (!user_data || ((UINTVAL)user_data & 3))
-        PANIC(interp, "user_data doesn't look like a pointer");
-
-    /*
-     * We don't yet know which interpreter this PMC is from, so run
-     * through all of the existing interpreters and check their PMC
-     * pools
-     */
-    LOCK(interpreter_array_mutex);
-    for (i = 0; i < n_interpreters; ++i) {
-        if (interpreter_array[i] == NULL)
-            continue;
-        interp = interpreter_array[i];
-        if (interp)
-            if (contained_in_pool(interp->arena_base->pmc_pool, user_data))
-                break;
-    }
-    UNLOCK(interpreter_array_mutex);
-    if (!interp)
-        PANIC(interp, "interpreter not found for callback");
-
-    /*
-     * 2) some more checks
-     * now we should have the interpreter where that callback
-     * did originate - do some further checks on the PMC
-     */
-
-    /* if that doesn't look like a PMC we are still lost */
-    if (!PObj_is_PMC_TEST(user_data))
-        PANIC(interp, "user_data isn't a PMC");
-
-    if (!user_data->vtable)
-        PANIC(interp, "user_data hasn't a vtable");
-    /*
-     * ok fine till here
-     */
-    callback_CD(interp, external_data, user_data);
-}
-
-/*
-
-=item C<static void callback_CD(PARROT_INTERP, char *external_data, PMC
-*user_data)>
-
-Common callback function handler. See pdd16.
-
-=cut
-
-*/
-
-static void
-callback_CD(PARROT_INTERP, ARGIN(char *external_data), ARGMOD(PMC *user_data))
-{
-    ASSERT_ARGS(callback_CD)
-
-    PMC *passed_interp;       /* the interp that originated the CB */
-    PMC *passed_synchronous;  /* flagging synchronous execution */
-    int synchronous = 0;      /* cb is hitting this sub somewhen
-                               * inmidst, or not */
-    STRING *sc;
-    /*
-     * 3) check interpreter ...
-     */
-    sc = CONST_STRING(interp, "_interpreter");
-    passed_interp = VTABLE_getprop(interp, user_data, sc);
-    if (VTABLE_get_pointer(interp, passed_interp) != interp)
-        PANIC(interp, "callback gone to wrong interpreter");
-
-    sc = CONST_STRING(interp, "_synchronous");
-    passed_synchronous = VTABLE_getprop(interp, user_data, sc);
-    if (!PMC_IS_NULL(passed_synchronous) &&
-            VTABLE_get_bool(interp, passed_synchronous))
-        synchronous = 1;
-
-    /*
-     * 4) check if the call_back is synchronous:
-     *    - if yes we are inside the NCI call
-     *      we could run the Sub immediately now (I think)
-     *    - if no, and that's always safe, post a callback event
-     */
-
-    if (synchronous) {
-        /*
-         * just call the sub
-         */
-        Parrot_run_callback(interp, user_data, external_data);
-    }
-    else {
-        /*
-         * create a CB_EVENT, put user_data and data inside and finito
-         *
-         * *if* this function is finally no void, i.e. the calling
-         * C program awaits a return result from the callback,
-         * then wait for the CB_EVENT_xx to finish and return the
-         * result
-         */
-        Parrot_cx_schedule_callback(interp, user_data, external_data);
-    }
-}
-
-/*
-
-=item C<void Parrot_run_callback(PARROT_INTERP, PMC* user_data, char*
-external_data)>
-
-Run a callback function. The PMC* user_data holds all
-necessary items in its properties.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_run_callback(PARROT_INTERP,
-        ARGMOD(PMC* user_data), ARGIN(char* external_data))
-{
-    ASSERT_ARGS(Parrot_run_callback)
-    PMC     *signature;
-    PMC     *sub;
-    STRING  *sig_str;
-    char    *p;
-    char     pasm_sig[4];
-    INTVAL   i_param;
-    PMC     *p_param;
-    void    *param = NULL;      /* avoid -Ox warning */
-    STRING  *sc;
-
-    sc        = CONST_STRING(interp, "_sub");
-    sub       = VTABLE_getprop(interp, user_data, sc);
-    sc        = CONST_STRING(interp, "_signature");
-    signature = VTABLE_getprop(interp, user_data, sc);
-
-    sig_str   = VTABLE_get_string(interp, signature);
-    p         = sig_str->strstart;
-    ++p;     /* Skip return type */
-
-    pasm_sig[0] = 'v';  /* no return value supported yet */
-    pasm_sig[1] = 'P';
-    if (*p == 'U') /* user_data Z in pdd16 */
-        ++p;       /* p is now type of external data */
-    switch (*p) {
-        case 'v':
-            pasm_sig[2] = 'v';
-            break;
-#if 0
-        case '2':
-        case '3':
-        case '4':
-#endif
-        case 'l':
-            i_param = (INTVAL)(long) external_data;
-            goto case_I;
-        case 'i':
-            i_param = (INTVAL)(int)(long) external_data;
-            goto case_I;
-        case 's':
-            i_param = (INTVAL)(short)(long) external_data;
-            goto case_I;
-        case 'c':
-            i_param = (INTVAL)(char)(long)external_data;
-case_I:
-            pasm_sig[2] = 'I';
-            param = (void*) i_param;
-            break;
-#if 0
-        case 'f':
-        case 'd':
-            /* these types don't fit into a pointer, they will not
-             * work
-             */
-            break;
-#endif
-        case 'p':
-            /* created a UnManagedStruct */
-            p_param = pmc_new(interp, enum_class_UnManagedStruct);
-            VTABLE_set_pointer(interp, p_param, external_data);
-            pasm_sig[2] = 'P';
-            param = (void*) p_param;
-            break;
-#if 0
-        case 'P':
-            pasm_sig[2] = 'P';
-            break;
-#endif
-        case 't':
-            pasm_sig[2] = 'S';
-            param = Parrot_str_new(interp, external_data, 0);
-            break;
-        default:
-            Parrot_ex_throw_from_c_args(interp, NULL, 1,
-                "unhandled signature char '%c' in run_cb", *p);
-    }
-    pasm_sig[3] = '\0';
-    Parrot_runops_fromc_args_event(interp, sub, pasm_sig,
-            user_data, param);
-}
-/*
-
-=item C<void Parrot_callback_C(char *external_data, PMC *user_data)>
-
-=item C<void Parrot_callback_D(PMC *user_data, char *external_data)>
-
-NCI callback functions. See pdd16.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_callback_C(ARGIN(char *external_data), ARGMOD(PMC *user_data))
-{
-    ASSERT_ARGS(Parrot_callback_C)
-    verify_CD(external_data, user_data);
-}
-
-PARROT_EXPORT
-void
-Parrot_callback_D(ARGMOD(PMC *user_data), ARGIN(char *external_data))
-{
-    ASSERT_ARGS(Parrot_callback_D)
-    verify_CD(external_data, user_data);
-}
-
-
-/*
- * Local variables:
- *   c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */

Deleted: branches/headercleanup/src/inter_create.c
==============================================================================
--- branches/headercleanup/src/inter_create.c	Tue Apr  7 21:01:10 2009	(r37949)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,494 +0,0 @@
-/*
-Copyright (C) 2001-2009, Parrot Foundation.
-$Id$
-
-=head1 NAME
-
-src/inter_create.c - Parrot Interpreter Creation and Destruction
-
-=head1 DESCRIPTION
-
-Create or destroy a Parrot interpreter
-
-=head2 Functions
-
-=over 4
-
-=cut
-
-*/
-
-
-#include "parrot/parrot.h"
-#include "parrot/oplib/core_ops.h"
-#include "../compilers/imcc/imc.h"
-#include "inter_create.str"
-
-/* HEADERIZER HFILE: include/parrot/interpreter.h */
-
-/* HEADERIZER BEGIN: static */
-/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
-
-PARROT_WARN_UNUSED_RESULT
-static int is_env_var_set(ARGIN(const char* var))
-        __attribute__nonnull__(1);
-
-static void setup_default_compreg(PARROT_INTERP)
-        __attribute__nonnull__(1);
-
-#define ASSERT_ARGS_is_env_var_set __attribute__unused__ int _ASSERT_ARGS_CHECK = \
-       PARROT_ASSERT_ARG(var)
-#define ASSERT_ARGS_setup_default_compreg __attribute__unused__ int _ASSERT_ARGS_CHECK = \
-       PARROT_ASSERT_ARG(interp)
-/* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
-/* HEADERIZER END: static */
-
-#if EXEC_CAPABLE
-    extern int Parrot_exec_run;
-#endif
-
-#if EXEC_CAPABLE
-Interp interpre;
-#endif
-
-#define ATEXIT_DESTROY
-
-/*
-
-=item C<static int is_env_var_set(const char* var)>
-
-Checks whether the specified environment variable is set.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-static int
-is_env_var_set(ARGIN(const char* var))
-{
-    ASSERT_ARGS(is_env_var_set)
-    int free_it, retval;
-    char* const value = Parrot_getenv(var, &free_it);
-    if (value == NULL)
-        retval = 0;
-    else if (*value == '\0')
-        retval = 0;
-    else
-        retval = !STREQ(value, "0");
-    if (free_it)
-        mem_sys_free(value);
-    return retval;
-}
-
-/*
-
-=item C<static void setup_default_compreg(PARROT_INTERP)>
-
-Setup default compiler for PASM.
-
-=cut
-
-*/
-
-static void
-setup_default_compreg(PARROT_INTERP)
-{
-    ASSERT_ARGS(setup_default_compreg)
-    STRING * const pasm1 = CONST_STRING(interp, "PASM1");
-
-    /* register the nci compiler object */
-    Parrot_compreg(interp, pasm1, (Parrot_compiler_func_t)PDB_compile);
-}
-
-/*
-
-=item C<Parrot_Interp make_interpreter(Interp *parent, INTVAL flags)>
-
-Create the Parrot interpreter. Allocate memory and clear the registers.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-Parrot_Interp
-make_interpreter(ARGIN_NULLOK(Interp *parent), INTVAL flags)
-{
-    ASSERT_ARGS(make_interpreter)
-    int stacktop;
-    Interp *interp;
-
-    /* Get an empty interpreter from system memory */
-#if EXEC_CAPABLE
-    if (Parrot_exec_run)
-        interp = &interpre;
-    else
-#endif
-        interp = mem_allocate_zeroed_typed(Interp);
-
-    interp->lo_var_ptr = NULL;
-
-    /* the last interpreter (w/o) parent has to cleanup globals
-     * so remember parent if any */
-    if (parent)
-        interp->parent_interpreter = parent;
-    else {
-        interp->parent_interpreter = NULL;
-        PMCNULL                    = NULL;
-        /*
-         * we need a global mutex to protect the interpreter array
-         */
-        MUTEX_INIT(interpreter_array_mutex);
-    }
-
-    create_initial_context(interp);
-    interp->resume_flag = RESUME_INITIAL;
-
-    /* main is called as a Sub too - this will get depth 0 then */
-    CONTEXT(interp)->recursion_depth = (UINTVAL)-1;
-    interp->recursion_limit = RECURSION_LIMIT;
-
-    /* Must initialize flags here so the GC_DEBUG stuff is available before
-     * mem_setup_allocator() is called. */
-    interp->flags = flags;
-
-    /* PANIC will fail until this is done */
-    interp->piodata = NULL;
-    Parrot_io_init(interp);
-
-    if (is_env_var_set("PARROT_GC_DEBUG")) {
-#if ! DISABLE_GC_DEBUG
-        Interp_flags_SET(interp, PARROT_GC_DEBUG_FLAG);
-#else
-        fprintf(stderr, "PARROT_GC_DEBUG is set but the binary was compiled "
-                "with DISABLE_GC_DEBUG.\n");
-#endif
-    }
-
-    /* Set up the memory allocation system */
-    mem_setup_allocator(interp, (void*)&stacktop);
-    Parrot_block_GC_mark(interp);
-    Parrot_block_GC_sweep(interp);
-
-    /*
-     * Set up the string subsystem
-     * This also generates the constant string tables
-     */
-    Parrot_str_init(interp);
-
-    /* Set up the MMD struct */
-    interp->binop_mmd_funcs = NULL;
-
-    /* MMD cache for builtins. */
-    interp->op_mmd_cache = Parrot_mmd_cache_create(interp);
-
-    /* create caches structure */
-    init_object_cache(interp);
-
-    /* initialize classes - this needs mmd func table */
-    interp->HLL_info = NULL;
-    init_world_once(interp);
-
-    /* context data */
-    /* Initialize interpreter's flags */
-    PARROT_WARNINGS_off(interp, PARROT_WARNINGS_ALL_FLAG);
-
-    /* same with errors */
-    PARROT_ERRORS_off(interp, PARROT_ERRORS_ALL_FLAG);
-
-    /* undefined globals are errors by default */
-    PARROT_ERRORS_on(interp, PARROT_ERRORS_GLOBALS_FLAG);
-
-    /* param count mismatch is an error by default */
-    PARROT_ERRORS_on(interp, PARROT_ERRORS_PARAM_COUNT_FLAG);
-
-#if 0
-    /* TODO not yet - too many test failures */
-    PARROT_ERRORS_on(interp, PARROT_ERRORS_RESULT_COUNT_FLAG);
-#endif
-
-    /* allocate stack chunk cache */
-    stack_system_init(interp);
-
-    /* And a dynamic environment stack */
-    interp->dynamic_env = new_stack(interp, "DynamicEnv");
-
-    /* clear context introspection vars */
-    CONTEXT(interp)->current_sub    = NULL;
-    CONTEXT(interp)->current_cont   = NULL;
-    CONTEXT(interp)->current_object = NULL;
-
-    /* Load the core op func and info tables */
-    interp->op_lib          = PARROT_CORE_OPLIB_INIT(1);
-    interp->op_count        = interp->op_lib->op_count;
-    interp->op_func_table   = interp->op_lib->op_func_table;
-    interp->op_info_table   = interp->op_lib->op_info_table;
-    interp->all_op_libs     = NULL;
-    interp->evc_func_table  = NULL;
-    interp->save_func_table = NULL;
-    interp->code            = NULL;
-    interp->profile         = NULL;
-
-    /* create the root set registry */
-    interp->gc_registry     = pmc_new(interp, enum_class_AddrRegistry);
-
-    /* create exceptions list */
-    interp->current_runloop_id    = 0;
-    interp->current_runloop_level = 0;
-
-    /* register assembler/compilers */
-    setup_default_compreg(interp);
-
-    /* setup stdio PMCs */
-    Parrot_io_init(interp);
-
-    /* init IMCC compiler */
-    imcc_init(interp);
-
-    /* Done. Return and be done with it */
-
-    /* Okay, we've finished doing anything that might trigger GC.
-     * Actually, we could enable GC earlier, but here all setup is
-     * done
-     */
-    Parrot_unblock_GC_mark(interp);
-    Parrot_unblock_GC_sweep(interp);
-
-    /* all sys running, init the event and signal stuff
-     * the first or "master" interpreter is handling events and signals
-     */
-    interp->task_queue  = NULL;
-    interp->thread_data = NULL;
-
-    Parrot_cx_init_scheduler(interp);
-
-#ifdef ATEXIT_DESTROY
-    /*
-     * if this is not a threaded interpreter, push the interpreter
-     * destruction.
-     * Threaded interpreters are destructed when the thread ends
-     */
-    if (!Interp_flags_TEST(interp, PARROT_IS_THREAD))
-        Parrot_on_exit(interp, Parrot_really_destroy, NULL);
-#endif
-
-    return interp;
-}
-
-/*
-
-=item C<void Parrot_destroy(PARROT_INTERP)>
-
-Does nothing if C<ATEXIT_DESTROY> is defined. Otherwise calls
-C<Parrot_really_destroy()> with exit code 0.
-
-This function is not currently used.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_destroy(PARROT_INTERP)
-{
-    ASSERT_ARGS(Parrot_destroy)
-#ifdef ATEXIT_DESTROY
-    UNUSED(interp);
-#else
-    Parrot_really_destroy(interp, 0);
-#endif
-}
-
-/*
-
-=item C<void Parrot_really_destroy(PARROT_INTERP, int exit_code, void *arg)>
-
-Waits for any threads to complete, then frees all allocated memory, and
-closes any open file handles, etc.
-
-Note that C<exit_code> is ignored.
-
-=cut
-
-*/
-
-void
-Parrot_really_destroy(PARROT_INTERP, SHIM(int exit_code), SHIM(void *arg))
-{
-    ASSERT_ARGS(Parrot_really_destroy)
-    /* wait for threads to complete if needed; terminate the event loop */
-    if (!interp->parent_interpreter) {
-        Parrot_cx_runloop_end(interp);
-        pt_join_threads(interp);
-    }
-
-    /* if something needs destruction (e.g. closing PIOs)
-     * we must destroy it now:
-     *
-     * Be sure that an async collector hasn't live bits set now, so
-     * trigger a finish run
-     *
-     * Need to turn off GC blocking, else things stay alive and IO
-     * handles aren't closed
-     */
-    interp->arena_base->gc_mark_block_level  = 0;
-    interp->arena_base->gc_sweep_block_level = 0;
-
-    if (Interp_trace_TEST(interp, ~0)) {
-        Parrot_io_eprintf(interp, "FileHandle objects (like stdout and stderr)"
-            "are about to be closed, so clearing trace flags.\n");
-        Interp_trace_CLEAR(interp, ~0);
-    }
-
-    /* Destroys all PMCs, even constants and the FileHandle objects for
-     * std{in, out, err}, so don't be verbose about GC'ing. */
-    if (interp->thread_data)
-        interp->thread_data->state |= THREAD_STATE_SUSPENDED_GC;
-
-    Parrot_do_gc_run(interp, GC_finish_FLAG);
-
-    /*
-     * that doesn't get rid of constant PMCs like these in vtable->data
-     * so if such a PMC needs destroying, we get a memory leak, like for
-     * the SharedRef PMC
-     * TODO sweep constants too or special treatment - depends on how
-     *      many constant PMCs we'll create
-     */
-
-    /* destroy IMCC compiler */
-    imcc_destroy(interp);
-
-    /* Now the PIOData gets also cleared */
-    Parrot_io_finish(interp);
-
-    /*
-     * now all objects that need timely destruction should be finalized
-     * so terminate the event loop
-     */
- /*   if (!interp->parent_interpreter) {
-        PIO_internal_shutdown(interp);
-        Parrot_kill_event_loop(interp);
-    }
-  */
-
-    /* we destroy all child interpreters and the last one too,
-     * if the --leak-test commandline was given
-     */
-    if (! (interp->parent_interpreter ||
-                Interp_flags_TEST(interp, PARROT_DESTROY_FLAG)))
-        return;
-
-    if (interp->parent_interpreter
-    &&  interp->thread_data
-    && (interp->thread_data->state & THREAD_STATE_JOINED)) {
-        Parrot_merge_header_pools(interp->parent_interpreter, interp);
-        Parrot_merge_memory_pools(interp->parent_interpreter, interp);
-    }
-
-    if (interp->arena_base->finalize_gc_system)
-        interp->arena_base->finalize_gc_system(interp);
-
-    /* MMD cache */
-    Parrot_mmd_cache_destroy(interp, interp->op_mmd_cache);
-
-    /* copies of constant tables */
-    Parrot_destroy_constants(interp);
-
-    /* buffer headers, PMCs */
-    Parrot_destroy_header_pools(interp);
-
-    /* memory pools in resources */
-    Parrot_destroy_memory_pools(interp);
-
-    /* mem subsystem is dead now */
-    mem_sys_free(interp->arena_base);
-    interp->arena_base = NULL;
-
-    /* cache structure */
-    destroy_object_cache(interp);
-
-    /* packfile */
-    if (interp->initial_pf)
-        PackFile_destroy(interp, interp->initial_pf);
-
-    if (interp->profile) {
-        mem_sys_free(interp->profile->data);
-        interp->profile->data = NULL;
-        mem_sys_free(interp->profile);
-        interp->profile = NULL;
-    }
-
-    /* deinit op_lib */
-    (void) PARROT_CORE_OPLIB_INIT(0);
-
-    stack_destroy(interp->dynamic_env);
-
-    destroy_context(interp);
-    destroy_runloop_jump_points(interp);
-
-    if (interp->evc_func_table) {
-        mem_sys_free(interp->evc_func_table);
-        interp->evc_func_table = NULL;
-    }
-
-    /* strings, charsets, encodings - only once */
-    Parrot_str_finish(interp);
-
-    if (!interp->parent_interpreter) {
-        if (interp->thread_data)
-            mem_sys_free(interp->thread_data);
-
-        /* free vtables */
-        parrot_free_vtables(interp);
-
-        /* dynop libs */
-        if (interp->n_libs > 0) {
-            mem_sys_free(interp->op_info_table);
-            mem_sys_free(interp->op_func_table);
-        }
-
-        MUTEX_DESTROY(interpreter_array_mutex);
-        mem_sys_free(interp);
-
-        /* finally free other globals */
-        mem_sys_free(interpreter_array);
-        interpreter_array = NULL;
-    }
-
-    else {
-        /* don't free a thread interpreter, if it isn't joined yet */
-        if (!interp->thread_data
-        || (interp->thread_data
-        && (interp->thread_data->state & THREAD_STATE_JOINED))) {
-            if (interp->thread_data) {
-                mem_sys_free(interp->thread_data);
-                interp->thread_data = NULL;
-            }
-
-            mem_sys_free(interp);
-        }
-    }
-}
-
-
-/*
-
-=back
-
-=head1 SEE ALSO
-
-L<include/parrot/interpreter.h>, L<src/interp/interpreter.c>.
-
-=cut
-
-*/
-
-/*
- * Local variables:
- *   c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */

Deleted: branches/headercleanup/src/inter_misc.c
==============================================================================
--- branches/headercleanup/src/inter_misc.c	Tue Apr  7 21:01:10 2009	(r37949)
+++ /dev/null	00:00:00 1970	(deleted)
@@ -1,496 +0,0 @@
-/*
-Copyright (C) 2001-2008, Parrot Foundation.
-$Id$
-
-=head1 NAME
-
-src/inter_misc.c - Parrot Interpreter miscellaneous functions
-
-=head1 DESCRIPTION
-
-NCI function setup, compiler registration, C<interpinfo>, and C<sysinfo> opcodes.
-
-=head2 Functions
-
-=over 4
-
-=cut
-
-*/
-
-
-#include "parrot/parrot.h"
-#include "inter_misc.str"
-#include "../compilers/imcc/imc.h"
-
-#include "parrot/has_header.h"
-
-#ifdef PARROT_HAS_HEADER_SYSUTSNAME
-#  include <sys/utsname.h>
-#endif
-
-/* HEADERIZER HFILE: include/parrot/interpreter.h */
-
-/*
-
-=item C<void register_nci_method(PARROT_INTERP, const int type, void *func,
-const char *name, const char *proto)>
-
-Create an entry in the C<nci_method_table> for the given NCI method of PMC
-class C<type>.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-register_nci_method(PARROT_INTERP, const int type, ARGIN(void *func),
-                    ARGIN(const char *name), ARGIN(const char *proto))
-{
-    ASSERT_ARGS(register_nci_method)
-    PMC    * const method      = pmc_new(interp, enum_class_NCI);
-    STRING * const method_name = string_make(interp, name, strlen(name),
-        NULL, PObj_constant_FLAG|PObj_external_FLAG);
-
-    /* create call func */
-    VTABLE_set_pointer_keyed_str(interp, method,
-            string_make(interp, proto, strlen(proto), NULL,
-                PObj_constant_FLAG|PObj_external_FLAG),
-            func);
-
-    /* insert it into namespace */
-    VTABLE_set_pmc_keyed_str(interp, interp->vtables[type]->_namespace,
-            method_name, method);
-}
-
-/*
-
-=item C<void register_raw_nci_method_in_ns(PARROT_INTERP, const int type, void
-*func, const char *name)>
-
-Create an entry in the C<nci_method_table> for the given raw NCI method
-of PMC class C<type>.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-register_raw_nci_method_in_ns(PARROT_INTERP, const int type, ARGIN(void *func),
-        ARGIN(const char *name))
-{
-    ASSERT_ARGS(register_raw_nci_method_in_ns)
-    PMC    * const method      = pmc_new(interp, enum_class_NCI);
-    STRING * const method_name = string_make(interp, name, strlen(name),
-        NULL, PObj_constant_FLAG|PObj_external_FLAG);
-
-    /* setup call func */
-    VTABLE_set_pointer(interp, method, func);
-
-    /* insert it into namespace */
-    VTABLE_set_pmc_keyed_str(interp, interp->vtables[type]->_namespace,
-            method_name, method);
-}
-
-/*
-
-=item C<void Parrot_mark_method_writes(PARROT_INTERP, int type, const char
-*name)>
-
-Mark the method C<name> on PMC type C<type> as one that modifies the PMC.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_mark_method_writes(PARROT_INTERP, int type, ARGIN(const char *name))
-{
-    ASSERT_ARGS(Parrot_mark_method_writes)
-    STRING *const str_name = Parrot_str_new_constant(interp, name);
-    PMC    *const pmc_true = pmc_new(interp, enum_class_Integer);
-    PMC    *const method   = VTABLE_get_pmc_keyed_str(
-        interp, interp->vtables[type]->_namespace, str_name);
-    VTABLE_set_integer_native(interp, pmc_true, 1);
-    VTABLE_setprop(interp, method, CONST_STRING(interp, "write"), pmc_true);
-}
-
-/*
-
-=item C<void Parrot_compreg(PARROT_INTERP, STRING *type, Parrot_compiler_func_t
-func)>
-
-Register a parser/compiler function.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-void
-Parrot_compreg(PARROT_INTERP, ARGIN(STRING *type),
-                    NOTNULL(Parrot_compiler_func_t func))
-{
-    ASSERT_ARGS(Parrot_compreg)
-    PMC* const iglobals = interp->iglobals;
-    PMC        *nci     = pmc_new(interp, enum_class_NCI);
-    STRING     *sc      = CONST_STRING(interp, "PJt");
-    PMC        *hash    = VTABLE_get_pmc_keyed_int(interp, interp->iglobals,
-                              IGLOBALS_COMPREG_HASH);
-
-    if (!hash) {
-        hash = pmc_new_noinit(interp, enum_class_Hash);
-        VTABLE_init(interp, hash);
-        VTABLE_set_pmc_keyed_int(interp, iglobals,
-                (INTVAL)IGLOBALS_COMPREG_HASH, hash);
-    }
-
-    VTABLE_set_pmc_keyed_str(interp, hash, type, nci);
-
-    /* build native call interface for the C sub in "func" */
-    VTABLE_set_pointer_keyed_str(interp, nci, sc, (void*)func);
-}
-
-/*
-
-=item C<void * Parrot_compile_file(PARROT_INTERP, const char *fullname, STRING
-**error)>
-
-Compile code file.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_CANNOT_RETURN_NULL
-void *
-Parrot_compile_file(PARROT_INTERP, ARGIN(const char *fullname), ARGOUT(STRING **error))
-{
-    ASSERT_ARGS(Parrot_compile_file)
-    return IMCC_compile_file_s(interp, fullname, error);
-}
-
-#ifdef GC_IS_MALLOC
-#  if 0
-struct mallinfo {
-    int arena;                  /* non-mmapped space allocated from system */
-    int ordblks;                /* number of free chunks */
-    int smblks;                 /* number of fastbin blocks */
-    int hblks;                  /* number of mmapped regions */
-    int hblkhd;                 /* space in mmapped regions */
-    int usmblks;                /* maximum total allocated space */
-    int fsmblks;                /* space available in freed fastbin blocks */
-    int uordblks;               /* total allocated space */
-    int fordblks;               /* total free space */
-    int keepcost;               /* top-most, releasable (via malloc_trim)
-                                 * space */
-};
-#  endif
-extern struct mallinfo mallinfo(void);
-#endif /* GC_IS_MALLOC */
-
-/*
-
-=item C<INTVAL interpinfo(PARROT_INTERP, INTVAL what)>
-
-C<what> specifies the type of information you want about the
-interpreter.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-INTVAL
-interpinfo(PARROT_INTERP, INTVAL what)
-{
-    ASSERT_ARGS(interpinfo)
-    INTVAL ret = 0;
-    int j;
-    Arenas *arena_base = interp->arena_base;
-
-    switch (what) {
-        case TOTAL_MEM_ALLOC:
-#ifdef GC_IS_MALLOC
-#  if 0
-            interp->memory_allocated = mallinfo().uordblks;
-#  endif
-#endif
-            ret = arena_base->memory_allocated;
-            break;
-        case GC_MARK_RUNS:
-            ret = arena_base->gc_mark_runs;
-            break;
-        case GC_LAZY_MARK_RUNS:
-            ret = arena_base->gc_lazy_mark_runs;
-            break;
-        case GC_COLLECT_RUNS:
-            ret = arena_base->gc_collect_runs;
-            break;
-        case ACTIVE_PMCS:
-            ret = arena_base->pmc_pool->total_objects -
-                arena_base->pmc_pool->num_free_objects;
-            break;
-        case ACTIVE_BUFFERS:
-            ret = 0;
-            for (j = 0; j < (INTVAL)arena_base->num_sized; j++) {
-                Small_Object_Pool * const header_pool =
-                    arena_base->sized_header_pools[j];
-                if (header_pool)
-                    ret += header_pool->total_objects -
-                        header_pool->num_free_objects;
-            }
-            break;
-        case TOTAL_PMCS:
-            ret = arena_base->pmc_pool->total_objects;
-            break;
-        case TOTAL_BUFFERS:
-            ret = 0;
-            for (j = 0; j < (INTVAL)arena_base->num_sized; j++) {
-                Small_Object_Pool * const header_pool =
-                    arena_base->sized_header_pools[j];
-                if (header_pool)
-                    ret += header_pool->total_objects;
-            }
-            break;
-        case HEADER_ALLOCS_SINCE_COLLECT:
-            ret = arena_base->header_allocs_since_last_collect;
-            break;
-        case MEM_ALLOCS_SINCE_COLLECT:
-            ret = arena_base->mem_allocs_since_last_collect;
-            break;
-        case TOTAL_COPIED:
-            ret = arena_base->memory_collected;
-            break;
-        case IMPATIENT_PMCS:
-            ret = arena_base->num_early_gc_PMCs;
-            break;
-        case EXTENDED_PMCS:
-            ret = arena_base->num_extended_PMCs;
-            break;
-        case CURRENT_RUNCORE:
-            ret = interp->run_core;
-            break;
-        default:        /* or a warning only? */
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
-                "illegal argument in interpinfo");
-    }
-    return ret;
-}
-
-/*
-
-=item C<PMC* interpinfo_p(PARROT_INTERP, INTVAL what)>
-
-C<what> specifies the type of information you want about the
-interpreter.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CAN_RETURN_NULL
-PMC*
-interpinfo_p(PARROT_INTERP, INTVAL what)
-{
-    ASSERT_ARGS(interpinfo_p)
-    switch (what) {
-        case CURRENT_SUB:
-            return CONTEXT(interp)->current_sub;
-        case CURRENT_CONT:
-            {
-            PMC * const cont = CONTEXT(interp)->current_cont;
-            if (!PMC_IS_NULL(cont) && cont->vtable->base_type ==
-                    enum_class_RetContinuation)
-                return VTABLE_clone(interp, cont);
-            return cont;
-            }
-        case CURRENT_OBJECT:
-            return CONTEXT(interp)->current_object;
-        case CURRENT_LEXPAD:
-            return CONTEXT(interp)->lex_pad;
-        default:        /* or a warning only? */
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
-                "illegal argument in interpinfo");
-    }
-}
-
-/*
-
-=item C<STRING* interpinfo_s(PARROT_INTERP, INTVAL what)>
-
-Takes an interpreter name and an information type as arguments.
-Returns corresponding information strings about the interpreter:
-the full pathname, executable name, or the file stem,
-(or throws an error exception, if the type is not recognised).
-Valid types are EXECUTABLE_FULLNAME, EXECUTABLE_BASENAME,
-and RUNTIME_PREFIX.
-
-=cut
-
-*/
-
-PARROT_EXPORT
-PARROT_WARN_UNUSED_RESULT
-PARROT_CANNOT_RETURN_NULL
-STRING*
-interpinfo_s(PARROT_INTERP, INTVAL what)
-{
-    ASSERT_ARGS(interpinfo_s)
-    switch (what) {
-        case EXECUTABLE_FULLNAME:
-        {
-            PMC *exe_name = VTABLE_get_pmc_keyed_int(interp, interp->iglobals,
-                    IGLOBALS_EXECUTABLE);
-            if (PMC_IS_NULL(exe_name))
-                return string_from_literal(interp, "");
-            return VTABLE_get_string(interp, exe_name);
-        }
-        case EXECUTABLE_BASENAME:
-        {
-            STRING *basename;
-            PMC    *exe_name = VTABLE_get_pmc_keyed_int(interp,
-                                interp->iglobals, IGLOBALS_EXECUTABLE);
-
-            if (PMC_IS_NULL(exe_name))
-                return string_from_literal(interp, "");
-
-            else {
-                /* Need to strip back to what follows the final / or \. */
-                STRING *fullname   = VTABLE_get_string(interp, exe_name);
-                char   *fullname_c = Parrot_str_to_cstring(interp, fullname);
-                int     pos        = strlen(fullname_c) - 1;
-
-                while (pos              >  0
-                &&     fullname_c[pos] != '/'
-                &&     fullname_c[pos] != '\\')
-                    pos--;
-
-                if (pos > 0)
-                    pos++;
-
-                basename = Parrot_str_new(interp, fullname_c + pos, 0);
-                mem_sys_free(fullname_c);
-
-                return basename;
-            }
-        }
-        case RUNTIME_PREFIX:
-            return Parrot_get_runtime_path(interp);
-        default:
-            Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_UNIMPLEMENTED,
-                "illegal argument in interpinfo");
-    }
-}
-
-/*
-
-=item C<INTVAL sysinfo_i(PARROT_INTERP, INTVAL info_wanted)>
-
-Returns the system info.
-
-C<info_wanted> is one of:
-
-    PARROT_INTSIZE
-    PARROT_FLOATSIZE
-    PARROT_POINTERSIZE
-    PARROT_INTMAX
-    PARROT_INTMIN
-
-In unknown info is requested then -1 is returned.
-
-=cut
-
-*/
-
-PARROT_WARN_UNUSED_RESULT
-INTVAL
-sysinfo_i(SHIM_INTERP, INTVAL info_wanted)
-{
-    ASSERT_ARGS(sysinfo_i)
-    switch (info_wanted) {
-        case PARROT_INTSIZE:
-            return sizeof (INTVAL);
-        case PARROT_FLOATSIZE:
-            return sizeof (FLOATVAL);
-        case PARROT_POINTERSIZE:
-            return sizeof (void *);
-        case PARROT_INTMIN:
-            return PARROT_INTVAL_MIN;
-        case PARROT_INTMAX:
-            return PARROT_INTVAL_MAX;
-        default:
-            return -1;
-    }
-}
-
-/*
-
-=item C<STRING * sysinfo_s(PARROT_INTERP, INTVAL info_wanted)>
-
-Returns the system info string.
-
-C<info_wanted> is one of:
-
-    PARROT_OS
-    PARROT_OS_VERSION
-    PARROT_OS_VERSION_NUMBER
-    CPU_ARCH
-    CPU_TYPE
-
-If unknown info is requested then an empty string is returned.
-
-=cut
-
-*/
-
-PARROT_CANNOT_RETURN_NULL
-PARROT_WARN_UNUSED_RESULT
-STRING *
-sysinfo_s(PARROT_INTERP, INTVAL info_wanted)
-{
-    ASSERT_ARGS(sysinfo_s)
-    switch (info_wanted) {
-        case PARROT_OS:
-            return Parrot_str_new_constant(interp, BUILD_OS_NAME);
-        case PARROT_OS_VERSION:
-#ifdef PARROT_HAS_HEADER_SYSUTSNAME
-            {
-                struct utsname info;
-                if (uname(&info) == 0) {
-                    return string_make(interp, info.version, strlen(info.version), "ascii", 0);
-                }
-            }
-#endif
-            break;
-        case PARROT_OS_VERSION_NUMBER:
-#ifdef PARROT_HAS_HEADER_SYSUTSNAME
-            {
-                struct utsname info;
-                if (uname(&info) == 0) {
-                    return string_make(interp, info.release, strlen(info.version), "ascii", 0);
-                }
-            }
-#endif
-            break;
-        case CPU_ARCH:
-            return string_make(interp, PARROT_CPU_ARCH, sizeof (PARROT_CPU_ARCH) - 1, "ascii", 0);
-        case CPU_TYPE:
-        default:
-            break;
-    }
-    return string_from_literal(interp, "");
-}
-
-/*
- * Local variables:
- *   c-file-style: "parrot"
- * End:
- * vim: expandtab shiftwidth=4:
- */

Copied and modified: branches/headercleanup/src/interp/inter_cb.c (from r37947, branches/headercleanup/src/inter_cb.c)
==============================================================================
--- branches/headercleanup/src/inter_cb.c	Tue Apr  7 18:04:21 2009	(r37947, copy source)
+++ branches/headercleanup/src/interp/inter_cb.c	Tue Apr  7 21:01:10 2009	(r37950)
@@ -1,10 +1,10 @@
 /*
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2009, Parrot Foundation.
 $Id$
 
 =head1 NAME
 
-src/inter_cb.c - Parrot Interpreter - Callback Function Handling
+src/interp/inter_cb.c - Parrot Interpreter - Callback Function Handling
 
 =head1 DESCRIPTION
 

Copied and modified: branches/headercleanup/src/interp/inter_create.c (from r37949, branches/headercleanup/src/inter_create.c)
==============================================================================
--- branches/headercleanup/src/inter_create.c	Tue Apr  7 18:38:30 2009	(r37949, copy source)
+++ branches/headercleanup/src/interp/inter_create.c	Tue Apr  7 21:01:10 2009	(r37950)
@@ -4,7 +4,7 @@
 
 =head1 NAME
 
-src/inter_create.c - Parrot Interpreter Creation and Destruction
+src/interp/inter_create.c - Parrot Interpreter Creation and Destruction
 
 =head1 DESCRIPTION
 

Copied and modified: branches/headercleanup/src/interp/inter_misc.c (from r37947, branches/headercleanup/src/inter_misc.c)
==============================================================================
--- branches/headercleanup/src/inter_misc.c	Tue Apr  7 18:04:21 2009	(r37947, copy source)
+++ branches/headercleanup/src/interp/inter_misc.c	Tue Apr  7 21:01:10 2009	(r37950)
@@ -1,10 +1,10 @@
 /*
-Copyright (C) 2001-2008, Parrot Foundation.
+Copyright (C) 2001-2009, Parrot Foundation.
 $Id$
 
 =head1 NAME
 
-src/inter_misc.c - Parrot Interpreter miscellaneous functions
+src/interp/inter_misc.c - Parrot Interpreter miscellaneous functions
 
 =head1 DESCRIPTION
 
@@ -151,7 +151,7 @@
     VTABLE_set_pmc_keyed_str(interp, hash, type, nci);
 
     /* build native call interface for the C sub in "func" */
-    VTABLE_set_pointer_keyed_str(interp, nci, sc, (void*)func);
+    VTABLE_set_pointer_keyed_str(interp, nci, sc, (void *)func);
 }
 
 /*

Modified: branches/headercleanup/src/interp/interpreter.c
==============================================================================
--- branches/headercleanup/src/interp/interpreter.c	Tue Apr  7 18:38:30 2009	(r37949)
+++ branches/headercleanup/src/interp/interpreter.c	Tue Apr  7 21:01:10 2009	(r37950)
@@ -1378,8 +1378,8 @@
 
 =head1 SEE ALSO
 
-F<include/parrot/interpreter.h>, F<src/inter_cb.c>, F<src/inter_create.c>,
- F<src/inter_misc.c>, F<src/call/ops.c>.
+F<include/parrot/interpreter.h>, F<src/interp/inter_cb.c>,
+F<src/interp/inter_create.c>, F<src/interp/inter_misc.c>, F<src/call/ops.c>.
 
 =cut
 


More information about the parrot-commits mailing list