[Vm-dev] [commit][2871] CogVM source as per VMMaker.oscog-eem.624

commits at squeakvm.org commits at squeakvm.org
Sat Mar 1 15:54:57 UTC 2014


Revision: 2871
Author:   eliot
Date:     2014-03-01 07:54:53 -0800 (Sat, 01 Mar 2014)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.624

Comment and coordinate the various examplePlugins.int/ext files.

Spur:
Instance printing should not print free chunks ;-)

Remember to invoke markAndTraceOrFreeMachineCode: in the mark phase of full GC.

Add classOrNilAtIndex: and use it in places where a nil return is unacceptable
(fetchClassOf:, especially for isKindOfClass: when given garbage in printOop:).

Improve spread in Spur's identity hash from 64% to 75%.
Make primitiveSizeInBytesOfInstance accept 2 args in Newspeak for VMMirror.

Use followForward: when accessing the elements of the array(s) in become, since
there's nothing that ensures uniqueness and/or disjointness in the elements.
Hence explicitly filter-out an object becomming itself.

Modified Paths:
--------------
    branches/Cog/nscogsrc/examplePlugins.ext
    branches/Cog/nscogsrc/examplePlugins.int
    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/nsspurstacksrc/examplePlugins.ext
    branches/Cog/nsspurstacksrc/examplePlugins.int
    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/nssrc/examplePlugins.ext
    branches/Cog/nssrc/examplePlugins.int
    branches/Cog/spursrc/examplePlugins.ext
    branches/Cog/spursrc/examplePlugins.int
    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/examplePlugins.ext
    branches/Cog/spurstacksrc/examplePlugins.int
    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/examplePlugins.ext
    branches/Cog/src/examplePlugins.int
    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/examplePlugins.ext
    branches/Cog/stacksrc/examplePlugins.int
    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

Added Paths:
-----------
    branches/Cog/nsspursrc/
    branches/Cog/nsspursrc/examplePlugins.ext
    branches/Cog/nsspursrc/examplePlugins.int
    branches/Cog/nsspursrc/vm/
    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/exampleSqNamedPrims.h
    branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
    branches/Cog/nsspursrc/vm/interp.h
    branches/Cog/nsspursrc/vm/vmCallback.h

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

Modified: branches/Cog/nscogsrc/examplePlugins.ext
===================================================================
--- branches/Cog/nscogsrc/examplePlugins.ext	2014-02-23 15:51:51 UTC (rev 2870)
+++ branches/Cog/nscogsrc/examplePlugins.ext	2014-03-01 15:54:53 UTC (rev 2871)
@@ -1,31 +1,4 @@
-# Automatically generated makefile include for external plugins
+# This is an example external plugin list.
+# Edit plugins.ext in vm build dir to specify the external plugins to be built.
 EXTERNAL_PLUGINS = \
-AsynchFilePlugin \
-BMPReadWriterPlugin \
-B2DPlugin \
-BitBltPlugin \
-DSAPrims \
-ZipPlugin \
-DropPlugin \
-FileCopyPlugin \
-FilePlugin \
-FloatArrayPlugin \
-FloatMathPlugin \
-JPEGReadWriter2Plugin \
-JPEGReaderPlugin \
-LargeIntegers \
-Matrix2x3Plugin \
-MiscPrimitivePlugin \
-IA32ABI \
-RePlugin \
-SecurityPlugin \
-SocketPlugin \
-SoundPlugin \
-SqueakSSL \
-SurfacePlugin \
-SqueakFFIPrims \
-UUIDPlugin \
-UnixOSProcessPlugin \
-VMProfileLinuxSupportPlugin \
-VMProfileMacSupportPlugin \
-Win32OSProcessPlugin
+SqueakSSL

Modified: branches/Cog/nscogsrc/examplePlugins.int
===================================================================
--- branches/Cog/nscogsrc/examplePlugins.int	2014-02-23 15:51:51 UTC (rev 2870)
+++ branches/Cog/nscogsrc/examplePlugins.int	2014-03-01 15:54:53 UTC (rev 2871)
@@ -1,2 +1,28 @@
-# Automatically generated makefile include for internal plugins
-INTERNAL_PLUGINS =
+# This is an example internal plugin list.
+# Edit plugins.int in vm build dir to specify internal plugins to be built and
+# linked into the vm.
+INTERNAL_PLUGINS = \
+AsynchFilePlugin \
+BMPReadWriterPlugin \
+B2DPlugin \
+BitBltPlugin \
+DSAPrims \
+DropPlugin \
+FileCopyPlugin \
+FilePlugin \
+FloatArrayPlugin \
+FloatMathPlugin \
+ZipPlugin \
+JPEGReadWriter2Plugin \
+JPEGReaderPlugin \
+LargeIntegers \
+Matrix2x3Plugin \
+MiscPrimitivePlugin \
+IA32ABI \
+RePlugin \
+SecurityPlugin \
+SocketPlugin \
+SurfacePlugin \
+UUIDPlugin \
+UnixOSProcessPlugin \
+VMProfileMacSupportPlugin

Modified: branches/Cog/nscogsrc/vm/cogit.c
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.c	2014-02-23 15:51:51 UTC (rev 2870)
+++ branches/Cog/nscogsrc/vm/cogit.c	2014-03-01 15:54:53 UTC (rev 2871)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.600 uuid: 48f5953c-233c-4026-96a0-ffef9cea1c72
+	CCodeGenerator VMMaker.oscog-eem.624 uuid: 7671143a-d3d3-45cb-b481-210d4d0c4073
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.600 uuid: 48f5953c-233c-4026-96a0-ffef9cea1c72
+	StackToRegisterMappingCogit VMMaker.oscog-eem.624 uuid: 7671143a-d3d3-45cb-b481-210d4d0c4073
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.600 uuid: 48f5953c-233c-4026-96a0-ffef9cea1c72 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.624 uuid: 7671143a-d3d3-45cb-b481-210d4d0c4073 " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 

Modified: branches/Cog/nscogsrc/vm/cogit.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogit.h	2014-02-23 15:51:51 UTC (rev 2870)
+++ branches/Cog/nscogsrc/vm/cogit.h	2014-03-01 15:54:53 UTC (rev 2871)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.600 uuid: 48f5953c-233c-4026-96a0-ffef9cea1c72
+	CCodeGenerator VMMaker.oscog-eem.624 uuid: 7671143a-d3d3-45cb-b481-210d4d0c4073
  */
 
 

Modified: branches/Cog/nscogsrc/vm/cogmethod.h
===================================================================
--- branches/Cog/nscogsrc/vm/cogmethod.h	2014-02-23 15:51:51 UTC (rev 2870)
+++ branches/Cog/nscogsrc/vm/cogmethod.h	2014-03-01 15:54:53 UTC (rev 2871)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.600 uuid: 48f5953c-233c-4026-96a0-ffef9cea1c72
+	CCodeGenerator VMMaker.oscog-eem.624 uuid: 7671143a-d3d3-45cb-b481-210d4d0c4073
  */
 
 typedef struct {

Modified: branches/Cog/nscogsrc/vm/cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.c	2014-02-23 15:51:51 UTC (rev 2870)
+++ branches/Cog/nscogsrc/vm/cointerp.c	2014-03-01 15:54:53 UTC (rev 2871)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.620 uuid: 0c6991e0-acb5-4250-84d8-cdeebfac41e9
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.624 uuid: 7671143a-d3d3-45cb-b481-210d4d0c4073
    from
-	CoInterpreter VMMaker.oscog-eem.620 uuid: 0c6991e0-acb5-4250-84d8-cdeebfac41e9
+	CoInterpreter VMMaker.oscog-eem.624 uuid: 7671143a-d3d3-45cb-b481-210d4d0c4073
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.620 uuid: 0c6991e0-acb5-4250-84d8-cdeebfac41e9 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.624 uuid: 7671143a-d3d3-45cb-b481-210d4d0c4073 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1145,7 +1145,7 @@
 static void rewriteMethodCacheEntryForExternalPrimitiveToFunction(void (*localPrimAddress)(void));
 static sqInt roomToPushNArgs(sqInt n);
 static void runLeakCheckerForFullGC(sqInt fullGCFlag);
-static sqInt safeObjectAfter(sqInt oop);
+static usqInt safeObjectAfter(sqInt oop);
 static sqInt safePrintStringOf(sqInt oop);
 usqInt scavengeThresholdAddress(void);
 EXPORT(sqInt) sendInvokeCallbackContext(VMCallbackContext *vmCallbackContext);
@@ -2032,7 +2032,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.620";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.624";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -4826,7 +4826,6 @@
 							GIV(framePointer) = localFP;
 							
 							ceEnterCogCodePopReceiverReg();
-							null;
 							goto l307;
 						}
 						localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
@@ -4844,7 +4843,7 @@
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-					null;
+					/* return self */
 				l307:	/* end baseFrameReturn */;
 					goto l304;
 				}
@@ -23661,17 +23660,15 @@
     sqInt header1;
     sqInt header2;
     sqInt header3;
-    sqInt header4;
     usqInt lastWord;
     sqInt newFreeChunk;
     sqInt newOop;
-    sqInt next;
+    usqInt next;
     sqInt oop;
     sqInt realHeader;
     sqInt sz;
     sqInt sz1;
     sqInt sz2;
-    sqInt sz3;
     sqInt target;
     usqInt w;
 
@@ -23682,21 +23679,7 @@
 		/* begin objectAfterWhileForwarding: */
 		header2 = longAt(oop);
 		if ((header2 & MarkBit) == 0) {
-			/* begin objectAfter: */
-			if (!(asserta(oopisLessThan(oop, GIV(freeStart))))) {
-				error("no objects after the end of memory");
-			}
-			if (((longAt(oop)) & TypeMask) == HeaderTypeFree) {
-				sz2 = (longAt(oop)) & AllButTypeMask;
-			}
-			else {
-				/* begin sizeBitsOf: */
-				header3 = longAt(oop);
-				sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
-					? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask
-					: header3 & SizeMask);
-			}
-			next = (oop + sz2) + (headerTypeBytes[(longAt(oop + sz2)) & TypeMask]);
+			next = ((sqInt) (objectAfter(oop)));
 			goto l1;
 		}
 		fwdBlock1 = (header2 & AllButMarkBitAndTypeMask) << 1;
@@ -23711,7 +23694,7 @@
 		else {
 			sz1 = realHeader & SizeMask;
 		}
-		next = (oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]);
+		next = ((sqInt) ((oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask])));
 	l1:	/* end objectAfterWhileForwarding: */;
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 
@@ -23765,18 +23748,18 @@
 	}
 	/* begin safeObjectAfter: */
 	if (((longAt(newFreeChunk)) & TypeMask) == HeaderTypeFree) {
-		sz3 = (longAt(newFreeChunk)) & AllButTypeMask;
+		sz2 = (longAt(newFreeChunk)) & AllButTypeMask;
 	}
 	else {
 		/* begin sizeBitsOf: */
-		header4 = longAt(newFreeChunk);
-		sz3 = ((header4 & TypeMask) == HeaderTypeSizeAndClass
+		header3 = longAt(newFreeChunk);
+		sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
 			? (longAt(newFreeChunk - (BytesPerWord * 2))) & LongSizeMask
-			: header4 & SizeMask);
+			: header3 & SizeMask);
 	}
-	next = ((newFreeChunk + sz3) >= GIV(freeStart)
+	next = ((newFreeChunk + sz2) >= GIV(freeStart)
 		? GIV(freeStart)
-		: (newFreeChunk + sz3) + (headerTypeBytes[(longAt(newFreeChunk + sz3)) & TypeMask]));
+		: (newFreeChunk + sz2) + (headerTypeBytes[(longAt(newFreeChunk + sz2)) & TypeMask]));
 	assert((next == GIV(freeStart))
 	 || (next == (oopFromChunk(GIV(compEnd)))));
 	if (next == GIV(freeStart)) {
@@ -50175,7 +50158,7 @@
 	given object or free chunk in memory. Return freeStart when
 	enumeration is complete. This is for assertion checking only. */
 
-static sqInt
+static usqInt
 safeObjectAfter(sqInt oop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt header;

Modified: branches/Cog/nscogsrc/vm/cointerp.h
===================================================================
--- branches/Cog/nscogsrc/vm/cointerp.h	2014-02-23 15:51:51 UTC (rev 2870)
+++ branches/Cog/nscogsrc/vm/cointerp.h	2014-03-01 15:54:53 UTC (rev 2871)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.620 uuid: 0c6991e0-acb5-4250-84d8-cdeebfac41e9
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.624 uuid: 7671143a-d3d3-45cb-b481-210d4d0c4073
  */
 
 

Modified: branches/Cog/nscogsrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-02-23 15:51:51 UTC (rev 2870)
+++ branches/Cog/nscogsrc/vm/gcc3x-cointerp.c	2014-03-01 15:54:53 UTC (rev 2871)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.620 uuid: 0c6991e0-acb5-4250-84d8-cdeebfac41e9
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.624 uuid: 7671143a-d3d3-45cb-b481-210d4d0c4073
    from
-	CoInterpreter VMMaker.oscog-eem.620 uuid: 0c6991e0-acb5-4250-84d8-cdeebfac41e9
+	CoInterpreter VMMaker.oscog-eem.624 uuid: 7671143a-d3d3-45cb-b481-210d4d0c4073
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.620 uuid: 0c6991e0-acb5-4250-84d8-cdeebfac41e9 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.624 uuid: 7671143a-d3d3-45cb-b481-210d4d0c4073 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -1148,7 +1148,7 @@
 static void rewriteMethodCacheEntryForExternalPrimitiveToFunction(void (*localPrimAddress)(void));
 static sqInt roomToPushNArgs(sqInt n);
 static void runLeakCheckerForFullGC(sqInt fullGCFlag);
-static sqInt safeObjectAfter(sqInt oop);
+static usqInt safeObjectAfter(sqInt oop);
 static sqInt safePrintStringOf(sqInt oop);
 usqInt scavengeThresholdAddress(void);
 EXPORT(sqInt) sendInvokeCallbackContext(VMCallbackContext *vmCallbackContext);
@@ -2035,7 +2035,7 @@
 	/* 574 */ (void (*)(void))0,
 	/* 575 */ (void (*)(void))0,
  0 };
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.620";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreter_VMMaker.oscog-eem.624";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 10 */;
 volatile int sendTrace;
 
@@ -4835,7 +4835,6 @@
 							GIV(framePointer) = localFP;
 							
 							ceEnterCogCodePopReceiverReg();
-							null;
 							goto l307;
 						}
 						localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
@@ -4853,7 +4852,7 @@
 					/* begin fetchNextBytecode */
 					currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
 
-					null;
+					/* return self */
 				l307:	/* end baseFrameReturn */;
 					goto l304;
 				}
@@ -23670,17 +23669,15 @@
     sqInt header1;
     sqInt header2;
     sqInt header3;
-    sqInt header4;
     usqInt lastWord;
     sqInt newFreeChunk;
     sqInt newOop;
-    sqInt next;
+    usqInt next;
     sqInt oop;
     sqInt realHeader;
     sqInt sz;
     sqInt sz1;
     sqInt sz2;
-    sqInt sz3;
     sqInt target;
     usqInt w;
 
@@ -23691,21 +23688,7 @@
 		/* begin objectAfterWhileForwarding: */
 		header2 = longAt(oop);
 		if ((header2 & MarkBit) == 0) {
-			/* begin objectAfter: */
-			if (!(asserta(oopisLessThan(oop, GIV(freeStart))))) {
-				error("no objects after the end of memory");
-			}
-			if (((longAt(oop)) & TypeMask) == HeaderTypeFree) {
-				sz2 = (longAt(oop)) & AllButTypeMask;
-			}
-			else {
-				/* begin sizeBitsOf: */
-				header3 = longAt(oop);
-				sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
-					? (longAt(oop - (BytesPerWord * 2))) & LongSizeMask
-					: header3 & SizeMask);
-			}
-			next = (oop + sz2) + (headerTypeBytes[(longAt(oop + sz2)) & TypeMask]);
+			next = ((sqInt) (objectAfter(oop)));
 			goto l1;
 		}
 		fwdBlock1 = (header2 & AllButMarkBitAndTypeMask) << 1;
@@ -23720,7 +23703,7 @@
 		else {
 			sz1 = realHeader & SizeMask;
 		}
-		next = (oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask]);
+		next = ((sqInt) ((oop + sz1) + (headerTypeBytes[(longAt(oop + sz1)) & TypeMask])));
 	l1:	/* end objectAfterWhileForwarding: */;
 		if (!(((longAt(oop)) & TypeMask) == HeaderTypeFree)) {
 
@@ -23774,18 +23757,18 @@
 	}
 	/* begin safeObjectAfter: */
 	if (((longAt(newFreeChunk)) & TypeMask) == HeaderTypeFree) {
-		sz3 = (longAt(newFreeChunk)) & AllButTypeMask;
+		sz2 = (longAt(newFreeChunk)) & AllButTypeMask;
 	}
 	else {
 		/* begin sizeBitsOf: */
-		header4 = longAt(newFreeChunk);
-		sz3 = ((header4 & TypeMask) == HeaderTypeSizeAndClass
+		header3 = longAt(newFreeChunk);
+		sz2 = ((header3 & TypeMask) == HeaderTypeSizeAndClass
 			? (longAt(newFreeChunk - (BytesPerWord * 2))) & LongSizeMask
-			: header4 & SizeMask);
+			: header3 & SizeMask);
 	}
-	next = ((newFreeChunk + sz3) >= GIV(freeStart)
+	next = ((newFreeChunk + sz2) >= GIV(freeStart)
 		? GIV(freeStart)
-		: (newFreeChunk + sz3) + (headerTypeBytes[(longAt(newFreeChunk + sz3)) & TypeMask]));
+		: (newFreeChunk + sz2) + (headerTypeBytes[(longAt(newFreeChunk + sz2)) & TypeMask]));
 	assert((next == GIV(freeStart))
 	 || (next == (oopFromChunk(GIV(compEnd)))));
 	if (next == GIV(freeStart)) {
@@ -50184,7 +50167,7 @@
 	given object or free chunk in memory. Return freeStart when
 	enumeration is complete. This is for assertion checking only. */
 
-static sqInt
+static usqInt
 safeObjectAfter(sqInt oop)
 {   DECL_MAYBE_SQ_GLOBAL_STRUCT
     sqInt header;

Modified: branches/Cog/nscogsrc/vm/interp.h
===================================================================
--- branches/Cog/nscogsrc/vm/interp.h	2014-02-23 15:51:51 UTC (rev 2870)
+++ branches/Cog/nscogsrc/vm/interp.h	2014-03-01 15:54:53 UTC (rev 2871)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.620 uuid: 0c6991e0-acb5-4250-84d8-cdeebfac41e9
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.624 uuid: 7671143a-d3d3-45cb-b481-210d4d0c4073
  */
 
 #define VM_PROXY_MAJOR 1

Modified: branches/Cog/nscogsrc/vm/vmCallback.h
===================================================================
--- branches/Cog/nscogsrc/vm/vmCallback.h	2014-02-23 15:51:51 UTC (rev 2870)
+++ branches/Cog/nscogsrc/vm/vmCallback.h	2014-03-01 15:54:53 UTC (rev 2871)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.620 uuid: 0c6991e0-acb5-4250-84d8-cdeebfac41e9
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.624 uuid: 7671143a-d3d3-45cb-b481-210d4d0c4073
  */
 
 #define VM_CALLBACK_INC 1

Added: branches/Cog/nsspursrc/examplePlugins.ext
===================================================================
--- branches/Cog/nsspursrc/examplePlugins.ext	                        (rev 0)
+++ branches/Cog/nsspursrc/examplePlugins.ext	2014-03-01 15:54:53 UTC (rev 2871)
@@ -0,0 +1,4 @@
+# This is an example external plugin list.
+# Edit plugins.ext in vm build dir to specify the external plugins to be built.
+EXTERNAL_PLUGINS = \
+SqueakSSL

Added: branches/Cog/nsspursrc/examplePlugins.int
===================================================================
--- branches/Cog/nsspursrc/examplePlugins.int	                        (rev 0)
+++ branches/Cog/nsspursrc/examplePlugins.int	2014-03-01 15:54:53 UTC (rev 2871)
@@ -0,0 +1,28 @@
+# This is an example internal plugin list.
+# Edit plugins.int in vm build dir to specify internal plugins to be built and
+# linked into the vm.
+INTERNAL_PLUGINS = \
+AsynchFilePlugin \
+BMPReadWriterPlugin \
+B2DPlugin \
+BitBltPlugin \
+DSAPrims \
+DropPlugin \
+FileCopyPlugin \
+FilePlugin \
+FloatArrayPlugin \
+FloatMathPlugin \
+ZipPlugin \
+JPEGReadWriter2Plugin \
+JPEGReaderPlugin \
+LargeIntegers \
+Matrix2x3Plugin \
+MiscPrimitivePlugin \
+IA32ABI \
+RePlugin \
+SecurityPlugin \
+SocketPlugin \
+SurfacePlugin \
+UUIDPlugin \
+UnixOSProcessPlugin \
+VMProfileMacSupportPlugin

Added: branches/Cog/nsspursrc/vm/cogit.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.c	                        (rev 0)
+++ branches/Cog/nsspursrc/vm/cogit.c	2014-03-01 15:54:53 UTC (rev 2871)
@@ -0,0 +1,22420 @@
+/* Automatically generated by
+	CCodeGenerator VMMaker.oscog-eem.622 uuid: 7a33af68-b347-4a24-b960-e8755f7c49f3
+   from
+	StackToRegisterMappingCogit VMMaker.oscog-eem.622 uuid: 7a33af68-b347-4a24-b960-e8755f7c49f3
+ */
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.622 uuid: 7a33af68-b347-4a24-b960-e8755f7c49f3 " __DATE__ ;
+char *__cogitBuildInfo = __buildInfo;
+
+
+
+#include <stddef.h>
+#include "sq.h"
+#include "sqCogStackAlignment.h"
+#include "cogmethod.h"
+#if COGMTVM
+#include "cointerpmt.h"
+#else
+#include "cointerp.h"
+#endif
+#include "cogit.h"
+#include "dispdbg.h"
+
+typedef struct _AbstractInstruction {
+	char	opcode;
+	char	machineCodeSize;
+	char	maxSize;
+	unsigned long		operands [3];
+	unsigned long	address;
+	struct _AbstractInstruction *dependent;
+	unsigned char		machineCode [10];
+ } AbstractInstruction;
+
+#define CogIA32Compiler AbstractInstruction
+
+
+typedef struct {
+	AbstractInstruction *fakeHeader;
+	AbstractInstruction *fillInstruction;
+	sqInt	numArgs;
+	sqInt	numCopied;
+	sqInt	numInitialNils;
+	sqInt	startpc;
+	AbstractInstruction *entryLabel;
+	AbstractInstruction *stackCheckLabel;
+	sqInt	span;
+ } BlockStart;
+
+#define CogBlockStart BlockStart
+
+
+typedef struct _BytecodeDescriptor {
+	sqInt (*generator )(void);
+	sqInt (*spanFunction )(struct _BytecodeDescriptor *,sqInt,sqInt,sqInt);
+	sqInt (*needsFrameFunction )(sqInt);
+	signed char	stackDelta;
+	unsigned char	opcode;
+	unsigned char	numBytes;
+	unsigned		isBranchTrue : 1;
+	unsigned		isBranchFalse : 1;
+	unsigned		isReturn : 1;
+	unsigned		isBlockCreation : 1;
+	unsigned		isMapped : 1;
+	unsigned		isMappedInBlock : 1;
+	unsigned		isExtension : 1;
+ } BytecodeDescriptor;
+
+#define CogBytecodeDescriptor BytecodeDescriptor
+
+
+typedef struct {
+	sqInt	annotation;
+	AbstractInstruction *instruction;
+ } InstructionAnnotation;
+
+#define CogInstructionAnnotation InstructionAnnotation
+
+
+typedef struct {
+	sqInt (*primitiveGenerator )(void);
+	sqInt	primNumArgs;
+	sqInt (*enabled )(sqInt);
+ } PrimitiveDescriptor;
+
+#define CogPrimitiveDescriptor PrimitiveDescriptor
+
+
+typedef struct {
+	AbstractInstruction *targetInstruction;
+	sqInt	instructionIndex;
+	sqInt	simStackPtr;
+ } BytecodeFixup;
+
+#define CogSSBytecodeFixup BytecodeFixup
+
+
+typedef struct {
+	char	type;
+	char	spilled;
+	char	annotateUse;
+	sqInt	registerr;
+	sqInt	offset;
+	sqInt	constant;
+	sqInt	bcptr;
+ } CogSimStackEntry;
+
+
+typedef struct {
+	sqInt	isReceiverResultRegLive;
+	CogSimStackEntry *ssEntry;
+ } CogSSOptStatus;
+
+
+
+/*** Constants ***/
+#define AddCqR 85
+#define AddCwR 92
+#define AddRdRd 99
+#define AddRR 78
+#define AlignmentNops 2
+#define AltBlockCreationBytecodeSize 3
+#define AltNSSendIsPCAnnotated 0
+#define AndCqR 87
+#define AndCwR 94
+#define AndRR 80
+#define AnnotationShift 5
+#define Arg0Reg -7
+#define Arg1Reg -8
+#define ArithmeticShiftRightCqR 71
+#define ArithmeticShiftRightRR 72
+#define BadRegisterSet 1
+#define BlockCreationBytecodeSize 4
+#define Call 9
+#define CDQ 105
+#define ClassMethodContextCompactIndex 36
+#define ClassReg -5
+#define ClosureFirstCopiedValueIndex 3
+#define ClosureNumArgsIndex 2
+#define ClosureOuterContextIndex 0
+#define ClosureStartPCIndex 1
+#define CMBlock 3
+#define CMClosedPIC 4
+#define CMFree 1
+#define CMMaxUsageCount 7
+#define CMMethod 2
+#define CMOpenPIC 5
+#define CMPXCHGAwR 113
+#define CMPXCHGMwrR 114
+#define CmpCqR 84
+#define CmpCwR 91
+#define CmpRdRd 98
+#define CmpRR 77
+#define ConstZero 1
+#define ConvertRRd 104
+#define CPUID 108
+#define Debug DEBUGVM
+#define DisplacementMask 0x1F
+#define DisplacementX2N 32
+#define DivRdRd 102
+#define DPFPReg0 -9
+#define DPFPReg1 -10
+#define DPFPReg2 -11
+#define DPFPReg3 -12
+#define DPFPReg4 -13
+#define DPFPReg5 -14
+#define DPFPReg6 -15
+#define DPFPReg7 -16
+#define EAX 0
+#define EBP 5
+#define EBX 3
+#define ECX 1
+#define EDI 7
+#define EDX 2
+#define EncounteredUnknownBytecode -6
+#define ESI 6
+#define ESP 4
+#define Fill16 5
+#define Fill32 6
+#define FillFromWord 7
+#define FirstAnnotation 64
+#define FirstJump 12
+#define FirstShortJump 15
+#define FoxCallerSavedIP 4
+#define FoxMethod -4
+#define FoxMFReceiver -12
+#define FoxThisContext -8
+#define FPReg -1
+#define GCModeBecome 4
+#define GCModeFull 1
+#define GCModeIncr 2
+#define GCModeScavenge 3
+#define GPRegMax -3
+#define GPRegMin -8
+#define HasBytecodePC 5
+#define HeaderIndex 0
+#define IDIVR 106
+#define IMULRR 107
+#define InstanceSpecificationIndex 2
+#define InstructionPointerIndex 1
+#define InsufficientCodeSpace -2
+#define IsAbsPCReference 4
+#define IsDisplacementX2N 1
+#define IsNSSendCall 2
+#define IsObjectReference 3
+#define IsRelativeCall 6
+#define IsSendCall 7
+#define Jump 15
+#define JumpAbove 30
+#define JumpAboveOrEqual 29
+#define JumpBelow 28
+#define JumpBelowOrEqual 31
+#define JumpCarry 22
+#define JumpFPEqual 32
+#define JumpFPGreater 36
+#define JumpFPGreaterOrEqual 37
+#define JumpFPLess 34
+#define JumpFPLessOrEqual 35
+#define JumpFPNotEqual 33
+#define JumpFPOrdered 38
+#define JumpFPUnordered 39
+#define JumpGreater 26
+#define JumpGreaterOrEqual 25
+#define JumpLess 24
+#define JumpLessOrEqual 27
+#define JumpLong 12
+#define JumpLongNonZero 14
+#define JumpLongZero 13
+#define JumpNegative 18
+#define JumpNoCarry 23
+#define JumpNonNegative 19
+#define JumpNonZero 17
+#define JumpNoOverflow 21
+#define JumpOverflow 20
+#define JumpR 11
+#define JumpZero 16
+#define Label 1
+#define LastJump 39
+#define LFENCE 109
+#define LinkReg -17
+#define LOCK 112
+#define LoadEffectiveAddressMwrR 69
+#define LogicalShiftLeftCqR 75
+#define LogicalShiftLeftRR 76
+#define LogicalShiftRightCqR 73
+#define LogicalShiftRightRR 74
+#define MapEnd 0
+#define MaxCompiledPrimitiveIndex 222
+#define MaxMethodSize 65535
+#define MaxNegativeErrorCode -7
+#define MaxNumArgs 15
+#define MaxStackAllocSize 1572864
+#define MaxStackCheckOffset 0xFFF
+#define MaxUnitDisplacement 31
+#define MaxX2NDisplacement 992
+#define MethodCacheClass 2
+#define MethodCacheMask 0xFFC
+#define MethodCacheMethod 3
+#define MethodCacheSelector 1
+#define MethodIndex 3
+#define MethodTooBig -4
+#define MFENCE 110
+#define MFMethodFlagHasContextFlag 1
+#define MFMethodFlagIsBlockFlag 2
+#define ModReg 3
+#define ModRegInd 0
+#define ModRegRegDisp32 2
+#define ModRegRegDisp8 1
+#define MoveAwR 41
+#define MoveCqR 58
+#define MoveCwR 59
+#define MoveM16rR 50
+#define MoveM64rRd 63
+#define MoveMbrR 54
+#define MoveMwrR 44
+#define MoveRAw 42
+#define MoveRdM64r 64
+#define MoveRdRd 62
+#define MoveRMbr 55
+#define MoveRMwr 45
+#define MoveRR 40
+#define MoveRXbrR 57
+#define MoveRXwrR 47
+#define MoveXbrRR 56
+#define MoveXwrRR 46
+#define MULTIPLEBYTECODESETS 1
+#define MulRdRd 101
+#define NegateR 70
+#define NewspeakVM 1
+#define Nop 8
+#define NotFullyInitialized -1
+#define NSSendIsPCAnnotated 1
+#define NumObjRefsInRuntime 2
+#define NumSendTrampolines 4
+#define NumTrampolines 58
+#define OrCqR 88
+#define OrCwR 95
+#define OrRR 81
+#define PopR 65
+#define PrefetchAw 68
+#define PrimCallCollectsProfileSamples 8
+#define PrimCallMayCallBack 4
+#define PrimCallNeedsNewMethod 1
+#define PrimCallNeedsPrimitiveFunction 2
+#define PushCw 67
+#define PushR 66
+#define ReceiverIndex 5
+#define ReceiverResultReg -3
+#define RetN 10
+#define SelectorCannotInterpret 34
+#define SelectorDoesNotUnderstand 20
+#define SenderIndex 0
+#define SendNumArgsReg -6
+#define SFENCE 111
+#define ShiftForWord 2
+#define SIB1 0
+#define SIB4 2
+#define SPReg -2
+#define SqrtRd 103
+#define SSBaseOffset 1
+#define SSConstant 2
+#define SSRegister 3
+#define SSSpill 4
+#define SubCqR 86
+#define SubCwR 93
+#define SubRdRd 100
+#define SubRR 79
+#define TempReg -4
+#define UnimplementedPrimitive -7
+#define ValueIndex 1
+#define XCHGAwR 115
+#define XCHGMwrR 116
+#define XCHGRR 117
+#define XMM0L 0
+#define XMM1L 2
+#define XMM2L 4
+#define XMM3L 6
+#define XMM4L 8
+#define XMM5L 10
+#define XMM6L 12
+#define XMM7L 14
+#define XorCwR 96
+#define XorRR 82
+#define YoungSelectorInPIC -5
+
+
+/*** Function Prototypes ***/
+static AbstractInstruction * gAndCqR(sqInt quickConstant, sqInt reg);
+static AbstractInstruction * gArithmeticShiftRightRR(sqInt reg1, sqInt reg2);
+sqInt abortOffset(void);
+static sqInt abstractInstructionfollows(AbstractInstruction *theAbstractInstruction, AbstractInstruction *anAbstractInstruction);
+static sqInt abstractRegisterForConcreteRegister(AbstractInstruction * self_in_abstractRegisterForConcreteRegister, sqInt reg);
+static BlockStart * addBlockStartAtnumArgsnumCopiedspan(sqInt bytecodepc, sqInt numArgs, sqInt numCopied, sqInt span);
+static void addCleanBlockStarts(void);
+void addCogMethodsToHeapMap(void);
+static AbstractInstruction * addDependent(AbstractInstruction * self_in_addDependent, AbstractInstruction *anInstruction);
+static sqInt addressIsInFixups(AbstractInstruction *address);
+static sqInt addressIsInInstructions(AbstractInstruction *address);
+static sqInt addressOfEndOfCaseinCPIC(sqInt n, CogMethod *cPIC);
+static void addToOpenPICList(CogMethod *anOpenPIC);
+static void addToUnpairedMethodList(CogMethod *aCogMethod);
+static void addToYoungReferrers(CogMethod *cogMethod);
+static sqInt alignUptoRoutineBoundary(sqInt anAddress);
+static sqInt allMachineCodeObjectReferencesValid(void);
+static sqInt allMethodsHaveCorrectHeader(void);
+static sqInt allocate(sqInt numBytes);
+static sqInt allYoungObjectsAgeInFullGC(void);
+static AbstractInstruction * annotateAbsolutePCRef(AbstractInstruction *abstractInstruction);
+static void annotateBytecodeIfAnnotated(CogSimStackEntry *aSimStackEntry);
+static AbstractInstruction * annotateBytecode(AbstractInstruction *abstractInstruction);
+static AbstractInstruction * annotateobjRef(AbstractInstruction *abstractInstruction, sqInt anOop);
+static AbstractInstruction * annotatewith(AbstractInstruction *abstractInstruction, sqInt annotationFlag);
+static sqInt anyReferencesToRegisterinTopNItems(sqInt reg, sqInt n);
+static void assertSaneJumpTarget(AbstractInstruction *jumpTarget);
+static sqInt availableRegisterOrNil(void);
+static sqInt blockCreationBytecodeSizeForHeader(sqInt methodHeader);
+static sqInt blockDispatchTargetsForperformarg(CogMethod *cogMethod, usqInt (*binaryFunction)(sqInt mcpc, sqInt arg), sqInt arg);
+sqInt bytecodePCForstartBcpcin(sqInt mcpc, sqInt startbcpc, CogBlockMethod *cogMethod);
+static AbstractInstruction * CallNewspeakSend(sqInt callTarget);
+static AbstractInstruction * CallRT(sqInt callTarget);
+static AbstractInstruction * CallSend(sqInt callTarget);
+static AbstractInstruction * gCmpCqR(sqInt quickConstant, sqInt reg);
+static AbstractInstruction * gCmpCwR(sqInt wordConstant, sqInt reg);
+static AbstractInstruction * gCmpRR(sqInt reg1, sqInt reg2);
+static sqInt cacheTagIsMarked(sqInt cacheTag);
+static sqInt callerSavedRegisterMask(AbstractInstruction * self_in_callerSavedRegisterMask);
+static sqInt callInstructionByteSize(AbstractInstruction * self_in_callInstructionByteSize);
+static sqInt callPrimitiveBytecode(void);
+static sqInt callsAreRelative(AbstractInstruction * self_in_callsAreRelative);
+static sqInt callTargetFromReturnAddress(AbstractInstruction * self_in_callTargetFromReturnAddress, sqInt callSiteReturnAddress);
+static sqInt canDivQuoRem(AbstractInstruction * self_in_canDivQuoRem);
+static sqInt canMulRR(AbstractInstruction * self_in_canMulRR);
+static sqInt ceClosureCopyDescriptor(sqInt descriptor);
+sqInt ceCPICMissreceiver(CogMethod *cPIC, sqInt receiver);
+static sqInt ceImplicitReceiverForreceiverclass(sqInt selector, sqInt receiver, sqInt rcvrClass);
+sqInt ceSICMiss(sqInt receiver);
+void checkAssertsEnabledInCogit(void);
+static sqInt checkIfValidObjectRefAndTargetpccogMethod(sqInt annotation, char *mcpc, sqInt cogMethod);
+static sqInt checkIfValidObjectRefpccogMethod(sqInt annotation, char *mcpc, sqInt cogMethod);
+sqInt checkIntegrityOfObjectReferencesInCode(sqInt fullGCFlag);
+static sqInt checkMaybeObjRefAt(sqInt mcpc);
+static void checkPrimitiveTableEnablers(void);
+static sqInt checkValidInlineCacheTag(sqInt classIndexOrTagPattern);
+static sqInt checkValidObjectReferencesInClosedPIC(CogMethod *cPIC);
+static sqInt checkValidObjectReference(sqInt anOop);
+static void clearCogCompiledCode(void);
+static sqInt closedPICRefersToUnmarkedObject(CogMethod *cPIC);
+static CogMethod * cmHomeMethod(CogBlockMethod * self_in_cmHomeMethod);
+char * codeEntryFor(char *address);
+char * codeEntryNameFor(char *address);
+sqInt cogCodeBase(void);
+sqInt cogCodeConstituents(void);
+static sqInt cogExtendPICCaseNMethodtagisMNUCase(CogMethod *cPIC, sqInt caseNMethod, sqInt caseNTag, sqInt isMNUCase);
+void cogitPostGCAction(sqInt gcMode);
+sqInt cogMethodDoesntLookKosher(CogMethod *cogMethod);
+CogMethod * cogMNUPICSelectormethodOperandnumArgs(sqInt selector, sqInt methodOperand, sqInt numArgs);
+static CogMethod * cogOpenPICSelectornumArgs(sqInt selector, sqInt numArgs);
+static CogMethod * cogPICSelectornumArgsCase0MethodCase1MethodtagisMNUCase(sqInt selector, sqInt numArgs, CogMethod *case0CogMethod, sqInt case1MethodOrNil, sqInt case1Tag, sqInt isMNUCase);
+CogMethod * cogselector(sqInt aMethodObj, sqInt aSelectorOop);
+void compactCogCompiledCode(void);
+static void compactCompiledCode(void);
+static void compileAbort(void);
+static sqInt compileAbstractInstructionsFromthrough(sqInt start, sqInt end);
+static sqInt compileBlockBodies(void);
+static sqInt compileBlockDispatch(void);
+static sqInt compileBlockDispatchFromto(sqInt lowBlockStartIndex, sqInt highBlockStartIndex);
+static void compileBlockEntry(BlockStart *blockStart);
+static void compileBlockFrameBuild(BlockStart *blockStart);
+static void compileBlockFramelessEntry(BlockStart *blockStart);
+static sqInt compileClosedPICPrototype(void);
+static CogMethod * compileCogMethod(sqInt selector);
+static AbstractInstruction * compileCPICEntry(void);
+static sqInt compileCPICCase0Case1MethodtagisMNUCasenumArgs(CogMethod *cPIC, CogMethod *case0CogMethod, sqInt case1Method, sqInt case1Tag, sqInt isMNUCase, sqInt numArgs);
+static sqInt compileEntireMethod(void);
+static void compileEntry(void);
+static sqInt compileFallbackToInterpreterPrimitive(void);
+static sqInt compileFrameBuild(void);
+static void compileGetErrorCode(void);
+static sqInt compileInterpreterPrimitive(void (*primitiveRoutine)(void));
+static sqInt compileMethodBody(void);
+static sqInt compileMNUCPICmethodOperandnumArgs(CogMethod *cPIC, sqInt methodOperand, sqInt numArgs);
+static void compileOpenPICnumArgs(sqInt selector, sqInt numArgs);
+static sqInt compilePICProlog(sqInt numArgs);
+static sqInt compilePrimitive(void);
+static void compileTrampolineForcallJumpBarnumArgsargargargargsaveRegsresultReg(void *aRoutine, sqInt callJumpBar, sqInt numArgs, sqInt regOrConst0, sqInt regOrConst1, sqInt regOrConst2, sqInt regOrConst3, sqInt saveRegs, sqInt resultRegOrNil);
+static void computeEntryOffsets(void);
+static sqInt computeJumpTargetOffsetPlus(AbstractInstruction * self_in_computeJumpTargetOffsetPlus, sqInt anPCOffset);
+static sqInt computeMaximumSize(AbstractInstruction * self_in_computeMaximumSize);
+static void computeMaximumSizes(void);
+static sqInt computeShiftRRSize(AbstractInstruction * self_in_computeShiftRRSize);
+static sqInt concreteDPFPRegister(AbstractInstruction * self_in_concreteDPFPRegister, sqInt registerIndex);
+static sqInt concreteRegister(AbstractInstruction * self_in_concreteRegister, sqInt registerIndex);
+static sqInt concretizeAddCqR(AbstractInstruction * self_in_concretizeAddCqR);
+static sqInt concretizeAddCwR(AbstractInstruction * self_in_concretizeAddCwR);
+static sqInt concretizeAddRR(AbstractInstruction * self_in_concretizeAddRR);
+static AbstractInstruction * concretizeAlignmentNops(AbstractInstruction * self_in_concretizeAlignmentNops);
+static sqInt concretizeAndCqR(AbstractInstruction * self_in_concretizeAndCqR);
+static sqInt concretizeAndCwR(AbstractInstruction * self_in_concretizeAndCwR);
+static sqInt concretizeAndRR(AbstractInstruction * self_in_concretizeAndRR);
+static sqInt concretizeArithmeticShiftRightCqR(AbstractInstruction * self_in_concretizeArithmeticShiftRightCqR);
+static sqInt concretizeArithmeticShiftRightRR(AbstractInstruction * self_in_concretizeArithmeticShiftRightRR);
+static sqInt concretizeAt(AbstractInstruction * self_in_concretizeAt, sqInt actualAddress);
+static sqInt concretizeCall(AbstractInstruction * self_in_concretizeCall);
+static sqInt concretizeCDQ(AbstractInstruction * self_in_concretizeCDQ);
+static sqInt concretizeCMPXCHGAwR(AbstractInstruction * self_in_concretizeCMPXCHGAwR);
+static sqInt concretizeCMPXCHGMwrR(AbstractInstruction * self_in_concretizeCMPXCHGMwrR);
+static sqInt concretizeCmpCqR(AbstractInstruction * self_in_concretizeCmpCqR);
+static sqInt concretizeCmpCwR(AbstractInstruction * self_in_concretizeCmpCwR);
+static sqInt concretizeCmpRdRd(AbstractInstruction * self_in_concretizeCmpRdRd);
+static sqInt concretizeCmpRR(AbstractInstruction * self_in_concretizeCmpRR);
+static sqInt concretizeConditionalJumpLong(AbstractInstruction * self_in_concretizeConditionalJumpLong, sqInt conditionCode);
+static sqInt concretizeConditionalJump(AbstractInstruction * self_in_concretizeConditionalJump, sqInt conditionCode);
+static sqInt concretizeConvertRRd(AbstractInstruction * self_in_concretizeConvertRRd);
+static sqInt concretizeCPUID(AbstractInstruction * self_in_concretizeCPUID);
+static sqInt concretizeFENCE(AbstractInstruction * self_in_concretizeFENCE, sqInt regOpcode);
+static sqInt concretizeFill16(AbstractInstruction * self_in_concretizeFill16);
+static sqInt concretizeFill32(AbstractInstruction * self_in_concretizeFill32);
+static sqInt concretizeFillFromWord(AbstractInstruction * self_in_concretizeFillFromWord);
+static sqInt concretizeIDIVR(AbstractInstruction * self_in_concretizeIDIVR);
+static sqInt concretizeJump(AbstractInstruction * self_in_concretizeJump);
+static sqInt concretizeJumpLong(AbstractInstruction * self_in_concretizeJumpLong);
+static sqInt concretizeJumpR(AbstractInstruction * self_in_concretizeJumpR);
+static sqInt concretizeLabel(AbstractInstruction * self_in_concretizeLabel);
+static sqInt concretizeLOCK(AbstractInstruction * self_in_concretizeLOCK);
+static sqInt concretizeLoadEffectiveAddressMwrR(AbstractInstruction * self_in_concretizeLoadEffectiveAddressMwrR);
+static sqInt concretizeLogicalShiftLeftCqR(AbstractInstruction * self_in_concretizeLogicalShiftLeftCqR);
+static sqInt concretizeLogicalShiftLeftRR(AbstractInstruction * self_in_concretizeLogicalShiftLeftRR);
+static sqInt concretizeLogicalShiftRightCqR(AbstractInstruction * self_in_concretizeLogicalShiftRightCqR);
+static sqInt concretizeMoveAwR(AbstractInstruction * self_in_concretizeMoveAwR);
+static sqInt concretizeMoveCqR(AbstractInstruction * self_in_concretizeMoveCqR);
+static sqInt concretizeMoveCwR(AbstractInstruction * self_in_concretizeMoveCwR);
+static sqInt concretizeMoveM16rR(AbstractInstruction * self_in_concretizeMoveM16rR);
+static sqInt concretizeMoveM64rRd(AbstractInstruction * self_in_concretizeMoveM64rRd);
+static sqInt concretizeMoveMbrR(AbstractInstruction * self_in_concretizeMoveMbrR);
+static sqInt concretizeMoveMwrR(AbstractInstruction * self_in_concretizeMoveMwrR);
+static sqInt concretizeMoveRAw(AbstractInstruction * self_in_concretizeMoveRAw);
+static sqInt concretizeMoveRdM64r(AbstractInstruction * self_in_concretizeMoveRdM64r);
+static sqInt concretizeMoveRMbr(AbstractInstruction * self_in_concretizeMoveRMbr);
+static sqInt concretizeMoveRMwr(AbstractInstruction * self_in_concretizeMoveRMwr);
+static sqInt concretizeMoveRR(AbstractInstruction * self_in_concretizeMoveRR);
+static sqInt concretizeMoveRXbrR(AbstractInstruction * self_in_concretizeMoveRXbrR);
+static sqInt concretizeMoveRXwrR(AbstractInstruction * self_in_concretizeMoveRXwrR);
+static sqInt concretizeMoveXbrRR(AbstractInstruction * self_in_concretizeMoveXbrRR);
+static sqInt concretizeMoveXwrRR(AbstractInstruction * self_in_concretizeMoveXwrRR);
+static sqInt concretizeMulRR(AbstractInstruction * self_in_concretizeMulRR);
+static sqInt concretizeNegateR(AbstractInstruction * self_in_concretizeNegateR);
+static sqInt concretizeNop(AbstractInstruction * self_in_concretizeNop);
+static sqInt concretizeOrCqR(AbstractInstruction * self_in_concretizeOrCqR);
+static sqInt concretizeOrCwR(AbstractInstruction * self_in_concretizeOrCwR);
+static sqInt concretizeOrRR(AbstractInstruction * self_in_concretizeOrRR);
+static sqInt concretizePopR(AbstractInstruction * self_in_concretizePopR);
+static sqInt concretizePrefetchAw(AbstractInstruction * self_in_concretizePrefetchAw);
+static sqInt concretizePushCw(AbstractInstruction * self_in_concretizePushCw);
+static sqInt concretizePushR(AbstractInstruction * self_in_concretizePushR);
+static sqInt concretizeRetN(AbstractInstruction * self_in_concretizeRetN);
+static sqInt concretizeSEE2OpRdRd(AbstractInstruction * self_in_concretizeSEE2OpRdRd, sqInt opCode);
+static sqInt concretizeSqrtRd(AbstractInstruction * self_in_concretizeSqrtRd);
+static sqInt concretizeSubCqR(AbstractInstruction * self_in_concretizeSubCqR);
+static sqInt concretizeSubCwR(AbstractInstruction * self_in_concretizeSubCwR);
+static sqInt concretizeSubRR(AbstractInstruction * self_in_concretizeSubRR);
+static sqInt concretizeXCHGAwR(AbstractInstruction * self_in_concretizeXCHGAwR);
+static sqInt concretizeXCHGMwrR(AbstractInstruction * self_in_concretizeXCHGMwrR);
+static sqInt concretizeXCHGRR(AbstractInstruction * self_in_concretizeXCHGRR);
+static sqInt concretizeXorCwR(AbstractInstruction * self_in_concretizeXorCwR);
+static sqInt concretizeXorRR(AbstractInstruction * self_in_concretizeXorRR);
+static sqInt couldBeObject(sqInt literal);
+static sqInt counterTargetFromFollowingAddress(AbstractInstruction * self_in_counterTargetFromFollowingAddress, sqInt nextInstructionAddress);
+static sqInt cPICHasFreedTargets(CogMethod *cPIC);
+static sqInt cPICMissTrampolineFor(sqInt numArgs);
+static sqInt cPICHasTarget(CogMethod *cPIC, CogMethod *targetMethod);
+static sqInt cResultRegister(AbstractInstruction * self_in_cResultRegister);
+static AbstractInstruction * gDivRRQuoRem(sqInt rDivisor, sqInt rDividend, sqInt rQuotient, sqInt rRemainder);
+static void dispatchConcretize(AbstractInstruction * self_in_dispatchConcretize);
+static sqInt doubleExtendedDoAnythingBytecode(void);
+static sqInt duplicateTopBytecode(void);
+static sqInt endPCOf(sqInt aMethod);
+static BytecodeFixup * ensureFixupAt(sqInt targetIndex);
+static BytecodeFixup * ensureNonMergeFixupAt(sqInt targetIndex);
+static void ensureReceiverResultRegContainsSelf(void);
+static CogSimStackEntry * ensureSpilledAtfrom(CogSimStackEntry * self_in_ensureSpilledAtfrom, sqInt baseOffset, sqInt baseRegister);
+void enterCogCodePopReceiver(void);
+void enterCogCodePopReceiverAndClassRegs(void);
+void enterCogCodePopReceiverArg0Regs(void);
+void enterCogCodePopReceiverArg1Arg0Regs(void);
+static sqInt extABytecode(void);
+static sqInt extBBytecode(void);
+static sqInt extendedPushBytecode(void);
+static sqInt extendedStoreAndPopBytecode(void);
+static sqInt extendedStoreBytecode(void);
+static sqInt fillInBlockHeadersAt(sqInt startAddress);
+static CogMethod * fillInCPICHeadersizenumArgsnumCaseshasMNUCaseselector(CogMethod *pic, sqInt size, sqInt numArgs, sqInt numCases, sqInt hasMNUCase, sqInt selector);
+static CogMethod * fillInMethodHeadersizeselector(CogMethod *method, sqInt size, sqInt selector);
+static CogMethod * fillInOPICHeadersizenumArgsselector(CogMethod *pic, sqInt size, sqInt numArgs, sqInt selector);
+static usqInt findBlockMethodWithEntrystartBcpc(sqInt blockEntryMcpc, sqInt startBcpc);
+static sqInt findMapLocationForMcpcinMethod(sqInt targetMcpc, CogMethod *cogMethod);
+static sqInt findMcpcBcpcMatchingBcpc(char *mcpc, sqInt bcpc, void *targetBcpc);
+static sqInt findMcpcBcpcMatchingMcpc(char *mcpc, sqInt bcpc, void *targetMcpc);
+CogBlockMethod * findMethodForStartBcpcinHomeMethod(sqInt startbcpc, CogMethod *cogMethod);
+static CogMethod * findPreviouslyCompiledVersionOfwith(sqInt aMethodObj, sqInt aSelectorOop);
+void followForwardedLiteralsIn(CogMethod *cogMethod);
+void followForwardedMethods(void);
+static sqInt followMaybeObjRefAt(sqInt mcpc);
+static sqInt followMethodReferencesInClosedPIC(CogMethod *cPIC);
+static sqInt frameOffsetOfTemporary(sqInt index);
+static void freeMethod(CogMethod *cogMethod);
+static void freeOlderMethodsForCompaction(void);
+static void freePICsWithFreedTargets(void);
+static sqInt genActiveContextTrampoline(void);
+static sqInt genAddSmallIntegerTagsTo(sqInt aRegister);
+static sqInt genAlignCStackSavingRegistersnumArgswordAlignment(AbstractInstruction * self_in_genAlignCStackSavingRegistersnumArgswordAlignment, sqInt saveRegs, sqInt numArgs, sqInt alignment);
+static AbstractInstruction * genAllocFloatValueintoscratchRegscratchReg(sqInt dpreg, sqInt resultReg, sqInt scratch1, sqInt scratch2);
+static sqInt genCheckForInterruptsTrampoline(void);
+static sqInt genConvertCharacterToCodeInReg(sqInt reg);
+static void genConvertCharacterToSmallIntegerInReg(sqInt reg);
+static sqInt genConvertIntegerToCharacterInReg(sqInt reg);
+static sqInt genConvertIntegerToSmallIntegerInReg(sqInt reg);
+static sqInt genConvertIntegerToSmallIntegerInScratchReg(sqInt scratchReg);
+static void genConvertSmallIntegerToCharacterInReg(sqInt reg);
+static sqInt genConvertSmallIntegerToIntegerInReg(sqInt reg);
+static AbstractInstruction * genDivRRQuoRem(AbstractInstruction * self_in_genDivRRQuoRem, sqInt abstractRegDivisor, sqInt abstractRegDividend, sqInt abstractRegQuotient, sqInt abstractRegRemainder);
+static sqInt genDoubleArithmeticpreOpCheck(sqInt arithmeticOperator, AbstractInstruction *(*preOpCheckOrNil)(int rcvrReg, int argReg));
+static sqInt genDoubleComparisoninvert(AbstractInstruction *(*jumpOpcodeGenerator)(void *), sqInt invertComparison);
+static AbstractInstruction * genDoubleFailIfZeroArgRcvrarg(sqInt rcvrReg, sqInt argReg);
+static sqInt genDynamicSuperSendBytecode(void);
+static void (*genEnilopmartForandandcalled(sqInt regArg1, sqInt regArg2, sqInt regArg3, char *trampolineName))(void) ;
+static void (*genEnilopmartForandcalled(sqInt regArg1, sqInt regArg2, char *trampolineName))(void) ;
+static void (*genEnilopmartForcalled(sqInt regArg, char *trampolineName))(void) ;
+static sqInt genEnsureObjInRegNotForwardedscratchReg(sqInt reg, sqInt scratch);
+static void (*genEnterPICEnilopmartNumArgs(sqInt numArgs))(void) ;
+static sqInt genExtendedSendBytecode(void);
+static sqInt genExtendedSuperBytecode(void);
+static sqInt genExternalizePointersForPrimitiveCall(void);
+static sqInt genExtJumpIfFalse(void);
+static sqInt genExtJumpIfTrue(void);
+static sqInt genExtNopBytecode(void);
+static sqInt genExtPushClosureBytecode(void);
+static sqInt genExtPushIntegerBytecode(void);
+static sqInt genExtPushLiteralBytecode(void);
+static sqInt genExtPushLiteralVariableBytecode(void);
+static sqInt genExtPushPseudoVariableOrOuterBytecode(void);
+static sqInt genExtPushReceiverVariableBytecode(void);
+static sqInt genExtReturnTopFromBlock(void);
+static sqInt genExtSendAbsentDynamicSuperBytecode(void);
+static sqInt genExtSendAbsentImplicitBytecode(void);
+static sqInt genExtSendBytecode(void);
+static sqInt genExtSendSuperBytecode(void);
+static sqInt genExtStoreAndPopLiteralVariableBytecode(void);
+static sqInt genExtStoreAndPopReceiverVariableBytecode(void);
+static sqInt genExtStoreLiteralVariableBytecode(void);
+static sqInt genExtStoreReceiverVariableBytecode(void);
+static sqInt genExtUnconditionalJump(void);
+static void generateCaptureCStackPointers(sqInt captureFramePointer);
+static AbstractInstruction * generateCheckFeatures(AbstractInstruction * self_in_generateCheckFeatures);
+static void generateClosedPICPrototype(void);
+static CogMethod * generateCogMethod(sqInt selector);
+static void generateEnilopmarts(void);
+static AbstractInstruction * generateICacheFlush(AbstractInstruction * self_in_generateICacheFlush);
+static sqInt generateInstructionsAt(sqInt eventualAbsoluteAddress);
+static AbstractInstruction * generateLowLevelTryLock(AbstractInstruction * self_in_generateLowLevelTryLock, sqInt vmOwnerLockAddress);
+static AbstractInstruction * generateLowLevelUnlock(AbstractInstruction * self_in_generateLowLevelUnlock, sqInt vmOwnerLockAddress);
+static sqInt generateMapAtstart(sqInt addressOrNull, sqInt startAddress);
+static void generateMissAbortTrampolines(void);
+static void generateNewspeakRuntime(void);
+static void generateObjectRepresentationTrampolines(void);
+static void generateOpenPICPrototype(void);
+static void generateRunTimeTrampolines(void);
+static void generateSendTrampolines(void);
+static void generateStackPointerCapture(void);
+static void generateTracingTrampolines(void);
+static void generateTrampolines(void);
+static void generateVMOwnerLockFunctions(void);
+static sqInt genFastPrimFail(void);
+static void genFastPrimTraceUsingand(sqInt r1, sqInt r2);
+static sqInt genFetchIndexRegisterfrominto(sqInt indexReg, sqInt tableObj, sqInt destReg);
+static sqInt genFramelessStorePopReceiverVariable(sqInt popBoolean, sqInt slotIndex);
+static sqInt genGetClassIndexOfNonImminto(sqInt sourceReg, sqInt destReg);
+static sqInt genGetClassObjectOfClassIndexintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg);
+static sqInt genGetClassObjectOfintoscratchReginstRegIsReceiver(sqInt instReg, sqInt destReg, sqInt scratchReg, sqInt instRegIsReceiver);
+static AbstractInstruction * genGetClassTagOfintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg);
+static sqInt genGetCompactClassIndexNonImmOfinto(sqInt instReg, sqInt destReg);
+static sqInt genGetDoubleValueOfinto(sqInt srcReg, sqInt destFPReg);
+static sqInt genGetHashFieldNonImmOfasSmallIntegerInto(sqInt instReg, sqInt destReg);
+static sqInt genGetHashFieldNonImmOfinto(sqInt instReg, sqInt destReg);
+static sqInt genGetImplicitReceiverForforPush(sqInt selector, sqInt forPushSendBar);
+static sqInt genGetLeafCallStackPointer(void);
+static AbstractInstruction * genGetLeafCallStackPointerFunction(AbstractInstruction * self_in_genGetLeafCallStackPointerFunction);
+static sqInt genInnerPICAbortTrampoline(char *name);
+static sqInt genInnerPrimitiveAsCharacterinReg(sqInt retNOffset, sqInt reg);
+static sqInt genInnerPrimitiveAtPut(sqInt retNoffset);
+static sqInt genInnerPrimitiveAt(sqInt retNoffset);
+static sqInt genInnerPrimitiveCharacterValue(sqInt retNOffset);
+static sqInt genInnerPrimitiveIdenticalorNotIf(sqInt retNoffset, sqInt orNot);
+static sqInt genInnerPrimitiveIdentityHash(sqInt retNoffset);
+static sqInt genInnerPrimitiveNewMethod(sqInt retNoffset);
+static sqInt genInnerPrimitiveNewWithArg(sqInt retNoffset);
+static sqInt genInnerPrimitiveNew(sqInt retNoffset);
+static sqInt genInnerPrimitiveSize(sqInt retNoffset);
+static sqInt genInnerPrimitiveStringAtPut(sqInt retNoffset);
+static sqInt genInnerPrimitiveStringAt(sqInt retNoffset);
+static sqInt genJumpBackTo(sqInt targetBytecodePC);
+static AbstractInstruction * genJumpFPEqual(AbstractInstruction * self_in_genJumpFPEqual, void *jumpTarget);
+static AbstractInstruction * genJumpFPGreaterOrEqual(AbstractInstruction * self_in_genJumpFPGreaterOrEqual, void *jumpTarget);
+static AbstractInstruction * genJumpFPGreater(AbstractInstruction * self_in_genJumpFPGreater, void *jumpTarget);
+static AbstractInstruction * genJumpFPLessOrEqual(AbstractInstruction * self_in_genJumpFPLessOrEqual, void *jumpTarget);
+static AbstractInstruction * genJumpFPLess(AbstractInstruction * self_in_genJumpFPLess, void *jumpTarget);
+static AbstractInstruction * genJumpFPNotEqual(AbstractInstruction * self_in_genJumpFPNotEqual, void *jumpTarget);
+static sqInt genJumpIfto(sqInt boolean, sqInt targetBytecodePC);
+static AbstractInstruction * genJumpImmediateInScratchReg(sqInt aRegister);
+static AbstractInstruction * genJumpNotCharacterInScratchReg(sqInt reg);
+static AbstractInstruction * genJumpNotSmallIntegerInScratchReg(sqInt aRegister);
+static AbstractInstruction * genJumpSmallIntegerInScratchReg(sqInt aRegister);
+static sqInt genJumpTo(sqInt targetBytecodePC);
+static sqInt genLoadCStackPointers(void);
+static sqInt genLoadCStackPointersForPrimCall(void);
+static sqInt genLoadSlotsourceRegdestReg(sqInt index, sqInt sourceReg, sqInt destReg);
+static sqInt genLoadStackPointers(void);
+static sqInt genLongJumpIfFalse(void);
+static sqInt genLongJumpIfTrue(void);
+static sqInt genLongPushTemporaryVariableBytecode(void);
+static sqInt genLongStoreAndPopTemporaryVariableBytecode(void);
+static sqInt genLongStoreTemporaryVariableBytecode(void);
+static sqInt genLongUnconditionalBackwardJump(void);
+static sqInt genLongUnconditionalForwardJump(void);
+static sqInt genMarshalledSendDynamicSupernumArgs(sqInt selector, sqInt numArgs);
+static sqInt genMarshalledSendSupernumArgs(sqInt selector, sqInt numArgs);
+static sqInt genMarshalledSendnumArgs(sqInt selector, sqInt numArgs);
+static sqInt genMethodAbortTrampolineFor(sqInt numArgs);
+static AbstractInstruction * genMulRR(AbstractInstruction * self_in_genMulRR, sqInt regSource, sqInt regDest);
+static sqInt genMustBeBooleanTrampolineForcalled(sqInt boolean, char *trampolineName);
+static sqInt genNonLocalReturnTrampoline(void);
+static sqInt genPassConstasArgument(AbstractInstruction * self_in_genPassConstasArgument, sqInt constant, sqInt zeroRelativeArgIndex);
+static sqInt genPassRegasArgument(AbstractInstruction * self_in_genPassRegasArgument, sqInt abstractRegister, sqInt zeroRelativeArgIndex);
+static sqInt genPICAbortTrampolineFor(sqInt numArgs);
+static sqInt genPICMissTrampolineFor(sqInt numArgs);
+static sqInt genPopStackBytecode(void);
+static sqInt genPrimitiveAdd(void);
+static sqInt genPrimitiveAsCharacter(void);

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list