[Vm-dev] [commit][2883] CogVM source as per VMMaker.oscog-eem.656

commits at squeakvm.org commits at squeakvm.org
Tue Mar 25 00:48:48 UTC 2014


Revision: 2883
Author:   eliot
Date:     2014-03-24 17:48:45 -0700 (Mon, 24 Mar 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.656

Fix store check call from machine code which in Spur was showing that ClassReg
(%ecx, a caller-saved reg) was not being saved when calling ceStoreCheck:.
This /could/ be the cause of crashes in the clang build (or at least one major
cause).  It didn't show in the classic VM because the store check is simpler.

Provide __stringify[Num] even when NDEBUG=1 for manual hacking in of warnings.

Fix revertIfEssentiallyUnchanged for OSProcess plugins.

A few plugins have been regenerated with the new array literal index prefixes.

Spur:
Ugh, what a bug hunt.  Move the expungeDuplicateAndUnmarkedClasses: send from
markObjects to globalGarbageCollect where it belongs and hence prevent
allObjects and allInstancesOf from breaking the class table.

Rationalize all but one of the various sends of runLeakCheckerForFullGC:exclude-
UnmarkedNewSpaceObjs:classIndicesShouldBeValid: to runLeakCheckerForFullGC:

Streamline copyAndForward: and forward[Survivor]:to: and clients
of setFormatOf:to: & setClassIndexOf:to:.

Fix copyAndForward: to add tenured objects to weak and ephemeron lists if
required.  Because the weak and ephemeron lists are threaded through forwarding
corpses they can indeed refer to old objects, and just cuz a weak/ewphemeron
object is tenured doesn't mean it doesn't need to be scanned post-scavenge.

Relax the leak-check in Spur fullGC to allow invalid class indices at any point
except after fullGC, at which point the classTable should have been purged.

Modified Paths:
--------------
    branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c
    branches/Cog/nscogsrc/plugins/ZipPlugin/ZipPlugin.c
    branches/Cog/nscogsrc/vm/cogit.c
    branches/Cog/nscogsrc/vm/cogit.h
    branches/Cog/nscogsrc/vm/cogmethod.h
    branches/Cog/nscogsrc/vm/cointerp.c
    branches/Cog/nscogsrc/vm/cointerp.h
    branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
    branches/Cog/nscogsrc/vm/interp.h
    branches/Cog/nscogsrc/vm/vmCallback.h
    branches/Cog/nsspursrc/vm/cogit.c
    branches/Cog/nsspursrc/vm/cogit.h
    branches/Cog/nsspursrc/vm/cogmethod.h
    branches/Cog/nsspursrc/vm/cointerp.c
    branches/Cog/nsspursrc/vm/cointerp.h
    branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
    branches/Cog/nsspursrc/vm/interp.h
    branches/Cog/nsspursrc/vm/vmCallback.h
    branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
    branches/Cog/nsspurstacksrc/vm/interp.c
    branches/Cog/nsspurstacksrc/vm/interp.h
    branches/Cog/nsspurstacksrc/vm/vmCallback.h
    branches/Cog/platforms/Cross/vm/sqAssert.h
    branches/Cog/scripts/revertIfEssentiallyUnchanged
    branches/Cog/spursrc/vm/cogit.c
    branches/Cog/spursrc/vm/cogit.h
    branches/Cog/spursrc/vm/cogmethod.h
    branches/Cog/spursrc/vm/cointerp.c
    branches/Cog/spursrc/vm/cointerp.h
    branches/Cog/spursrc/vm/gcc3x-cointerp.c
    branches/Cog/spursrc/vm/interp.h
    branches/Cog/spursrc/vm/vmCallback.h
    branches/Cog/spurstacksrc/vm/gcc3x-interp.c
    branches/Cog/spurstacksrc/vm/interp.c
    branches/Cog/spurstacksrc/vm/interp.h
    branches/Cog/spurstacksrc/vm/vmCallback.h
    branches/Cog/src/plugins/BitBltPlugin/BitBltPlugin.c
    branches/Cog/src/plugins/BochsIA32Plugin/BochsIA32Plugin.c
    branches/Cog/src/plugins/QuicktimePlugin/QuicktimePlugin.c
    branches/Cog/src/plugins/SqueakFFIPrims/SqueakFFIPrims.c
    branches/Cog/src/plugins/ZipPlugin/ZipPlugin.c
    branches/Cog/src/vm/cogit.c
    branches/Cog/src/vm/cogit.h
    branches/Cog/src/vm/cogmethod.h
    branches/Cog/src/vm/cointerp.c
    branches/Cog/src/vm/cointerp.h
    branches/Cog/src/vm/cointerpmt.c
    branches/Cog/src/vm/cointerpmt.h
    branches/Cog/src/vm/gcc3x-cointerp.c
    branches/Cog/src/vm/gcc3x-cointerpmt.c
    branches/Cog/src/vm/interp.h
    branches/Cog/src/vm/vmCallback.h
    branches/Cog/stacksrc/vm/gcc3x-interp.c
    branches/Cog/stacksrc/vm/interp.c
    branches/Cog/stacksrc/vm/interp.h
    branches/Cog/stacksrc/vm/vmCallback.h

Property Changed:
----------------
    branches/Cog/platforms/Cross/vm/sqSCCSVersion.h

Modified: branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c
===================================================================
--- branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c	2014-03-20 17:01:24 UTC (rev 2882)
+++ branches/Cog/nscogsrc/plugins/BitBltPlugin/BitBltPlugin.c	2014-03-25 00:48:45 UTC (rev 2883)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.580 uuid: 751b08d4-d92e-440a-b3f6-cb2c76f52514
+	SmartSyntaxPluginCodeGenerator VMMaker.oscog-eem.655 uuid: d6c00552-e909-49e0-a838-d6c3225dedda
    from
-	BitBltSimulation VMMaker.oscog-eem.580 uuid: 751b08d4-d92e-440a-b3f6-cb2c76f52514
+	BitBltSimulation VMMaker.oscog-eem.655 uuid: d6c00552-e909-49e0-a838-d6c3225dedda
  */
-static char __buildInfo[] = "BitBltSimulation VMMaker.oscog-eem.580 uuid: 751b08d4-d92e-440a-b3f6-cb2c76f52514 " __DATE__ ;
+static char __buildInfo[] = "BitBltSimulation VMMaker.oscog-eem.655 uuid: d6c00552-e909-49e0-a838-d6c3225dedda " __DATE__ ;
 
 
 
@@ -344,9 +344,9 @@
 };
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"BitBltPlugin VMMaker.oscog-eem.580 (i)"
+	"BitBltPlugin VMMaker.oscog-eem.655 (i)"
 #else
-	"BitBltPlugin VMMaker.oscog-eem.580 (e)"
+	"BitBltPlugin VMMaker.oscog-eem.655 (e)"
 #endif
 ;
 static sqInt noHalftone;
@@ -3476,6 +3476,7 @@
 		else {
 			cmFlags = cmFlags | ColorMapFixedPart;
 		}
+		null;
 		ok = 1;
 	l4:	/* end loadColorMap */;
 		if (!ok) {
@@ -3744,6 +3745,7 @@
 	else {
 		cmFlags = cmFlags | ColorMapFixedPart;
 	}
+	null;
 	return 1;
 }
 
@@ -7112,6 +7114,7 @@
 			}
 		}
 		hasSurfaceLock = 0;
+		null;
 	}
 }
 

Modified: branches/Cog/nscogsrc/plugins/ZipPlugin/ZipPlugin.c
===================================================================
--- branches/Cog/nscogsrc/plugins/ZipPlugin/ZipPlugin.c	2014-03-20 17:01:24 UTC (rev 2882)
+++ branches/Cog/nscogsrc/plugins/ZipPlugin/ZipPlugin.c	2014-03-25 00:48:45 UTC (rev 2883)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	VMPluginCodeGenerator VMMaker.oscog-eem.597 uuid: c9a71dd4-c394-4a8f-aa4d-a6d4dc3ff220
+	VMPluginCodeGenerator VMMaker.oscog-eem.655 uuid: d6c00552-e909-49e0-a838-d6c3225dedda
    from
-	DeflatePlugin VMMaker.oscog-eem.597 uuid: c9a71dd4-c394-4a8f-aa4d-a6d4dc3ff220
+	DeflatePlugin VMMaker.oscog-eem.655 uuid: d6c00552-e909-49e0-a838-d6c3225dedda
  */
-static char __buildInfo[] = "DeflatePlugin VMMaker.oscog-eem.597 uuid: c9a71dd4-c394-4a8f-aa4d-a6d4dc3ff220 " __DATE__ ;
+static char __buildInfo[] = "DeflatePlugin VMMaker.oscog-eem.655 uuid: d6c00552-e909-49e0-a838-d6c3225dedda " __DATE__ ;
 
 
 
@@ -134,19 +134,18 @@
 struct VirtualMachine* interpreterProxy;
 static const char *moduleName =
 #ifdef SQUEAK_BUILTIN_PLUGIN
-	"ZipPlugin VMMaker.oscog-eem.597 (i)"
+	"ZipPlugin VMMaker.oscog-eem.655 (i)"
 #else
-	"ZipPlugin VMMaker.oscog-eem.597 (e)"
+	"ZipPlugin VMMaker.oscog-eem.655 (e)"
 #endif
 ;
 static unsigned int zipBaseDistance[] = {
-		0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48,
-		64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 6144, 8192,
-		12288, 16384, 24576
+/*0*/	0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768,
+/*20*/	1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576
 	};
 static unsigned int zipBaseLength[] = {
-		0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16,
-		20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 0
+/*0*/	0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56,
+/*20*/	64, 80, 96, 112, 128, 160, 192, 224, 0
 	};
 static sqInt zipBitBuf;
 static sqInt zipBitPos;
@@ -155,85 +154,87 @@
 static unsigned char* zipCollection;
 static sqInt zipCollectionSize;
 static unsigned int zipCrcTable[] = {
-		0, 1996959894, 3993919788UL, 2567524794UL, 124634137,
-		1886057615, 3915621685UL, 2657392035UL, 249268274, 2044508324, 3772115230UL, 2547177864UL,
-		162941995, 2125561021, 3887607047UL, 2428444049UL, 498536548, 1789927666, 4089016648UL,
-		2227061214UL, 450548861, 1843258603, 4107580753UL, 2211677639UL, 325883990, 1684777152,
-		4251122042UL, 2321926636UL, 335633487, 1661365465, 4195302755UL, 2366115317UL,
-		997073096, 1281953886, 3579855332UL, 2724688242UL, 1006888145, 1258607687, 3524101629UL,
-		2768942443UL, 901097722, 1119000684, 3686517206UL, 2898065728UL, 853044451, 1172266101,
-		3705015759UL, 2882616665UL, 651767980, 1373503546, 3369554304UL, 3218104598UL,
-		565507253, 1454621731, 3485111705UL, 3099436303UL, 671266974, 1594198024, 3322730930UL,
-		2970347812UL, 795835527, 1483230225, 3244367275UL, 3060149565UL, 1994146192, 31158534,
-		2563907772UL, 4023717930UL, 1907459465, 112637215, 2680153253UL, 3904427059UL,
-		2013776290, 251722036, 2517215374UL, 3775830040UL, 2137656763, 141376813, 2439277719UL,
-		3865271297UL, 1802195444, 476864866, 2238001368UL, 4066508878UL, 1812370925, 453092731,
-		2181625025UL, 4111451223UL, 1706088902, 314042704, 2344532202UL, 4240017532UL,
-		1658658271, 366619977, 2362670323UL, 4224994405UL, 1303535960, 984961486, 2747007092UL,
-		3569037538UL, 1256170817, 1037604311, 2765210733UL, 3554079995UL, 1131014506,
-		879679996, 2909243462UL, 3663771856UL, 1141124467, 855842277, 2852801631UL, 3708648649UL,
-		1342533948, 654459306, 3188396048UL, 3373015174UL, 1466479909, 544179635, 3110523913UL,
-		3462522015UL, 1591671054, 702138776, 2966460450UL, 3352799412UL, 1504918807, 783551873,
-		3082640443UL, 3233442989UL, 3988292384UL, 2596254646UL, 62317068, 1957810842,
-		3939845945UL, 2647816111UL, 81470997, 1943803523, 3814918930UL, 2489596804UL,
-		225274430, 2053790376, 3826175755UL, 2466906013UL, 167816743, 2097651377, 4027552580UL,
-		2265490386UL, 503444072, 1762050814, 4150417245UL, 2154129355UL, 426522225, 1852507879,
-		4275313526UL, 2312317920UL, 282753626, 1742555852, 4189708143UL, 2394877945UL,
-		397917763, 1622183637, 3604390888UL, 2714866558UL, 953729732, 1340076626, 3518719985UL,
-		2797360999UL, 1068828381, 1219638859, 3624741850UL, 2936675148UL, 906185462, 1090812512,
-		3747672003UL, 2825379669UL, 829329135, 1181335161, 3412177804UL, 3160834842UL,
-		628085408, 1382605366, 3423369109UL, 3138078467UL, 570562233, 1426400815, 3317316542UL,
-		2998733608UL, 733239954, 1555261956, 3268935591UL, 3050360625UL, 752459403, 1541320221,
-		2607071920UL, 3965973030UL, 1969922972, 40735498, 2617837225UL, 3943577151UL,
-		1913087877, 83908371, 2512341634UL, 3803740692UL, 2075208622, 213261112, 2463272603UL,
-		3855990285UL, 2094854071, 198958881, 2262029012UL, 4057260610UL, 1759359992, 534414190,
-		2176718541UL, 4139329115UL, 1873836001, 414664567, 2282248934UL, 4279200368UL,
-		1711684554, 285281116, 2405801727UL, 4167216745UL, 1634467795, 376229701, 2685067896UL,
-		3608007406UL, 1308918612, 956543938, 2808555105UL, 3495958263UL, 1231636301, 1047427035,
-		2932959818UL, 3654703836UL, 1088359270, 936918000, 2847714899UL, 3736837829UL,
-		1202900863, 817233897, 3183342108UL, 3401237130UL, 1404277552, 615818150, 3134207493UL,
-		3453421203UL, 1423857449, 601450431, 3009837614UL, 3294710456UL, 1567103746, 711928724,
-		3020668471UL, 3272380065UL, 1510334235, 755167117
+/*0*/	0, 1996959894, 3993919788UL, 2567524794UL, 124634137, 1886057615, 3915621685UL,
+/*7*/	2657392035UL, 249268274, 2044508324, 3772115230UL, 2547177864UL, 162941995, 2125561021,
+/*14*/	3887607047UL, 2428444049UL, 498536548, 1789927666, 4089016648UL, 2227061214UL,
+/*20*/	450548861, 1843258603, 4107580753UL, 2211677639UL, 325883990, 1684777152, 4251122042UL,
+/*27*/	2321926636UL, 335633487, 1661365465, 4195302755UL, 2366115317UL, 997073096, 1281953886,
+/*34*/	3579855332UL, 2724688242UL, 1006888145, 1258607687, 3524101629UL, 2768942443UL,
+/*40*/	901097722, 1119000684, 3686517206UL, 2898065728UL, 853044451, 1172266101, 3705015759UL,
+/*47*/	2882616665UL, 651767980, 1373503546, 3369554304UL, 3218104598UL, 565507253, 1454621731,
+/*54*/	3485111705UL, 3099436303UL, 671266974, 1594198024, 3322730930UL, 2970347812UL,
+/*60*/	795835527, 1483230225, 3244367275UL, 3060149565UL, 1994146192, 31158534, 2563907772UL,
+/*67*/	4023717930UL, 1907459465, 112637215, 2680153253UL, 3904427059UL, 2013776290,
+/*73*/	251722036, 2517215374UL, 3775830040UL, 2137656763, 141376813, 2439277719UL, 3865271297UL,
+/*80*/	1802195444, 476864866, 2238001368UL, 4066508878UL, 1812370925, 453092731, 2181625025UL,
+/*87*/	4111451223UL, 1706088902, 314042704, 2344532202UL, 4240017532UL, 1658658271,
+/*93*/	366619977, 2362670323UL, 4224994405UL, 1303535960, 984961486, 2747007092UL, 3569037538UL,
+/*100*/	1256170817, 1037604311, 2765210733UL, 3554079995UL, 1131014506, 879679996, 2909243462UL,
+/*107*/	3663771856UL, 1141124467, 855842277, 2852801631UL, 3708648649UL, 1342533948,
+/*113*/	654459306, 3188396048UL, 3373015174UL, 1466479909, 544179635, 3110523913UL, 3462522015UL,
+/*120*/	1591671054, 702138776, 2966460450UL, 3352799412UL, 1504918807, 783551873, 3082640443UL,
+/*127*/	3233442989UL, 3988292384UL, 2596254646UL, 62317068, 1957810842, 3939845945UL,
+/*133*/	2647816111UL, 81470997, 1943803523, 3814918930UL, 2489596804UL, 225274430, 2053790376,
+/*140*/	3826175755UL, 2466906013UL, 167816743, 2097651377, 4027552580UL, 2265490386UL,
+/*146*/	503444072, 1762050814, 4150417245UL, 2154129355UL, 426522225, 1852507879, 4275313526UL,
+/*153*/	2312317920UL, 282753626, 1742555852, 4189708143UL, 2394877945UL, 397917763, 1622183637,
+/*160*/	3604390888UL, 2714866558UL, 953729732, 1340076626, 3518719985UL, 2797360999UL,
+/*166*/	1068828381, 1219638859, 3624741850UL, 2936675148UL, 906185462, 1090812512, 3747672003UL,
+/*173*/	2825379669UL, 829329135, 1181335161, 3412177804UL, 3160834842UL, 628085408, 1382605366,
+/*180*/	3423369109UL, 3138078467UL, 570562233, 1426400815, 3317316542UL, 2998733608UL,
+/*186*/	733239954, 1555261956, 3268935591UL, 3050360625UL, 752459403, 1541320221, 2607071920UL,
+/*193*/	3965973030UL, 1969922972, 40735498, 2617837225UL, 3943577151UL, 1913087877, 83908371,
+/*200*/	2512341634UL, 3803740692UL, 2075208622, 213261112, 2463272603UL, 3855990285UL,
+/*206*/	2094854071, 198958881, 2262029012UL, 4057260610UL, 1759359992, 534414190, 2176718541UL,
+/*213*/	4139329115UL, 1873836001, 414664567, 2282248934UL, 4279200368UL, 1711684554,
+/*219*/	285281116,
+/*220*/	2405801727UL, 4167216745UL, 1634467795, 376229701, 2685067896UL, 3608007406UL,
+/*226*/	1308918612, 956543938, 2808555105UL, 3495958263UL, 1231636301, 1047427035, 2932959818UL,
+/*233*/	3654703836UL, 1088359270, 936918000, 2847714899UL, 3736837829UL, 1202900863,
+/*239*/	817233897,
+/*240*/	3183342108UL, 3401237130UL, 1404277552, 615818150, 3134207493UL, 3453421203UL,
+/*246*/	1423857449, 601450431, 3009837614UL, 3294710456UL, 1567103746, 711928724, 3020668471UL,
+/*253*/	3272380065UL, 1510334235, 755167117
 	};
 static unsigned int zipDistanceCodes[] = {
-		0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7,
-		7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10,
-		10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
-		11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
-		12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13,
-		13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
-		13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-		14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-		14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-		14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15,
-		15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-		15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
-		15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0,
-		16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,
-		22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
-		24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
-		25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
-		26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27,
-		27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
-		27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
-		28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
-		28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
-		28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
-		29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
-		29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
-		29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29
+/*0*/	0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8,
+/*20*/	8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10,
+/*40*/	10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+/*60*/	11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+/*80*/	12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13,
+/*100*/	13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+/*120*/	13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+/*140*/	14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+/*160*/	14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
+/*180*/	14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
+/*200*/	15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+/*220*/	15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+/*240*/	15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17,
+/*260*/	18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22,
+/*280*/	23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+/*300*/	24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
+/*320*/	26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
+/*340*/	26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27,
+/*360*/	27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+/*380*/	27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+/*400*/	28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+/*420*/	28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
+/*440*/	28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
+/*460*/	29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
+/*480*/	29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
+/*500*/	29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29
 	};
 static unsigned int* zipDistanceFreq;
 static unsigned int* zipDistances;
 static unsigned int* zipDistTable;
 static sqInt zipDistTableSize;
 static unsigned int zipExtraDistanceBits[] = {
-		0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4,
-		5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13
+/*0*/	0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8,
+/*20*/	9, 9, 10, 10, 11, 11, 12, 12, 13, 13
 	};
 static unsigned int zipExtraLengthBits[] = {
-		0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2,
-		2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0
+/*0*/	0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,
+/*20*/	4, 4, 4, 4, 5, 5, 5, 5, 0
 	};
 static unsigned int* zipHashHead;
 static unsigned int* zipHashTail;
@@ -246,23 +247,31 @@
 static sqInt zipLitTableSize;
 static sqInt zipMatchCount;
 static unsigned int zipMatchLengthCodes[] = {
-		257, 258, 259, 260, 261, 262, 263, 264,
-		265, 265, 266, 266, 267, 267, 268, 268, 269, 269, 269, 269, 270, 270, 270, 270,
-		271, 271, 271, 271, 272, 272, 272, 272, 273, 273, 273, 273, 273, 273, 273, 273,
-		274, 274, 274, 274, 274, 274, 274, 274, 275, 275, 275, 275, 275, 275, 275, 275,
-		276, 276, 276, 276, 276, 276, 276, 276, 277, 277, 277, 277, 277, 277, 277, 277,
-		277, 277, 277, 277, 277, 277, 277, 277, 278, 278, 278, 278, 278, 278, 278, 278,
-		278, 278, 278, 278, 278, 278, 278, 278, 279, 279, 279, 279, 279, 279, 279, 279,
-		279, 279, 279, 279, 279, 279, 279, 279, 280, 280, 280, 280, 280, 280, 280, 280,
-		280, 280, 280, 280, 280, 280, 280, 280, 281, 281, 281, 281, 281, 281, 281, 281,
-		281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
-		281, 281, 281, 281, 281, 281, 281, 281, 282, 282, 282, 282, 282, 282, 282, 282,
-		282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282,
-		282, 282, 282, 282, 282, 282, 282, 282, 283, 283, 283, 283, 283, 283, 283, 283,
-		283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283,
-		283, 283, 283, 283, 283, 283, 283, 283, 284, 284, 284, 284, 284, 284, 284, 284,
-		284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
-		284, 284, 284, 284, 284, 284, 284, 284
+/*0*/	257, 258, 259, 260, 261, 262, 263, 264, 265, 265, 266, 266, 267, 267, 268, 268,
+/*16*/	269, 269, 269, 269,
+/*20*/	270, 270, 270, 270, 271, 271, 271, 271, 272, 272, 272, 272, 273, 273, 273, 273,
+/*36*/	273, 273, 273, 273,
+/*40*/	274, 274, 274, 274, 274, 274, 274, 274, 275, 275, 275, 275, 275, 275, 275, 275,
+/*56*/	276, 276, 276, 276,
+/*60*/	276, 276, 276, 276, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
+/*76*/	277, 277, 277, 277,
+/*80*/	278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
+/*96*/	279, 279, 279, 279,
+/*100*/	279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 280, 280, 280, 280,
+/*116*/	280, 280, 280, 280,
+/*120*/	280, 280, 280, 280, 280, 280, 280, 280, 281, 281, 281, 281, 281, 281, 281, 281,
+/*136*/	281, 281, 281, 281,
+/*140*/	281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
+/*156*/	281, 281, 281, 281,
+/*160*/	282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282,
+/*176*/	282, 282, 282, 282,
+/*180*/	282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 283, 283, 283, 283,
+/*196*/	283, 283, 283, 283,
+/*200*/	283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283,
+/*216*/	283, 283, 283, 283,
+/*220*/	283, 283, 283, 283, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
+/*236*/	284, 284, 284, 284,
+/*240*/	284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284
 	};
 static sqInt zipPosition;
 static sqInt zipReadLimit;

Modified: branches/Cog/nscogsrc/vm/cogit.c
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.c	2014-03-20 17:01:24 UTC (rev 2882)
+++ branches/Cog/nscogsrc/vm/cogit.c	2014-03-25 00:48:45 UTC (rev 2883)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.641 uuid: c0305b66-db2d-45aa-8d25-267732aa1784
+	CCodeGenerator VMMaker.oscog-eem.655 uuid: d6c00552-e909-49e0-a838-d6c3225dedda
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.641 uuid: c0305b66-db2d-45aa-8d25-267732aa1784
+	StackToRegisterMappingCogit VMMaker.oscog-eem.655 uuid: d6c00552-e909-49e0-a838-d6c3225dedda
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.641 uuid: c0305b66-db2d-45aa-8d25-267732aa1784 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.655 uuid: d6c00552-e909-49e0-a838-d6c3225dedda " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -388,6 +388,7 @@
 sqInt bytecodePCForstartBcpcin(sqInt mcpc, sqInt startbcpc, CogBlockMethod *cogMethod);
 static AbstractInstruction * CallNewspeakSend(sqInt callTarget);
 static AbstractInstruction * CallRT(sqInt callTarget);
+static AbstractInstruction * CallRTregistersToBeSavedMask(sqInt callTarget, sqInt registersToBeSaved);
 static AbstractInstruction * CallSend(sqInt callTarget);
 static AbstractInstruction * gCmpCqR(sqInt quickConstant, sqInt reg);
 static AbstractInstruction * gCmpCwR(sqInt wordConstant, sqInt reg);
@@ -961,6 +962,7 @@
 static sqInt occurrencesInYoungReferrers(CogMethod *cogMethod);
 static sqInt oopisGreaterThanOrEqualTo(sqInt anOop, sqInt otherOop);
 static sqInt oopisGreaterThan(sqInt anOop, sqInt otherOop);
+static sqInt oopisLessThan(sqInt anOop, sqInt otherOop);
 static CogMethod * openPICWithSelector(sqInt aSelector);
 static sqInt outputInstructionsAt(sqInt startAddress);
 static sqInt outputInstructionsForGeneratedRuntimeAt(sqInt startAddress);
@@ -1090,6 +1092,7 @@
 static sqInt v4LongBranchDistance(BytecodeDescriptor *descriptor, sqInt pc, sqInt nExts, sqInt aMethodObj);
 void voidCogCompiledCode(void);
 static void voidYoungReferrersPostTenureAll(void);
+char * whereIsMaybeCodeThing(sqInt anOop);
 static AbstractInstruction * gXorCwR(sqInt wordConstant, sqInt reg);
 
 
@@ -1098,7 +1101,7 @@
 static AbstractInstruction aMethodLabel;
 static sqInt annotationIndex;
 static InstructionAnnotation * annotations;
-static AbstractInstruction * const backEnd = &aMethodLabel;
+static sqInt backEnd;
 static usqInt baseAddress;
 static sqInt blockCount;
 static AbstractInstruction * blockEntryLabel;
@@ -1980,6 +1983,7 @@
 sqInt traceStores;
 static char *trampolineAddresses[NumTrampolines*2];
 static sqInt trampolineTableIndex;
+static sqInt uncheckedEntryAlignment;
 static CogMethod * unpairedMethodList;
 static sqInt usesMethodClass;
 static usqInt youngReferrers;
@@ -2544,6 +2548,32 @@
 }
 
 static AbstractInstruction *
+CallRTregistersToBeSavedMask(sqInt callTarget, sqInt registersToBeSaved)
+{
+    sqInt callerSavedRegsToBeSaved;
+    AbstractInstruction *lastInst;
+    sqInt reg;
+
+	callerSavedRegsToBeSaved = (callerSavedRegisterMask(backEnd)) & registersToBeSaved;
+	for (reg = GPRegMax; reg >= GPRegMin; reg += -1) {
+		if ((reg != TempReg)
+		 && (callerSavedRegsToBeSaved & (registerMaskFor(reg)))) {
+			/* begin PushR: */
+			genoperand(PushR, reg);
+		}
+	}
+	lastInst = CallRT(callTarget);
+	for (reg = GPRegMin; reg <= GPRegMax; reg += 1) {
+		if ((reg != TempReg)
+		 && (callerSavedRegsToBeSaved & (registerMaskFor(reg)))) {
+			/* begin PopR: */
+			lastInst = genoperand(PopR, reg);
+		}
+	}
+	return lastInst;
+}
+
+static AbstractInstruction *
 CallSend(sqInt callTarget)
 {
     AbstractInstruction *abstractInstruction;
@@ -2942,10 +2972,15 @@
 checkIfValidObjectRefAndTargetpccogMethod(sqInt annotation, char *mcpc, sqInt cogMethod)
 {
     sqInt cacheTag;
+    sqInt cacheTag1;
     sqInt entryPoint;
+    sqInt entryPoint1;
     sqInt literal;
+    sqInt offset;
     sqInt sendTable;
     sqInt *sendTable1;
+    sqInt tagCouldBeObj;
+    sqInt tagCouldBeObject;
     sqInt targetMethod;
     CogMethod *targetMethod1;
 
@@ -2966,16 +3001,46 @@
 		if (!(asserta((((((CogMethod *) cogMethod))->cmType)) == CMMethod))) {
 			return 3;
 		}
-		cacheTag = inlineCacheTagAt(backEnd, ((sqInt)mcpc));
-		if (!(asserta(checkValidInlineCacheTag(cacheTag)))) {
-			return 4;
+		/* begin offsetCacheTagAndCouldBeObjectAt:annotation:into: */
+		cacheTag1 = inlineCacheTagAt(backEnd, ((sqInt)mcpc));
+
+		/* in-line cache tags are the selectors of sends if sends are unlinked,
+		   the selectors of super sends (entry offset = cmNoCheckEntryOffset),
+		   the selectors of open PIC sends (entry offset = cmEntryOffset, target is an Open PIC)
+		   or in-line cache tags (classes, class indices, immediate bit patterns, etc).
+		   Note that selectors can be immediate so there is no guarantee that they
+		   are markable/remappable objects. */
+
+		entryPoint1 = callTargetFromReturnAddress(backEnd, ((sqInt)mcpc));
+		tagCouldBeObj = (inlineCacheTagsMayBeObjects())
+		 || ((entryPoint1 < methodZoneBase)
+		 || (((entryPoint1 & entryPointMask) == uncheckedEntryAlignment)
+		 || (((entryPoint1 & entryPointMask) == checkedEntryAlignment)
+		 && ((((((CogMethod *) (entryPoint1 - cmEntryOffset)))->cmType)) == CMOpenPIC))));
+		if (tagCouldBeObj) {
+			if (couldBeObject(cacheTag1)) {
+				if (!(asserta(checkValidObjectReference(cacheTag1)))) {
+					return 4;
+				}
+			}
+			else {
+				if (!(asserta(checkValidInlineCacheTag(cacheTag1)))) {
+					return 5;
+				}
+			}
+			if ((couldBeObject(cacheTag1))
+			 && (isReallyYoungObject(cacheTag1))) {
+				if (!(asserta(((((CogMethod *) cogMethod))->cmRefersToYoung)))) {
+					return 6;
+				}
+			}
 		}
-		if ((couldBeObject(cacheTag))
-		 && (isReallyYoungObject(cacheTag))) {
-			if (!(asserta(((((CogMethod *) cogMethod))->cmRefersToYoung)))) {
-				return 5;
+		else {
+			if (!(asserta(checkValidInlineCacheTag(cacheTag1)))) {
+				return 7;
 			}
 		}
+
 		entryPoint = callTargetFromReturnAddress(backEnd, ((sqInt)mcpc));
 		if (entryPoint > methodZoneBase) {
 
@@ -3003,7 +3068,7 @@
 			if (!(asserta((((targetMethod1->cmType)) == CMMethod)
 				 || ((((targetMethod1->cmType)) == CMClosedPIC)
 				 || (((targetMethod1->cmType)) == CMOpenPIC))))) {
-				return 6;
+				return 8;
 			}
 
 		}
@@ -5135,8 +5200,6 @@
 static void
 computeEntryOffsets(void)
 {
-    sqInt uncheckedEntryAlignment;
-
 	allocateOpcodesbytecodes(20, 0);
 	methodOrBlockNumArgs = 0;
 	compileAbort();
@@ -10330,21 +10393,29 @@
 freeUnmarkedMachineCode(void)
 {
     CogMethod *cogMethod;
+    sqInt freedMethod;
 
+	freedMethod = 0;
 	cogMethod = ((CogMethod *) methodZoneBase);
 	while (cogMethod < (limitZony())) {
 		if ((((cogMethod->cmType)) == CMMethod)
 		 && (!(isMarked((cogMethod->methodObject))))) {
+			freedMethod = 1;
 			freeMethod(cogMethod);
 		}
 		if ((((cogMethod->cmType)) == CMOpenPIC)
 		 && ((!(isImmediate((cogMethod->selector))))
 		 && (!(isMarked((cogMethod->selector)))))) {
+			freedMethod = 1;
 			freeMethod(cogMethod);
 		}
 		cogMethod = ((CogMethod *) (roundUpLength((((sqInt)cogMethod)) + ((cogMethod->blockSize)))));
 	}
-	unlinkSendsToFree();
+	if (freedMethod) {
+		unlinkSendsToFree();
+		pruneYoungReferrers();
+		flushICacheFromto(processor, codeBase, ((sqInt)(limitZony())));
+	}
 }
 
 
@@ -15825,7 +15896,7 @@
 	/* begin JumpNonZero: */
 	jmpAlreadyRoot = genoperand(JumpNonZero, ((sqInt)0));
 	assert(destReg == ReceiverResultReg);
-	CallRT(ceStoreCheckTrampoline);
+	CallRTregistersToBeSavedMask(ceStoreCheckTrampoline, (registerMaskFor(sourceReg)) & (callerSavedRegisterMask(backEnd)));
 	jmpTarget(jmpImmediate, jmpTarget(jmpDestYoung, jmpTarget(jmpSourceOld, jmpTarget(jmpAlreadyRoot, gLabel()))));
 	return 0;
 }
@@ -17885,7 +17956,8 @@
 		cacheTag1 = inlineCacheTagAt(backEnd, ((sqInt)mcpc));
 
 		/* in-line cache tags are the selectors of sends if sends are unlinked,
-		   the selectors of super sends (entry offset = cmNoCheckEntryOffset)
+		   the selectors of super sends (entry offset = cmNoCheckEntryOffset),
+		   the selectors of open PIC sends (entry offset = cmEntryOffset, target is an Open PIC)
 		   or in-line cache tags (classes, class indices, immediate bit patterns, etc).
 		   Note that selectors can be immediate so there is no guarantee that they
 		   are markable/remappable objects. */
@@ -17893,7 +17965,9 @@
 		entryPoint1 = callTargetFromReturnAddress(backEnd, ((sqInt)mcpc));
 		tagCouldBeObj1 = (inlineCacheTagsMayBeObjects())
 		 || ((entryPoint1 < methodZoneBase)
-		 || ((entryPoint1 & entryPointMask) == cmNoCheckEntryOffset));
+		 || (((entryPoint1 & entryPointMask) == uncheckedEntryAlignment)
+		 || (((entryPoint1 & entryPointMask) == checkedEntryAlignment)
+		 && ((((((CogMethod *) (entryPoint1 - cmEntryOffset)))->cmType)) == CMOpenPIC))));
 		cacheTagMarked = tagCouldBeObj1
 		 && (cacheTagIsMarked(cacheTag1));
 		if (entryPoint1 > methodZoneBase) {
@@ -17992,7 +18066,8 @@
 		cacheTag1 = inlineCacheTagAt(backEnd, ((sqInt)mcpc));
 
 		/* in-line cache tags are the selectors of sends if sends are unlinked,
-		   the selectors of super sends (entry offset = cmNoCheckEntryOffset)
+		   the selectors of super sends (entry offset = cmNoCheckEntryOffset),
+		   the selectors of open PIC sends (entry offset = cmEntryOffset, target is an Open PIC)
 		   or in-line cache tags (classes, class indices, immediate bit patterns, etc).
 		   Note that selectors can be immediate so there is no guarantee that they
 		   are markable/remappable objects. */
@@ -18000,7 +18075,9 @@
 		entryPoint1 = callTargetFromReturnAddress(backEnd, ((sqInt)mcpc));
 		tagCouldBeObj1 = (inlineCacheTagsMayBeObjects())
 		 || ((entryPoint1 < methodZoneBase)
-		 || ((entryPoint1 & entryPointMask) == cmNoCheckEntryOffset));
+		 || (((entryPoint1 & entryPointMask) == uncheckedEntryAlignment)
+		 || (((entryPoint1 & entryPointMask) == checkedEntryAlignment)
+		 && ((((((CogMethod *) (entryPoint1 - cmEntryOffset)))->cmType)) == CMOpenPIC))));
 		if (tagCouldBeObj1) {
 			markAndTraceLiteral(cacheTag1);
 		}
@@ -18071,7 +18148,8 @@
 		cacheTag1 = inlineCacheTagAt(backEnd, ((sqInt)mcpc));
 
 		/* in-line cache tags are the selectors of sends if sends are unlinked,
-		   the selectors of super sends (entry offset = cmNoCheckEntryOffset)
+		   the selectors of super sends (entry offset = cmNoCheckEntryOffset),
+		   the selectors of open PIC sends (entry offset = cmEntryOffset, target is an Open PIC)
 		   or in-line cache tags (classes, class indices, immediate bit patterns, etc).
 		   Note that selectors can be immediate so there is no guarantee that they
 		   are markable/remappable objects. */
@@ -18079,7 +18157,9 @@
 		entryPoint1 = callTargetFromReturnAddress(backEnd, ((sqInt)mcpc));
 		tagCouldBeObj1 = (inlineCacheTagsMayBeObjects())
 		 || ((entryPoint1 < methodZoneBase)
-		 || ((entryPoint1 & entryPointMask) == cmNoCheckEntryOffset));
+		 || (((entryPoint1 & entryPointMask) == uncheckedEntryAlignment)
+		 || (((entryPoint1 & entryPointMask) == checkedEntryAlignment)
+		 && ((((((CogMethod *) (entryPoint1 - cmEntryOffset)))->cmType)) == CMOpenPIC))));
 		if (tagCouldBeObj1) {
 			markAndTraceLiteralIfYoung(cacheTag1);
 		}
@@ -18680,6 +18760,17 @@
 	return (((usqInt) anOop)) > (((usqInt) otherOop));
 }
 
+
+/*	Compare two oop values, treating them as object memory locations.
+	Use #cCoerce:to: to ensure comparison of unsigned magnitudes. This
+	method will be inlined during C translation. */
+
+static sqInt
+oopisLessThan(sqInt anOop, sqInt otherOop)
+{
+	return (((usqInt) anOop)) < (((usqInt) otherOop));
+}
+
 static CogMethod *
 openPICWithSelector(sqInt aSelector)
 {
@@ -19525,7 +19616,8 @@
 		cacheTag1 = inlineCacheTagAt(backEnd, ((sqInt)mcpc));
 
 		/* in-line cache tags are the selectors of sends if sends are unlinked,
-		   the selectors of super sends (entry offset = cmNoCheckEntryOffset)
+		   the selectors of super sends (entry offset = cmNoCheckEntryOffset),
+		   the selectors of open PIC sends (entry offset = cmEntryOffset, target is an Open PIC)
 		   or in-line cache tags (classes, class indices, immediate bit patterns, etc).
 		   Note that selectors can be immediate so there is no guarantee that they
 		   are markable/remappable objects. */
@@ -19533,7 +19625,9 @@
 		entryPoint1 = callTargetFromReturnAddress(backEnd, ((sqInt)mcpc));
 		tagCouldBeObj1 = (inlineCacheTagsMayBeObjects())
 		 || ((entryPoint1 < methodZoneBase)
-		 || ((entryPoint1 & entryPointMask) == cmNoCheckEntryOffset));
+		 || (((entryPoint1 & entryPointMask) == uncheckedEntryAlignment)
+		 || (((entryPoint1 & entryPointMask) == checkedEntryAlignment)
+		 && ((((((CogMethod *) (entryPoint1 - cmEntryOffset)))->cmType)) == CMOpenPIC))));
 		if (tagCouldBeObj1
 		 && (couldBeObject(cacheTag1))) {
 			mappedCacheTag = remapObject(cacheTag1);
@@ -19704,7 +19798,7 @@
 static sqInt
 rewriteCallAttarget(AbstractInstruction * self_in_rewriteCallAttarget, usqInt callSiteReturnAddress, usqInt callTargetAddress)
 {
-    sqInt callDistance;
+    usqInt callDistance;
 
 	if (!(callTargetAddress >= (minCallAddress()))) {
 		error("linking callsite to invalid address");
@@ -19732,7 +19826,7 @@
 static sqInt
 rewriteInlineCacheAttagtarget(AbstractInstruction * self_in_rewriteInlineCacheAttagtarget, usqInt callSiteReturnAddress, sqInt cacheTag, usqInt callTargetAddress)
 {
-    sqInt callDistance;
+    usqInt callDistance;
 
 	if (!(callTargetAddress >= (minCallAddress()))) {
 		error("linking callsite to invalid address");
@@ -21344,6 +21438,25 @@
 	youngReferrers = limitAddress;
 }
 
+char *
+whereIsMaybeCodeThing(sqInt anOop)
+{
+	if (((((usqInt) anOop)) >= (((usqInt) baseAddress)))
+	 && ((((usqInt) anOop)) < (((usqInt) limitAddress)))) {
+		if (oopisLessThan(anOop, minCogMethodAddress())) {
+			return " is in generated runtime";
+		}
+		if ((((usqInt) anOop)) < (((usqInt) mzFreeStart))) {
+			return " is in generated methods";
+		}
+		if ((((usqInt) anOop)) < (((usqInt) youngReferrers))) {
+			return " is in code zone";
+		}
+		return " is in young referrers";
+	}
+	return null;
+}
+
 static AbstractInstruction *
 gXorCwR(sqInt wordConstant, sqInt reg)
 {

Modified: branches/Cog/nscogsrc/vm/cogit.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.h	2014-03-20 17:01:24 UTC (rev 2882)
+++ branches/Cog/nscogsrc/vm/cogit.h	2014-03-25 00:48:45 UTC (rev 2883)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.641 uuid: c0305b66-db2d-45aa-8d25-267732aa1784
+	CCodeGenerator VMMaker.oscog-eem.655 uuid: d6c00552-e909-49e0-a838-d6c3225dedda
  */
 
 
@@ -77,6 +77,7 @@
 void unlinkSendsToFree(void);
 void unlinkSendsToandFreeIf(sqInt targetMethodObject, sqInt freeIfTrue);
 void voidCogCompiledCode(void);
+char * whereIsMaybeCodeThing(sqInt anOop);
 
 
 /*** Global Variables ***/

Modified: branches/Cog/nscogsrc/vm/cogmethod.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogmethod.h	2014-03-20 17:01:24 UTC (rev 2882)
+++ branches/Cog/nscogsrc/vm/cogmethod.h	2014-03-25 00:48:45 UTC (rev 2883)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.641 uuid: c0305b66-db2d-45aa-8d25-267732aa1784
+	CCodeGenerator VMMaker.oscog-eem.655 uuid: d6c00552-e909-49e0-a838-d6c3225dedda
  */
 
 typedef struct {

Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c	2014-03-20 17:01:24 UTC (rev 2882)
+++ branches/Cog/nscogsrc/vm/cointerp.c	2014-03-25 00:48:45 UTC (rev 2883)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.641 uuid: c0305b66-db2d-45aa-8d25-267732aa1784
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.656 uuid: 03e04241-b10f-4620-9be5-99543d124412
    from
-	CoInterpreter VMMaker.oscog-eem.641 uuid: c0305b66-db2d-45aa-8d25-267732aa1784
+	CoInterpreter VMMaker.oscog-eem.656 uuid: 03e04241-b10f-4620-9be5-99543d124412
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.641 uuid: c0305b66-db2d-45aa-8d25-267732aa1784 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.656 uuid: 03e04241-b10f-4620-9be5-99543d124412 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -804,6 +804,7 @@
 static sqInt oopHasAcceptableClass(sqInt signedOop);
 static sqInt oopHasOkayClass(sqInt signedOop);
 static sqInt oopisGreaterThanOrEqualTo(sqInt anOop, sqInt otherOop);
+static sqInt oopisGreaterThanOrEqualToandLessThan(sqInt anOop, sqInt baseOop, sqInt limitOop);
 static sqInt oopisGreaterThanandLessThan(sqInt anOop, sqInt baseOop, sqInt limitOop);
 static sqInt oopisLessThan(sqInt anOop, sqInt otherOop);
 static sqInt pageIndexFor(void *pointer);
@@ -1255,6 +1256,7 @@
 static sqInt voidVMStateForSnapshotFlushingExternalPrimitivesIf(sqInt flushExtPrims);
 static sqInt wakeHighestPriority(void);
 sqInt weakArrayFormat(void);
+char * whereIs(sqInt anOop);
 sqInt withoutForwardingOnandsendToCogit(sqInt obj1, sqInt obj2, sqInt (*selector)(sqInt,sqInt));
 sqInt withoutForwardingOnandwithsendToCogit(sqInt obj1, sqInt obj2, sqInt aBool, sqInt (*selector)(sqInt,sqInt,sqInt));
 static sqInt withSmallIntegerTags(char *value);
@@ -1283,8 +1285,8 @@
 _iss sqInt nilObj;
 _iss usqInt newMethod;
 _iss sqInt messageSelector;
+_iss StackPage * pages;
 _iss usqInt youngStart;
-_iss StackPage * pages;
 _iss char * stackBasePlus1;
 _iss sqInt remapBufferCount;
 _iss sqInt trueObj;
@@ -2037,7 +2039,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.641";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.656";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -16316,10 +16318,8 @@
     sqInt selector;
     sqInt selector1;
 
-
-	/* cogit recordSendTrace ifTrue: is implicit; wouldn't compile the call otherwise. */
-
 	cogMethod = ((CogMethod *) ((longAt(GIV(stackPointer))) - (traceLinkedSendOffset())));
+	null;
 	/* begin recordTrace:thing:source: */
 	classOrInteger = ((theReceiver & 1)
 		? longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassInteger << ShiftForWord))
@@ -28549,7 +28549,6 @@
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt aMethodObj;
     StackPage *newPage;
-    char *theFP;
     sqInt top;
 
 	assert(GIV(stackPage) == 0);
@@ -28564,9 +28563,7 @@
 	GIV(framePointer) = (GIV(stackPage)->headFP);
 	GIV(stackPointer) = (GIV(stackPage)->headSP);
 	/* begin setMethod: */
-	/* begin iframeMethod: */
-	theFP = (GIV(stackPage)->headFP);
-	aMethodObj = ((usqInt) (longAt(theFP + FoxMethod)));
+	aMethodObj = longAt(((GIV(stackPage)->headFP)) + FoxMethod);
 	assert((((usqInt)aMethodObj)) >= (startOfMemory()));
 	GIV(method) = aMethodObj;
 	assert(isOopCompiledMethod(GIV(method)));
@@ -29854,6 +29851,18 @@
 	method will be inlined during C translation. */
 
 static sqInt
+oopisGreaterThanOrEqualToandLessThan(sqInt anOop, sqInt baseOop, sqInt limitOop)
+{
+	return ((((usqInt) anOop)) >= (((usqInt) baseOop)))
+	 && ((((usqInt) anOop)) < (((usqInt) limitOop)));
+}
+
+
+/*	Compare two oop values, treating them as object memory locations.
+	Use #cCoerce:to: to ensure comparison of unsigned magnitudes. This
+	method will be inlined during C translation. */
+
+static sqInt
 oopisGreaterThanandLessThan(sqInt anOop, sqInt baseOop, sqInt limitOop)
 {
 	return ((((usqInt) anOop)) > (((usqInt) baseOop)))
@@ -30068,8 +30077,8 @@
 }
 
 
-/*	N.B. will *not* cause a GC.
-	integerValue is interpreted as POSITIVE, e.g. as the result of Bitmap>at:. */
+/*	Answer a Large Positive Integer object for the given integer value. N.B.
+	will *not* cause a GC. */
 
 sqInt
 positive64BitIntegerFor(sqLong integerValue)
@@ -30798,7 +30807,7 @@
 
 	arg = longAt(GIV(stackPointer));
 	rcvr = longAt(GIV(stackPointer) + (1 * BytesPerWord));
-	ec = becomewithtwoWaycopyHash(rcvr, arg, 1, 1);
+	ec = becomewithtwoWaycopyHash(rcvr, arg, 1, 0);
 	if (ec == PrimNoErr) {
 		/* begin pop: */
 		GIV(stackPointer) += 1 * BytesPerWord;
@@ -41974,31 +41983,27 @@
 }
 
 
-/*	Return a point indicating the current size of the Smalltalk window.
-	Currently there is a limit of 65535 in each direction because the point is
-	encoded into a single 32bit value in the image header. This might well
-	become a problem one day
- */
+/*	Answer a point indicating the current size of the Smalltalk window.
+	Currently there is a limit of 65535 in each direction because the
+	point is encoded into a single 32bit value in the image header.
+	This might well become a problem one day */
 
 static void
 primitiveScreenSize(void)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
-    sqInt object;
+    sqInt oop;
     sqInt pointResult;
     sqInt pointWord;
     char *sp;
 
-	/* begin pop: */
-	GIV(stackPointer) += 1 * BytesPerWord;
-	null;
 	pointWord = ioScreenSize();
-	/* begin push: */
+	/* begin pop:thenPush: */
 	/* begin makePointwithxValue:yValue: */
 	pointResult = eeInstantiateSmallClassnumSlots(longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassPoint << ShiftForWord)), YIndex + 1);
 	longAtput((pointResult + BaseHeaderSize) + (XIndex << ShiftForWord), ((((((usqInt) pointWord) >> 16) & 0xFFFF) << 1) | 1));
 	longAtput((pointResult + BaseHeaderSize) + (YIndex << ShiftForWord), (((pointWord & 0xFFFF) << 1) | 1));
-	object = pointResult;
-	longAtput((sp = GIV(stackPointer) - BytesPerWord), object);
+	oop = pointResult;
+	longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), oop);
 	GIV(stackPointer) = sp;
 }
 
@@ -46529,7 +46534,7 @@
 
 void
 printCogMethod(CogMethod *cogMethod)
-{
+{   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt address;
     sqInt firstBytecode;
     sqInt methodHeader;
@@ -46573,8 +46578,15 @@
 	}
 	print(" selector: ");
 	printHex((cogMethod->selector));
-	print(" ");
-	printStringOf((cogMethod->selector));
+	if (((cogMethod->selector)) == GIV(nilObj)) {
+		print(" (nil)");
+	}
+	else {
+		/* begin space */
+		/* begin printChar: */
+		putchar(' ');
+		printStringOf((cogMethod->selector));
+	}
 	/* begin cr */
 	printf("\n");
 }
@@ -47193,6 +47205,9 @@
 	if (((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
 		? ((longAt(theFP + FoxMethod)) & MFMethodFlagIsBlockFlag) != 0
 		: (byteAt((theFP + FoxIFrameFlags) + 3)) != 0)) {
+
+		/* No BlockLocalTempCounter in the Cogit's C code, so quick hack is to use numCopied + numArgs */
+
 		rcvrOrClosure = longAt(theFP + (frameStackedReceiverOffset(theFP)));
 		if (((rcvrOrClosure & 1) == 0)
 		 && ((((rcvrOrClosure & 3) == 0)
@@ -47205,7 +47220,7 @@
 			numTemps = numArgs + (stSizeOf(rcvrOrClosure));
 		}
 		else {
-			numTemps = 0;
+			numTemps = numArgs;
 		}
 	}
 	shortPrintFrame(theFP);
@@ -47251,7 +47266,11 @@
 				printFrameOopindexat("temp", index - 1, addr);
 			}
 			else {
-				printFrameOopat("stck", addr);
+				printFrameOopat((((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
+					? ((longAt(theFP + FoxMethod)) & MFMethodFlagIsBlockFlag) != 0
+					: (byteAt((theFP + FoxIFrameFlags) + 3)) != 0)
+					? "temp/stck"
+					: "stck"), addr);
 			}
 		}
 		printFrameThingatextra("frame ip", theSP, ((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
@@ -47265,7 +47284,11 @@
 				printFrameOopindexat("temp", index - 1, addr);
 			}
 			else {
-				printFrameOopat("stck", addr);
+				printFrameOopat((((((usqInt)(longAt(theFP + FoxMethod)))) < (startOfMemory())
+					? ((longAt(theFP + FoxMethod)) & MFMethodFlagIsBlockFlag) != 0
+					: (byteAt((theFP + FoxIFrameFlags) + 3)) != 0)
+					? "temp/stck"
+					: "stck"), addr);
 			}
 		}
 	}
@@ -47467,7 +47490,7 @@
 						 && (((longAt(oop1)) & TypeMask) != HeaderTypeGC))))) {
 						print(((oop1 & (BytesPerWord - 1)) != 0
 							? " is misaligned"
-							: " is not on the heap"));
+							: whereIs(oop1)));
 						goto l2;
 					}
 					
@@ -48193,7 +48216,7 @@
 		 && (((longAt(oop)) & TypeMask) != HeaderTypeGC))))) {
 		print(((oop & (BytesPerWord - 1)) != 0
 			? " is misaligned"
-			: " is not on the heap"));
+			: whereIs(oop)));
 		goto l1;
 	}
 	
@@ -48315,7 +48338,7 @@
 		 && (((longAt(oop)) & TypeMask) != HeaderTypeGC))))) {
 		print(((oop & (BytesPerWord - 1)) != 0
 			? " is misaligned"
-			: " is not on the heap"));
+			: whereIs(oop)));
 		/* begin cr */
 		printf("\n");
 
@@ -51435,7 +51458,7 @@
 		 && (((longAt(oop)) & TypeMask) != HeaderTypeGC))))) {
 		print(((oop & (BytesPerWord - 1)) != 0
 			? " is misaligned"
-			: " is not on the heap"));
+			: whereIs(oop)));
 		/* begin cr */
 		printf("\n");
 
@@ -51555,11 +51578,11 @@
 }
 
 
-/*	Return a full 32 bit integer object for the given integer value */
+/*	Answer a full 32 bit integer object for the given integer value. */
 
 sqInt
 signed32BitIntegerFor(sqInt integerValue)
-{   DECL_MAYBE_SQ_GLOBAL_STRUCT
+{
     sqInt largeClass;
     sqInt newLargeInteger;
     sqInt value;
@@ -51568,15 +51591,14 @@
 		return ((integerValue << 1) | 1);
 	}
 	if (integerValue < 0) {
-		largeClass = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassLargeNegativeInteger << ShiftForWord));
+		largeClass = ClassLargeNegativeIntegerCompactIndex;
 		value = 0 - integerValue;
 	}
 	else {
-		largeClass = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassLargePositiveInteger << ShiftForWord));
+		largeClass = ClassLargePositiveIntegerCompactIndex;
 		value = integerValue;
 	}
-	newLargeInteger = eeInstantiateClassindexableSize(largeClass, 4);
-
+	newLargeInteger = eeInstantiateSmallClassIndexformatnumSlots(largeClass, 8 + ((4 - 4) & 3), 1);
 	byteAtput((newLargeInteger + BaseHeaderSize) + 3, (((usqInt) value) >> 24) & 0xFF);
 	byteAtput((newLargeInteger + BaseHeaderSize) + 2, (((usqInt) value) >> 16) & 0xFF);
 	byteAtput((newLargeInteger + BaseHeaderSize) + 1, (((usqInt) value) >> 8) & 0xFF);
@@ -51666,25 +51688,24 @@
 }
 
 
-/*	Return a Large Integer object for the given integer value */
+/*	Answer a Large Integer object for the given integer value. N.B. will *not*
+	cause a GC. */
 
 sqInt
 signed64BitIntegerFor(sqLong integerValue)
-{   DECL_MAYBE_SQ_GLOBAL_STRUCT
+{
     usqInt highWord;
-    sqInt i;
-    sqInt intValue;
     sqInt largeClass;
     sqLong magnitude;
     sqInt newLargeInteger;
     sqInt sz;
 
 	if (integerValue < 0) {
-		largeClass = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassLargeNegativeInteger << ShiftForWord));
+		largeClass = ClassLargeNegativeIntegerCompactIndex;
 		magnitude = 0 - integerValue;
 	}
 	else {
-		largeClass = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (ClassLargePositiveInteger << ShiftForWord));
+		largeClass = ClassLargePositiveIntegerCompactIndex;
 		magnitude = integerValue;
 	}
 	if ((magnitude <= 0x7FFFFFFFUL)
@@ -51708,11 +51729,17 @@
 			sz += 1;
 		}
 	}
-	newLargeInteger = instantiateClassindexableSize(largeClass, sz);
-	for (i = 0; i < sz; i += 1) {
-		intValue = (((unsigned sqLong)magnitude) >> (i * 8)) & 0xFF;
-		byteAtput((newLargeInteger + BaseHeaderSize) + i, intValue);
+	newLargeInteger = eeInstantiateSmallClassIndexformatnumSlots(largeClass, 8 + ((4 - sz) & 3), ((sqInt) (sz + 3) >> 2));
+	if (sz > 4) {
+		byteAtput((newLargeInteger + BaseHeaderSize) + 7, (((unsigned sqLong)magnitude) >> 56) & 0xFF);
+		byteAtput((newLargeInteger + BaseHeaderSize) + 6, (((unsigned sqLong)magnitude) >> 48) & 0xFF);
+		byteAtput((newLargeInteger + BaseHeaderSize) + 5, (((unsigned sqLong)magnitude) >> 40) & 0xFF);
+		byteAtput((newLargeInteger + BaseHeaderSize) + 4, (((unsigned sqLong)magnitude) >> 32) & 0xFF);
 	}
+	byteAtput((newLargeInteger + BaseHeaderSize) + 3, (((unsigned sqLong)magnitude) >> 24) & 0xFF);
+	byteAtput((newLargeInteger + BaseHeaderSize) + 2, (((unsigned sqLong)magnitude) >> 16) & 0xFF);
+	byteAtput((newLargeInteger + BaseHeaderSize) + 1, (((unsigned sqLong)magnitude) >> 8) & 0xFF);
+	byteAtput((newLargeInteger + BaseHeaderSize) + 0, magnitude & 0xFF);
 	return newLargeInteger;
 }
 
@@ -55077,7 +55104,49 @@
 	return 4;
 }
 
+char *
+whereIs(sqInt anOop)
+{   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    char *somewhere;
+    char *where;
 
+	somewhere = whereIsMaybeCodeThing(anOop);
+	if (!(somewhere == null)) {
+		return somewhere;
+	}
+	/* begin whereIsMaybeHeapThing: */
+	if (oopisGreaterThanOrEqualToandLessThan(anOop, startOfMemory(), GIV(endOfMemory))) {
+		if ((((usqInt) anOop)) < (((usqInt) GIV(freeStart)))) {
+			where = " is in old space";
+			goto l1;
+		}
+		if ((((usqInt) anOop)) < (((usqInt) GIV(reserveStart)))) {
+			where = " is in new space";
+			goto l1;
+		}
+		where = " is above reserve start";
+		goto l1;
+	}
+	where = null;
+l1:	/* end whereIsMaybeHeapThing: */;
+	if (!(where == null)) {
+		return where;
+	}
+	/* begin whereIsMaybeStackThing: */
+	if (((((usqInt) anOop)) >= (((usqInt) (GIV(stackBasePlus1) - 1))))
+	 && ((((usqInt) anOop)) < (((usqInt) GIV(pages))))) {
+		where = " is in the stack zone";
+		goto l2;
+	}
+	where = null;
+l2:	/* end whereIsMaybeStackThing: */;
+	if (!(where == null)) {
+		return where;
+	}
+	return " is no where obvious";
+}
+
+
 /*	For the purposes of become: send selector to the cogit with obj1 and obj2
 	and answer the result. Undo forwarding for the selector, but redo
 	forwarding after since

Modified: branches/Cog/nscogsrc/vm/cointerp.h
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.h	2014-03-20 17:01:24 UTC (rev 2882)
+++ branches/Cog/nscogsrc/vm/cointerp.h	2014-03-25 00:48:45 UTC (rev 2883)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.641 uuid: c0305b66-db2d-45aa-8d25-267732aa1784
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.656 uuid: 03e04241-b10f-4620-9be5-99543d124412
  */
 
 
@@ -229,6 +229,7 @@
 void updateStackZoneReferencesToCompiledCodePreCompaction(void);
 extern void warning(char *s);
 sqInt weakArrayFormat(void);
+char * whereIs(sqInt anOop);
 sqInt withoutForwardingOnandsendToCogit(sqInt obj1, sqInt obj2, sqInt (*selector)(sqInt,sqInt));
 sqInt withoutForwardingOnandwithsendToCogit(sqInt obj1, sqInt obj2, sqInt aBool, sqInt (*selector)(sqInt,sqInt,sqInt));
 usqInt youngStartAddress(void);

Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-03-20 17:01:24 UTC (rev 2882)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-03-25 00:48:45 UTC (rev 2883)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.641 uuid: c0305b66-db2d-45aa-8d25-267732aa1784
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.656 uuid: 03e04241-b10f-4620-9be5-99543d124412
    from
-	CoInterpreter VMMaker.oscog-eem.641 uuid: c0305b66-db2d-45aa-8d25-267732aa1784
+	CoInterpreter VMMaker.oscog-eem.656 uuid: 03e04241-b10f-4620-9be5-99543d124412
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.641 uuid: c0305b66-db2d-45aa-8d25-267732aa1784 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.656 uuid: 03e04241-b10f-4620-9be5-99543d124412 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -807,6 +807,7 @@
 static sqInt oopHasAcceptableClass(sqInt signedOop);
 static sqInt oopHasOkayClass(sqInt signedOop);
 static sqInt oopisGreaterThanOrEqualTo(sqInt anOop, sqInt otherOop);
+static sqInt oopisGreaterThanOrEqualToandLessThan(sqInt anOop, sqInt baseOop, sqInt limitOop);
 static sqInt oopisGreaterThanandLessThan(sqInt anOop, sqInt baseOop, sqInt limitOop);
 static sqInt oopisLessThan(sqInt anOop, sqInt otherOop);
 static sqInt pageIndexFor(void *pointer);
@@ -1258,6 +1259,7 @@
 static sqInt voidVMStateForSnapshotFlushingExternalPrimitivesIf(sqInt flushExtPrims);
 static sqInt wakeHighestPriority(void);
 sqInt weakArrayFormat(void);
+char * whereIs(sqInt anOop);
 sqInt withoutForwardingOnandsendToCogit(sqInt obj1, sqInt obj2, sqInt (*selector)(sqInt,sqInt));

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list