[Vm-dev] [commit][3548] CogVM source as per VMMaker.oscog-eem.1625.

commits at squeakvm.org commits at squeakvm.org
Sat Jan 9 18:55:59 UTC 2016


Revision: 3548
Author:   eliot
Date:     2016-01-09 10:55:57 -0800 (Sat, 09 Jan 2016)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1625.
Fix inclusion of SmallFloat prims.

Modified Paths:
--------------
    branches/Cog/nsspursrc/vm/cogit.h
    branches/Cog/nsspursrc/vm/cogitARMv5.c
    branches/Cog/nsspursrc/vm/cogitIA32.c
    branches/Cog/nsspursrc/vm/cogitMIPSEL.c
    branches/Cog/nsspursrc/vm/cointerp.c
    branches/Cog/nsspursrc/vm/cointerp.h
    branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
    branches/Cog/nsspurstack64src/vm/gcc3x-interp.c
    branches/Cog/nsspurstack64src/vm/interp.c
    branches/Cog/nsspurstacksrc/vm/gcc3x-interp.c
    branches/Cog/nsspurstacksrc/vm/interp.c
    branches/Cog/spur64src/vm/cogit.h
    branches/Cog/spur64src/vm/cogitX64.c
    branches/Cog/spur64src/vm/cointerp.c
    branches/Cog/spur64src/vm/cointerp.h
    branches/Cog/spur64src/vm/gcc3x-cointerp.c
    branches/Cog/spursistasrc/vm/cogit.h
    branches/Cog/spursistasrc/vm/cogitARMv5.c
    branches/Cog/spursistasrc/vm/cogitIA32.c
    branches/Cog/spursistasrc/vm/cogitMIPSEL.c
    branches/Cog/spursistasrc/vm/cointerp.c
    branches/Cog/spursistasrc/vm/cointerp.h
    branches/Cog/spursistasrc/vm/gcc3x-cointerp.c
    branches/Cog/spursrc/vm/cogit.h
    branches/Cog/spursrc/vm/cogitARMv5.c
    branches/Cog/spursrc/vm/cogitIA32.c
    branches/Cog/spursrc/vm/cogitMIPSEL.c
    branches/Cog/spursrc/vm/cointerp.c
    branches/Cog/spursrc/vm/cointerp.h
    branches/Cog/spursrc/vm/gcc3x-cointerp.c
    branches/Cog/spurstack64src/vm/gcc3x-interp.c
    branches/Cog/spurstack64src/vm/interp.c
    branches/Cog/spurstacksrc/vm/gcc3x-interp.c
    branches/Cog/spurstacksrc/vm/interp.c
    branches/Cog/src/vm/cogit.h
    branches/Cog/src/vm/cogitARMv5.c
    branches/Cog/src/vm/cogitIA32.c
    branches/Cog/src/vm/cogitMIPSEL.c

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

Modified: branches/Cog/nsspursrc/vm/cogit.h
===================================================================
--- branches/Cog/nsspursrc/vm/cogit.h	2016-01-09 16:25:07 UTC (rev 3547)
+++ branches/Cog/nsspursrc/vm/cogit.h	2016-01-09 18:55:57 UTC (rev 3548)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1623 uuid: 796c33c7-b025-4e0c-bd4e-1d3fa3d71f22
+	CCodeGenerator VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6
  */
 
 

Modified: branches/Cog/nsspursrc/vm/cogitARMv5.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogitARMv5.c	2016-01-09 16:25:07 UTC (rev 3547)
+++ branches/Cog/nsspursrc/vm/cogitARMv5.c	2016-01-09 18:55:57 UTC (rev 3548)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1621 uuid: 45817ea7-f2d1-4538-bfe4-c748be944bf2
+	CCodeGenerator VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.1621 uuid: 45817ea7-f2d1-4538-bfe4-c748be944bf2
+	StackToRegisterMappingCogit VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1621 uuid: 45817ea7-f2d1-4538-bfe4-c748be944bf2 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6 " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -1021,8 +1021,8 @@
 static sqInt genLongUnconditionalBackwardJump(void);
 static sqInt genLongUnconditionalForwardJump(void);
 static sqInt NoDbgRegParms genLookupForPerformNumArgs(sqInt numArgs);
-static AbstractInstruction * NoDbgRegParms genMoveConstantR(sqInt constant, sqInt reg);
-static sqInt NoDbgRegParms genMoveTrueR(sqInt reg);
+static AbstractInstruction * NoDbgRegParms genMoveFalseR(sqInt reg);
+static AbstractInstruction * NoDbgRegParms genMoveTrueR(sqInt reg);
 static sqInt NoDbgRegParms genMustBeBooleanTrampolineForcalled(sqInt boolean, char *trampolineName);
 static void NoDbgRegParms genPrimReturnEnterCogCodeEnilopmart(sqInt profiling);
 static sqInt genPushClosureTempsBytecode(void);
@@ -10565,12 +10565,12 @@
 generateMapAtstart(sqInt addressOrNull, sqInt startAddress)
 {
     unsigned char annotation;
-    usqInt delta;
+    sqInt delta;
     sqInt i;
     AbstractInstruction *instruction;
     sqInt length;
-    usqInt location;
-    usqInt mapEntry;
+    sqInt location;
+    sqInt mapEntry;
     sqInt maxDelta;
     usqInt mcpc;
 
@@ -15623,7 +15623,7 @@
 
 	/* FP jumps are a little weird */
 	jumpCond = jumpOpcodeGenerator(0);
-	/* begin genMoveConstant:R: */
+	/* begin genMoveFalseR: */
 	constant = falseObject();
 	if (shouldAnnotateObjectReference(constant)) {
 		annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
@@ -15639,7 +15639,7 @@
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
 	genoperand(RetN, 0);
-	jmpTarget(jumpCond, genMoveConstantR(trueObject(), ReceiverResultReg));
+	jmpTarget(jumpCond, genMoveTrueR(ReceiverResultReg));
 	/* begin genPrimReturn */
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
@@ -16449,7 +16449,7 @@
 	/* begin CmpR:R: */
 	genoperandoperand(CmpRR, Arg0Reg, ReceiverResultReg);
 	jumpTrue = genConditionalBranchoperand(jumpOpcode, 0);
-	/* begin genMoveConstant:R: */
+	/* begin genMoveFalseR: */
 	constant = falseObject();
 	if (shouldAnnotateObjectReference(constant)) {
 		annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
@@ -16465,7 +16465,7 @@
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
 	genoperand(RetN, 0);
-	jmpTarget(jumpTrue, genMoveConstantR(trueObject(), ReceiverResultReg));
+	jmpTarget(jumpTrue, genMoveTrueR(ReceiverResultReg));
 	/* begin genPrimReturn */
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
@@ -16520,7 +16520,7 @@
 
 	/* FP jumps are a little weird */
 	jumpCond = jumpFPOpcodeGenerator(0);
-	/* begin genMoveConstant:R: */
+	/* begin genMoveFalseR: */
 	constant = falseObject();
 	if (shouldAnnotateObjectReference(constant)) {
 		annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
@@ -16536,7 +16536,7 @@
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
 	genoperand(RetN, 0);
-	jmpTarget(jumpCond, genMoveConstantR(trueObject(), ReceiverResultReg));
+	jmpTarget(jumpCond, genMoveTrueR(ReceiverResultReg));
 	/* begin genPrimReturn */
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
@@ -20408,7 +20408,7 @@
 		/* begin JumpNonZero: */
 		jumpCmp = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
 	}
-	/* begin genMoveConstant:R: */
+	/* begin genMoveTrueR: */
 	constant = trueObject();
 	if (shouldAnnotateObjectReference(constant)) {
 		annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
@@ -20424,7 +20424,7 @@
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
 	genoperand(RetN, 0);
-	jmpTarget(jumpCmp, genMoveConstantR(falseObject(), ReceiverResultReg));
+	jmpTarget(jumpCmp, genMoveFalseR(ReceiverResultReg));
 	/* begin genPrimReturn */
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
@@ -23541,12 +23541,15 @@
 	return 0;
 }
 
-	/* SimpleStackBasedCogit>>#genMoveConstant:R: */
+	/* SimpleStackBasedCogit>>#genMoveFalseR: */
 static AbstractInstruction * NoDbgRegParms
-genMoveConstantR(sqInt constant, sqInt reg)
+genMoveFalseR(sqInt reg)
 {
     AbstractInstruction *anInstruction;
+    sqInt constant;
 
+	/* begin genMoveConstant:R: */
+	constant = falseObject();
 	return (shouldAnnotateObjectReference(constant)
 		? annotateobjRef(gMoveCwR(constant, reg), constant)
 		: (/* begin MoveCq:R: */
@@ -23558,7 +23561,7 @@
 }
 
 	/* SimpleStackBasedCogit>>#genMoveTrueR: */
-static sqInt NoDbgRegParms
+static AbstractInstruction * NoDbgRegParms
 genMoveTrueR(sqInt reg)
 {
     AbstractInstruction *anInstruction;

Modified: branches/Cog/nsspursrc/vm/cogitIA32.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogitIA32.c	2016-01-09 16:25:07 UTC (rev 3547)
+++ branches/Cog/nsspursrc/vm/cogitIA32.c	2016-01-09 18:55:57 UTC (rev 3548)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1621 uuid: 45817ea7-f2d1-4538-bfe4-c748be944bf2
+	CCodeGenerator VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.1621 uuid: 45817ea7-f2d1-4538-bfe4-c748be944bf2
+	StackToRegisterMappingCogit VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1621 uuid: 45817ea7-f2d1-4538-bfe4-c748be944bf2 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6 " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -941,7 +941,7 @@
 static sqInt genLongUnconditionalBackwardJump(void);
 static sqInt genLongUnconditionalForwardJump(void);
 static sqInt NoDbgRegParms genLookupForPerformNumArgs(sqInt numArgs);
-static AbstractInstruction * NoDbgRegParms genMoveConstantR(sqInt constant, sqInt reg);
+static AbstractInstruction * NoDbgRegParms genMoveFalseR(sqInt reg);
 static AbstractInstruction * NoDbgRegParms genMoveTrueR(sqInt reg);
 static sqInt NoDbgRegParms genMustBeBooleanTrampolineForcalled(sqInt boolean, char *trampolineName);
 static void NoDbgRegParms genPrimReturnEnterCogCodeEnilopmart(sqInt profiling);
@@ -3197,7 +3197,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset15) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset15) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset15) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpLongNonZero:
@@ -3237,7 +3237,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset17) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset17) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset17) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case Jump:
@@ -3302,7 +3302,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset19) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset19) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset19) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpNonNegative:
@@ -3340,7 +3340,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset110) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset110) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset110) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpOverflow:
@@ -3378,7 +3378,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset111) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset111) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset111) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpNoOverflow:
@@ -3416,7 +3416,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset112) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset112) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset112) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpCarry:
@@ -3456,7 +3456,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset113) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset113) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset113) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpNoCarry:
@@ -3496,7 +3496,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset114) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset114) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset114) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpLess:
@@ -3534,7 +3534,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset115) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset115) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset115) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpGreaterOrEqual:
@@ -3572,7 +3572,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset116) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset116) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset116) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpGreater:
@@ -3610,7 +3610,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset117) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset117) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset117) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpLessOrEqual:
@@ -3648,7 +3648,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset118) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset118) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset118) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpAbove:
@@ -3687,7 +3687,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset119) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset119) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset119) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpBelowOrEqual:
@@ -3726,7 +3726,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset120) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset120) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset120) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpFPOrdered:
@@ -3764,7 +3764,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset121) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset121) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset121) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case JumpFPUnordered:
@@ -3802,7 +3802,7 @@
 		((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset122) >> 8) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset122) >> 16) & 0xFF);
 		((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset122) >> 24) & 0xFF);
-		((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+		((self_in_dispatchConcretize->machineCodeSize) = 6);
 		return;
 
 	case RetN:
@@ -9625,12 +9625,12 @@
 generateMapAtstart(sqInt addressOrNull, sqInt startAddress)
 {
     unsigned char annotation;
-    sqInt delta;
+    usqInt delta;
     sqInt i;
     AbstractInstruction *instruction;
     sqInt length;
-    sqInt location;
-    sqInt mapEntry;
+    usqInt location;
+    usqInt mapEntry;
     sqInt maxDelta;
     usqInt mcpc;
 
@@ -14649,7 +14649,7 @@
 
 	/* FP jumps are a little weird */
 	jumpCond = jumpOpcodeGenerator(0);
-	/* begin genMoveConstant:R: */
+	/* begin genMoveFalseR: */
 	constant = falseObject();
 	if (shouldAnnotateObjectReference(constant)) {
 		annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
@@ -15292,7 +15292,6 @@
 	jumpNotSI = genJumpNotSmallInteger(Arg0Reg);
 	genShiftAwaySmallIntegerTagsInScratchReg(ClassReg);
 	genRemoveSmallIntegerTagsInScratchReg(Arg1Reg);
-	/* begin MulR:R: */
 	genMulRR(backEnd, Arg1Reg, ClassReg);
 	/* begin JumpOverflow: */
 	jumpOvfl = genConditionalBranchoperand(JumpOverflow, ((sqInt)0));
@@ -15433,7 +15432,7 @@
 	/* begin CmpR:R: */
 	genoperandoperand(CmpRR, Arg0Reg, ReceiverResultReg);
 	jumpTrue = genConditionalBranchoperand(jumpOpcode, 0);
-	/* begin genMoveConstant:R: */
+	/* begin genMoveFalseR: */
 	constant = falseObject();
 	if (shouldAnnotateObjectReference(constant)) {
 		annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
@@ -15501,7 +15500,7 @@
 
 	/* FP jumps are a little weird */
 	jumpCond = jumpFPOpcodeGenerator(0);
-	/* begin genMoveConstant:R: */
+	/* begin genMoveFalseR: */
 	constant = falseObject();
 	if (shouldAnnotateObjectReference(constant)) {
 		annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
@@ -18629,7 +18628,7 @@
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
 	genoperand(RetN, 0);
-	jmpTarget(jumpCmp, genMoveConstantR(falseObject(), ReceiverResultReg));
+	jmpTarget(jumpCmp, genMoveFalseR(ReceiverResultReg));
 	/* begin genPrimReturn */
 	assert(methodOrBlockNumArgs <= (numRegArgs()));
 	/* begin RetN: */
@@ -20836,12 +20835,15 @@
 	return 0;
 }
 
-	/* SimpleStackBasedCogit>>#genMoveConstant:R: */
+	/* SimpleStackBasedCogit>>#genMoveFalseR: */
 static AbstractInstruction * NoDbgRegParms
-genMoveConstantR(sqInt constant, sqInt reg)
+genMoveFalseR(sqInt reg)
 {
     AbstractInstruction *anInstruction;
+    sqInt constant;
 
+	/* begin genMoveConstant:R: */
+	constant = falseObject();
 	return (shouldAnnotateObjectReference(constant)
 		? annotateobjRef(gMoveCwR(constant, reg), constant)
 		: (/* begin MoveCq:R: */

Modified: branches/Cog/nsspursrc/vm/cogitMIPSEL.c
===================================================================
--- branches/Cog/nsspursrc/vm/cogitMIPSEL.c	2016-01-09 16:25:07 UTC (rev 3547)
+++ branches/Cog/nsspursrc/vm/cogitMIPSEL.c	2016-01-09 18:55:57 UTC (rev 3548)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGenerator VMMaker.oscog-eem.1621 uuid: 45817ea7-f2d1-4538-bfe4-c748be944bf2
+	CCodeGenerator VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6
    from
-	StackToRegisterMappingCogit VMMaker.oscog-eem.1621 uuid: 45817ea7-f2d1-4538-bfe4-c748be944bf2
+	StackToRegisterMappingCogit VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6
  */
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1621 uuid: 45817ea7-f2d1-4538-bfe4-c748be944bf2 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6 " __DATE__ ;
 char *__cogitBuildInfo = __buildInfo;
 
 
@@ -759,7 +759,7 @@
 static sqInt NoDbgRegParms computeMaximumSize(AbstractInstruction * self_in_computeMaximumSize);
 static usqInt NoDbgRegParms concretizeAddCheckOverflowCqR(AbstractInstruction * self_in_concretizeAddCheckOverflowCqR);
 static usqInt NoDbgRegParms concretizeAddCheckOverflowRR(AbstractInstruction * self_in_concretizeAddCheckOverflowRR);
-static usqInt NoDbgRegParms concretizeAddCqR(AbstractInstruction * self_in_concretizeAddCqR);
+static sqInt NoDbgRegParms concretizeAddCqR(AbstractInstruction * self_in_concretizeAddCqR);
 static usqInt NoDbgRegParms concretizeAddCwR(AbstractInstruction * self_in_concretizeAddCwR);
 static usqInt NoDbgRegParms concretizeAddRR(AbstractInstruction * self_in_concretizeAddRR);
 static AbstractInstruction * NoDbgRegParms concretizeAlignmentNops(AbstractInstruction * self_in_concretizeAlignmentNops);
@@ -791,7 +791,7 @@
 static usqInt NoDbgRegParms concretizeFill32(AbstractInstruction * self_in_concretizeFill32);
 static usqInt NoDbgRegParms concretizeJump(AbstractInstruction * self_in_concretizeJump);
 static usqInt NoDbgRegParms concretizeJumpFull(AbstractInstruction * self_in_concretizeJumpFull);
-static usqInt NoDbgRegParms concretizeJumpLong(AbstractInstruction * self_in_concretizeJumpLong);
+static sqInt NoDbgRegParms concretizeJumpLong(AbstractInstruction * self_in_concretizeJumpLong);
 static sqInt NoDbgRegParms concretizeJumpLongNonZero(AbstractInstruction * self_in_concretizeJumpLongNonZero);
 static sqInt NoDbgRegParms concretizeJumpLongZero(AbstractInstruction * self_in_concretizeJumpLongZero);
 static sqInt NoDbgRegParms concretizeJumpNonZero(AbstractInstruction * self_in_concretizeJumpNonZero);
@@ -814,7 +814,7 @@
 static usqInt NoDbgRegParms concretizeLogicalShiftRightRR(AbstractInstruction * self_in_concretizeLogicalShiftRightRR);
 static usqInt NoDbgRegParms concretizeMoveAbR(AbstractInstruction * self_in_concretizeMoveAbR);
 static usqInt NoDbgRegParms concretizeMoveAwR(AbstractInstruction * self_in_concretizeMoveAwR);
-static sqInt NoDbgRegParms concretizeMoveCqR(AbstractInstruction * self_in_concretizeMoveCqR);
+static usqInt NoDbgRegParms concretizeMoveCqR(AbstractInstruction * self_in_concretizeMoveCqR);
 static usqInt NoDbgRegParms concretizeMoveCwR(AbstractInstruction * self_in_concretizeMoveCwR);
 static usqInt NoDbgRegParms concretizeMoveHighR(AbstractInstruction * self_in_concretizeMoveHighR);
 static usqInt NoDbgRegParms concretizeMoveLowR(AbstractInstruction * self_in_concretizeMoveLowR);
@@ -832,7 +832,7 @@
 static usqInt NoDbgRegParms concretizeMulCheckOverflowRR(AbstractInstruction * self_in_concretizeMulCheckOverflowRR);
 static usqInt NoDbgRegParms concretizeNegateR(AbstractInstruction * self_in_concretizeNegateR);
 static usqInt NoDbgRegParms concretizeNop(AbstractInstruction * self_in_concretizeNop);
-static usqInt NoDbgRegParms concretizeOrCqR(AbstractInstruction * self_in_concretizeOrCqR);
+static sqInt NoDbgRegParms concretizeOrCqR(AbstractInstruction * self_in_concretizeOrCqR);
 static usqInt NoDbgRegParms concretizeOrCwR(AbstractInstruction * self_in_concretizeOrCwR);
 static usqInt NoDbgRegParms concretizeOrRR(AbstractInstruction * self_in_concretizeOrRR);
 static usqInt NoDbgRegParms concretizePopR(AbstractInstruction * self_in_concretizePopR);
@@ -847,7 +847,7 @@
 static usqInt NoDbgRegParms concretizeSubCqR(AbstractInstruction * self_in_concretizeSubCqR);
 static usqInt NoDbgRegParms concretizeSubCwR(AbstractInstruction * self_in_concretizeSubCwR);
 static usqInt NoDbgRegParms concretizeSubRR(AbstractInstruction * self_in_concretizeSubRR);
-static usqInt NoDbgRegParms concretizeTstCqR(AbstractInstruction * self_in_concretizeTstCqR);
+static sqInt NoDbgRegParms concretizeTstCqR(AbstractInstruction * self_in_concretizeTstCqR);
 static usqInt NoDbgRegParms concretizeTstCwR(AbstractInstruction * self_in_concretizeTstCwR);
 static sqInt NoDbgRegParms concretizeUnimplemented(AbstractInstruction * self_in_concretizeUnimplemented);
 static usqInt NoDbgRegParms concretizeXorCwR(AbstractInstruction * self_in_concretizeXorCwR);
@@ -1048,7 +1048,7 @@
 static sqInt NoDbgRegParms genGetClassIndexOfNonImminto(sqInt sourceReg, sqInt destReg);
 static sqInt NoDbgRegParms genGetClassObjectOfClassIndexintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg);
 static sqInt NoDbgRegParms genGetClassObjectOfintoscratchReginstRegIsReceiver(sqInt instReg, sqInt destReg, sqInt scratchReg, sqInt instRegIsReceiver);
-static AbstractInstruction * NoDbgRegParms genGetClassTagOfintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg);
+static sqInt NoDbgRegParms genGetClassTagOfintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg);
 static sqInt NoDbgRegParms genGetCompactClassIndexNonImmOfinto(sqInt instReg, sqInt destReg);
 static sqInt NoDbgRegParms genGetDoubleValueOfinto(sqInt srcReg, sqInt destFPReg);
 static sqInt NoDbgRegParms genGetFormatOfinto(sqInt srcReg, sqInt destReg);
@@ -5742,12 +5742,12 @@
 generateMapAtstart(sqInt addressOrNull, sqInt startAddress)
 {
     unsigned char annotation;
-    sqInt delta;
+    usqInt delta;
     sqInt i;
     AbstractInstruction *instruction;
     sqInt length;
-    sqInt location;
-    sqInt mapEntry;
+    usqInt location;
+    usqInt mapEntry;
     sqInt maxDelta;
     usqInt mcpc;
 
@@ -10987,7 +10987,7 @@
 }
 
 	/* CogMIPSELCompiler>>#concretizeAddCqR */
-static usqInt NoDbgRegParms
+static sqInt NoDbgRegParms
 concretizeAddCqR(AbstractInstruction * self_in_concretizeAddCqR)
 {
     sqInt aWord;
@@ -11841,7 +11841,7 @@
 }
 
 	/* CogMIPSELCompiler>>#concretizeJumpLong */
-static usqInt NoDbgRegParms
+static sqInt NoDbgRegParms
 concretizeJumpLong(AbstractInstruction * self_in_concretizeJumpLong)
 {
 	return concretizeJumpFull(self_in_concretizeJumpLong);
@@ -12156,7 +12156,7 @@
 }
 
 	/* CogMIPSELCompiler>>#concretizeMoveCqR */
-static sqInt NoDbgRegParms
+static usqInt NoDbgRegParms
 concretizeMoveCqR(AbstractInstruction * self_in_concretizeMoveCqR)
 {
     sqInt aWord;
@@ -12551,7 +12551,7 @@
 }
 
 	/* CogMIPSELCompiler>>#concretizeOrCqR */
-static usqInt NoDbgRegParms
+static sqInt NoDbgRegParms
 concretizeOrCqR(AbstractInstruction * self_in_concretizeOrCqR)
 {
     sqInt aWord;
@@ -12880,7 +12880,7 @@
 }
 
 	/* CogMIPSELCompiler>>#concretizeTstCqR */
-static usqInt NoDbgRegParms
+static sqInt NoDbgRegParms
 concretizeTstCqR(AbstractInstruction * self_in_concretizeTstCqR)
 {
     sqInt aWord;
@@ -15638,6 +15638,7 @@
 	jumpNotSI = genJumpNotSmallInteger(Arg0Reg);
 	genShiftAwaySmallIntegerTagsInScratchReg(ClassReg);
 	genRemoveSmallIntegerTagsInScratchReg(Arg1Reg);
+	/* begin MulR:R: */
 	genMulRR(backEnd, Arg1Reg, ClassReg);
 	/* begin JumpOverflow: */
 	jumpOvfl = genConditionalBranchoperand(JumpOverflow, ((sqInt)0));
@@ -18499,7 +18500,7 @@
 }
 
 	/* CogObjectRepresentationForSpur>>#genGetClassTagOf:into:scratchReg: */
-static AbstractInstruction * NoDbgRegParms
+static sqInt NoDbgRegParms
 genGetClassTagOfintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg)
 {
 	return genGetInlineCacheClassTagFromintoforEntry(instReg, destReg, 1);

Modified: branches/Cog/nsspursrc/vm/cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.c	2016-01-09 16:25:07 UTC (rev 3547)
+++ branches/Cog/nsspursrc/vm/cointerp.c	2016-01-09 18:55:57 UTC (rev 3548)
@@ -1,9 +1,9 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1623 uuid: 796c33c7-b025-4e0c-bd4e-1d3fa3d71f22
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6
    from
-	CoInterpreter VMMaker.oscog-eem.1623 uuid: 796c33c7-b025-4e0c-bd4e-1d3fa3d71f22
+	CoInterpreter VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1623 uuid: 796c33c7-b025-4e0c-bd4e-1d3fa3d71f22 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2399,7 +2399,7 @@
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1623";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1625";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -58685,7 +58685,7 @@
     usqInt prevFree;
     usqInt prevFreeChunk;
     usqInt prevPrevFree;
-    sqInt prevPrevFreeChunk;
+    usqInt prevPrevFreeChunk;
     sqInt slotBytes;
     sqInt slotBytes1;
     usqInt there;
@@ -63200,7 +63200,7 @@
 bridgeFromto(SpurSegmentInfo *aSegment, SpurSegmentInfo *nextSegmentOrNil)
 {
     usqInt bridgeSpan;
-    sqInt clifton;
+    usqInt clifton;
     usqInt segEnd;
 
 	segEnd = ((aSegment->segSize)) + ((aSegment->segStart));
@@ -63437,7 +63437,7 @@
     sqInt largeChild;
     sqInt newEndOfMemory;
     sqInt next;
-    usqInt node;
+    sqInt node;
     SpurSegmentInfo *seg;
     sqInt smallChild;
     sqInt treeNode;
@@ -63752,8 +63752,8 @@
 {
     usqLong firstSavedBridgeWord;
     sqInt nWritten;
-    sqInt pier1;
-    sqInt pier2;
+    usqInt pier1;
+    usqInt pier2;
     usqLong secondSavedBridgeWord;
 
 	pier1 = (((segment->segSize)) + ((segment->segStart))) - (2 * BaseHeaderSize);

Modified: branches/Cog/nsspursrc/vm/cointerp.h
===================================================================
--- branches/Cog/nsspursrc/vm/cointerp.h	2016-01-09 16:25:07 UTC (rev 3547)
+++ branches/Cog/nsspursrc/vm/cointerp.h	2016-01-09 18:55:57 UTC (rev 3548)
@@ -1,5 +1,5 @@
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1623 uuid: 796c33c7-b025-4e0c-bd4e-1d3fa3d71f22
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6
  */
 
 

Modified: branches/Cog/nsspursrc/vm/gcc3x-cointerp.c
===================================================================
--- branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2016-01-09 16:25:07 UTC (rev 3547)
+++ branches/Cog/nsspursrc/vm/gcc3x-cointerp.c	2016-01-09 18:55:57 UTC (rev 3548)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1623 uuid: 796c33c7-b025-4e0c-bd4e-1d3fa3d71f22
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6
    from
-	CoInterpreter VMMaker.oscog-eem.1623 uuid: 796c33c7-b025-4e0c-bd4e-1d3fa3d71f22
+	CoInterpreter VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6
  */
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1623 uuid: 796c33c7-b025-4e0c-bd4e-1d3fa3d71f22 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -2402,7 +2402,7 @@
 /*560*/	-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 0, 0, 0,-1,-1
 	};
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1623";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1625";
 sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
 volatile int sendTrace;
 
@@ -58694,7 +58694,7 @@
     usqInt prevFree;
     usqInt prevFreeChunk;
     usqInt prevPrevFree;
-    sqInt prevPrevFreeChunk;
+    usqInt prevPrevFreeChunk;
     sqInt slotBytes;
     sqInt slotBytes1;
     usqInt there;
@@ -63209,7 +63209,7 @@
 bridgeFromto(SpurSegmentInfo *aSegment, SpurSegmentInfo *nextSegmentOrNil)
 {
     usqInt bridgeSpan;
-    sqInt clifton;
+    usqInt clifton;
     usqInt segEnd;
 
 	segEnd = ((aSegment->segSize)) + ((aSegment->segStart));
@@ -63446,7 +63446,7 @@
     sqInt largeChild;
     sqInt newEndOfMemory;
     sqInt next;
-    usqInt node;
+    sqInt node;
     SpurSegmentInfo *seg;
     sqInt smallChild;
     sqInt treeNode;
@@ -63761,8 +63761,8 @@
 {
     usqLong firstSavedBridgeWord;
     sqInt nWritten;
-    sqInt pier1;
-    sqInt pier2;
+    usqInt pier1;
+    usqInt pier2;
     usqLong secondSavedBridgeWord;
 
 	pier1 = (((segment->segSize)) + ((segment->segStart))) - (2 * BaseHeaderSize);

Modified: branches/Cog/nsspurstack64src/vm/gcc3x-interp.c
===================================================================
--- branches/Cog/nsspurstack64src/vm/gcc3x-interp.c	2016-01-09 16:25:07 UTC (rev 3547)
+++ branches/Cog/nsspurstack64src/vm/gcc3x-interp.c	2016-01-09 18:55:57 UTC (rev 3548)
@@ -2,11 +2,11 @@
 
 
 /* Automatically generated by
-	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1623 uuid: 796c33c7-b025-4e0c-bd4e-1d3fa3d71f22
+	CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6
    from
-	StackInterpreter VMMaker.oscog-eem.1623 uuid: 796c33c7-b025-4e0c-bd4e-1d3fa3d71f22
+	StackInterpreter VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6
  */
-static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1623 uuid: 796c33c7-b025-4e0c-bd4e-1d3fa3d71f22 " __DATE__ ;
+static char __buildInfo[] = "StackInterpreter VMMaker.oscog-eem.1625 uuid: c1bd5626-30ae-42ed-b647-fdc16b18ddf6 " __DATE__ ;
 char *__interpBuildInfo = __buildInfo;
 
 
@@ -564,6 +564,25 @@
 static void primitiveSize(void);
 static void primitiveSizeInBytes(void);
 static void primitiveSizeInBytesOfInstance(void);
+static void primitiveSmallFloatAdd(void);
+static void primitiveSmallFloatArctan(void);
+static void primitiveSmallFloatDivide(void);
+static void primitiveSmallFloatEqual(void);
+static void primitiveSmallFloatExp(void);
+static void primitiveSmallFloatExponent(void);
+static void primitiveSmallFloatFractionalPart(void);
+static void primitiveSmallFloatGreaterOrEqual(void);
+static void primitiveSmallFloatGreaterThan(void);
+static void primitiveSmallFloatLessOrEqual(void);
+static void primitiveSmallFloatLessThan(void);
+static void primitiveSmallFloatLogN(void);
+static void primitiveSmallFloatMultiply(void);
+static void primitiveSmallFloatNotEqual(void);
+static void primitiveSmallFloatSine(void);
+static void primitiveSmallFloatSquareRoot(void);
+static void primitiveSmallFloatSubtract(void);
+static void primitiveSmallFloatTimesTwoPower(void);
+static void primitiveSmallFloatTruncated(void);
 static void primitiveSnapshot(void);
 static void primitiveSnapshotEmbedded(void);
 static void primitiveSomeInstance(void);
@@ -605,6 +624,7 @@
 static usqInt NoDbgRegParms bytesInObject(sqInt objOop);
 static sqInt NoDbgRegParms changeClassOfto(sqInt rcvr, sqInt argClass);
 static double NoDbgRegParms dbgFloatValueOf(sqInt oop);
+static sqInt NoDbgRegParms exponentOfSmallFloat(sqInt oop);
 extern sqInt floatObjectOf(double aFloat);
 extern double floatValueOf(sqInt oop);
 static sqInt NoDbgRegParms initFreeChunkWithBytesat(usqLong numBytes, sqInt address);
@@ -617,10 +637,12 @@
 extern sqInt isIntegerValue(sqInt intValue);
 extern sqInt isMarked(sqInt objOop);
 static sqInt NoDbgRegParms isSmallFloatValue(double aFloat);
+static sqInt NoDbgRegParms isSmallFloatZero(sqInt aSmallFloat);
 static sqInt NoDbgRegParms lengthOfformat(sqInt objOop, sqInt fmt);
 static sqInt maxSlotsForAlloc(void);
 static sqInt numFreeLists(void);
 static sqInt NoDbgRegParms objectAfterlimit(sqInt objOop, sqInt limit);
+static double NoDbgRegParms smallFloatValueOf(sqInt oop);
 extern usqInt smallObjectBytesForSlots(sqInt numSlots);
 static sqInt wordIndexableFormat(void);
 static void NoDbgRegParms NeverInline addToEphemeronList(sqInt ephemeronCorpse);
@@ -1376,10 +1398,10 @@
 _iss usqInt newSpaceLimit;
 _iss sqInt weaklingStack;
 _iss sqInt trueObj;
+_iss sqInt falseObj;
 _iss SpurSegmentInfo * segments;
 _iss sqInt hiddenRootsObj;
 _iss sqInt lkupClassTag;
-_iss sqInt falseObj;
 _iss usqInt totalFreeOldSpace;
 _iss usqInt pastSpaceStart;
 _iss sqInt needGCFlag;
@@ -2107,25 +2129,25 @@
 	/* 538 */ (void (*)(void))0,
 	/* 539 */ (void (*)(void))0,
 	/* 540 */ (void (*)(void))0,
-	/* 541 */ (void (*)(void))0,
-	/* 542 */ (void (*)(void))0,
-	/* 543 */ (void (*)(void))0,
-	/* 544 */ (void (*)(void))0,
-	/* 545 */ (void (*)(void))0,
-	/* 546 */ (void (*)(void))0,
-	/* 547 */ (void (*)(void))0,
-	/* 548 */ (void (*)(void))0,
-	/* 549 */ (void (*)(void))0,
-	/* 550 */ (void (*)(void))0,
-	/* 551 */ (void (*)(void))0,
-	/* 552 */ (void (*)(void))0,
-	/* 553 */ (void (*)(void))0,
-	/* 554 */ (void (*)(void))0,
-	/* 555 */ (void (*)(void))0,
-	/* 556 */ (void (*)(void))0,
-	/* 557 */ (void (*)(void))0,
-	/* 558 */ (void (*)(void))0,
-	/* 559 */ (void (*)(void))0,
+	/* 541 */ primitiveSmallFloatAdd,
+	/* 542 */ primitiveSmallFloatSubtract,
+	/* 543 */ primitiveSmallFloatLessThan,
+	/* 544 */ primitiveSmallFloatGreaterThan,
+	/* 545 */ primitiveSmallFloatLessOrEqual,
+	/* 546 */ primitiveSmallFloatGreaterOrEqual,
+	/* 547 */ primitiveSmallFloatEqual,
+	/* 548 */ primitiveSmallFloatNotEqual,
+	/* 549 */ primitiveSmallFloatMultiply,
+	/* 550 */ primitiveSmallFloatDivide,
+	/* 551 */ primitiveSmallFloatTruncated,
+	/* 552 */ primitiveSmallFloatFractionalPart,
+	/* 553 */ primitiveSmallFloatExponent,
+	/* 554 */ primitiveSmallFloatTimesTwoPower,
+	/* 555 */ primitiveSmallFloatSquareRoot,
+	/* 556 */ primitiveSmallFloatSine,
+	/* 557 */ primitiveSmallFloatArctan,
+	/* 558 */ primitiveSmallFloatLogN,
+	/* 559 */ primitiveSmallFloatExp,
 	/* 560 */ (void (*)(void))0,
 	/* 561 */ (void (*)(void))0,
 	/* 562 */ (void (*)(void))0,
@@ -2144,7 +2166,7 @@
 	/* 575 */ (void (*)(void))0,
  0 };
 char expensiveAsserts = 0;
-const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1623";
+const char *interpreterVersion = "Newspeak Virtual Machine StackInterpreterPrimitives_VMMaker.oscog-eem.1625";
 volatile int sendTrace;
 sqInt suppressHeartbeatFlag;
 
@@ -25452,7 +25474,1006 @@
 	GIV(stackPointer) = sp1;
 }
 
+	/* InterpreterPrimitives>>#primitiveSmallFloatAdd */
+static void
+primitiveSmallFloatAdd(void)
+{   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    double arg;
+    sqInt bits;
+    sqInt bits1;
+    sqInt floatOrIntOop;
+    sqInt oop;
+    double rcvr;
+    double result;
+    sqInt rot;
+    sqInt rot1;
+    sqInt shift;
+    char *sp;
+    sqInt tagBits;
 
+	/* begin smallFloatValueOf: */
+	oop = longAt(GIV(stackPointer) + (1 * BytesPerWord));
+	assert(isImmediateFloat(oop));
+	rot = ((usqInt) (((usqInt)oop))) >> (numTagBits());
+	if (rot > 1) {
+
+		/* a.k.a. ~= +/-0.0 */
+		rot += ((long)(smallFloatExponentOffset())) << ((smallFloatMantissaBits()) + 1);
+	}
+	rot = (((long)rot) << 0x3F) + (((usqInt) (((unsigned long)rot))) >> 1);
+	bits = rot;
+	rcvr = (((double *) ((&bits))))[0];
+	/* begin loadFloatOrIntFrom: */
+	floatOrIntOop = longAt(GIV(stackPointer));
+	if (((tagBits = floatOrIntOop & (tagMask()))) != 0) {
+		if (tagBits == (smallFloatTag())) {
+			/* begin smallFloatValueOf: */
+			assert(isImmediateFloat(floatOrIntOop));
+			rot1 = ((usqInt) (((usqInt)floatOrIntOop))) >> (numTagBits());
+			if (rot1 > 1) {
+
+				/* a.k.a. ~= +/-0.0 */
+				rot1 += ((long)(smallFloatExponentOffset())) << ((smallFloatMantissaBits()) + 1);
+			}
+			rot1 = (((long)rot1) << 0x3F) + (((usqInt) (((unsigned long)rot1))) >> 1);
+			bits1 = rot1;
+			arg = (((double *) ((&bits1))))[0];
+			goto l1;
+		}
+		if ((tagBits == 1)
+		 && (((shift = (64 - (numTagBits())) - (smallFloatMantissaBits())),
+		(((sqInt) (((long)floatOrIntOop) << shift)) >> shift) == floatOrIntOop))) {
+			arg = ((double) ((floatOrIntOop >> 3)) );
+			goto l1;
+		}
+	}
+	else {
+		if (((longAt(floatOrIntOop)) & (classIndexMask())) == ClassFloatCompactIndex) {
+			fetchFloatAtinto(floatOrIntOop + BaseHeaderSize, result);
+			arg = result;
+			goto l1;
+		}
+	}
+	/* begin primitiveFail */
+	if (!GIV(primFailCode)) {
+		GIV(primFailCode) = 1;
+	}
+	arg = 0.0;
+l1:	/* end loadFloatOrIntFrom: */;
+	if (!GIV(primFailCode)) {
+		/* begin pop:thenPushFloat: */
+		longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), floatObjectOf(rcvr + arg));
+		GIV(stackPointer) = sp;
+	}
+}
+
+	/* InterpreterPrimitives>>#primitiveSmallFloatArctan */
+static void
+primitiveSmallFloatArctan(void)
+{   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    sqInt bits;
+    double f;
+    sqInt oop;
+    double rcvr;
+    sqInt rot;
+    char *sp;
+
+	/* begin smallFloatValueOf: */
+	oop = longAt(GIV(stackPointer));
+	assert(isImmediateFloat(oop));
+	rot = ((usqInt) (((usqInt)oop))) >> (numTagBits());
+	if (rot > 1) {
+
+		/* a.k.a. ~= +/-0.0 */
+		rot += ((long)(smallFloatExponentOffset())) << ((smallFloatMantissaBits()) + 1);
+	}
+	rot = (((long)rot) << 0x3F) + (((usqInt) (((unsigned long)rot))) >> 1);
+	bits = rot;
+	rcvr = (((double *) ((&bits))))[0];
+	/* begin pop:thenPushFloat: */
+	f = atan(rcvr);
+	longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), floatObjectOf(f));
+	GIV(stackPointer) = sp;
+}
+
+	/* InterpreterPrimitives>>#primitiveSmallFloatDivide */
+static void
+primitiveSmallFloatDivide(void)
+{   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    double arg;
+    sqInt bits;
+    sqInt bits1;
+    sqInt floatOrIntOop;
+    sqInt oop;
+    double rcvr;
+    double result;
+    sqInt rot;
+    sqInt rot1;
+    sqInt shift;
+    char *sp;
+    sqInt tagBits;
+
+	/* begin smallFloatValueOf: */
+	oop = longAt(GIV(stackPointer) + (1 * BytesPerWord));
+	assert(isImmediateFloat(oop));
+	rot = ((usqInt) (((usqInt)oop))) >> (numTagBits());
+	if (rot > 1) {
+
+		/* a.k.a. ~= +/-0.0 */
+		rot += ((long)(smallFloatExponentOffset())) << ((smallFloatMantissaBits()) + 1);
+	}
+	rot = (((long)rot) << 0x3F) + (((usqInt) (((unsigned long)rot))) >> 1);
+	bits = rot;
+	rcvr = (((double *) ((&bits))))[0];
+	/* begin loadFloatOrIntFrom: */
+	floatOrIntOop = longAt(GIV(stackPointer));
+	if (((tagBits = floatOrIntOop & (tagMask()))) != 0) {
+		if (tagBits == (smallFloatTag())) {
+			/* begin smallFloatValueOf: */
+			assert(isImmediateFloat(floatOrIntOop));
+			rot1 = ((usqInt) (((usqInt)floatOrIntOop))) >> (numTagBits());
+			if (rot1 > 1) {
+
+				/* a.k.a. ~= +/-0.0 */
+				rot1 += ((long)(smallFloatExponentOffset())) << ((smallFloatMantissaBits()) + 1);
+			}
+			rot1 = (((long)rot1) << 0x3F) + (((usqInt) (((unsigned long)rot1))) >> 1);
+			bits1 = rot1;
+			arg = (((double *) ((&bits1))))[0];
+			goto l1;
+		}
+		if ((tagBits == 1)
+		 && (((shift = (64 - (numTagBits())) - (smallFloatMantissaBits())),
+		(((sqInt) (((long)floatOrIntOop) << shift)) >> shift) == floatOrIntOop))) {
+			arg = ((double) ((floatOrIntOop >> 3)) );
+			goto l1;
+		}
+	}
+	else {
+		if (((longAt(floatOrIntOop)) & (classIndexMask())) == ClassFloatCompactIndex) {
+			fetchFloatAtinto(floatOrIntOop + BaseHeaderSize, result);
+			arg = result;
+			goto l1;
+		}
+	}
+	/* begin primitiveFail */
+	if (!GIV(primFailCode)) {
+		GIV(primFailCode) = 1;
+	}
+	arg = 0.0;
+l1:	/* end loadFloatOrIntFrom: */;
+	if (arg == 0.0) {
+		/* begin primitiveFail */
+		if (!GIV(primFailCode)) {
+			GIV(primFailCode) = 1;
+		}
+	}
+	if (!GIV(primFailCode)) {
+		/* begin pop:thenPushFloat: */
+		longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), floatObjectOf(rcvr / arg));
+		GIV(stackPointer) = sp;
+	}
+}
+
+	/* InterpreterPrimitives>>#primitiveSmallFloatEqual */
+static void
+primitiveSmallFloatEqual(void)
+{   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    double arg;
+    sqInt bits;
+    sqInt bits1;
+    sqInt floatOrIntOop;
+    sqInt oop;
+    double rcvr;
+    double result;
+    sqInt rot;
+    sqInt rot1;
+    sqInt shift;
+    char *sp;
+    sqInt tagBits;
+
+	/* begin smallFloatValueOf: */
+	oop = longAt(GIV(stackPointer) + (1 * BytesPerWord));
+	assert(isImmediateFloat(oop));
+	rot = ((usqInt) (((usqInt)oop))) >> (numTagBits());
+	if (rot > 1) {
+
+		/* a.k.a. ~= +/-0.0 */
+		rot += ((long)(smallFloatExponentOffset())) << ((smallFloatMantissaBits()) + 1);
+	}
+	rot = (((long)rot) << 0x3F) + (((usqInt) (((unsigned long)rot))) >> 1);
+	bits = rot;
+	rcvr = (((double *) ((&bits))))[0];
+	/* begin loadFloatOrIntFrom: */
+	floatOrIntOop = longAt(GIV(stackPointer));
+	if (((tagBits = floatOrIntOop & (tagMask()))) != 0) {
+		if (tagBits == (smallFloatTag())) {
+			/* begin smallFloatValueOf: */
+			assert(isImmediateFloat(floatOrIntOop));
+			rot1 = ((usqInt) (((usqInt)floatOrIntOop))) >> (numTagBits());
+			if (rot1 > 1) {
+
+				/* a.k.a. ~= +/-0.0 */
+				rot1 += ((long)(smallFloatExponentOffset())) << ((smallFloatMantissaBits()) + 1);
+			}
+			rot1 = (((long)rot1) << 0x3F) + (((usqInt) (((unsigned long)rot1))) >> 1);
+			bits1 = rot1;
+			arg = (((double *) ((&bits1))))[0];
+			goto l1;
+		}
+		if ((tagBits == 1)
+		 && (((shift = (64 - (numTagBits())) - (smallFloatMantissaBits())),
+		(((sqInt) (((long)floatOrIntOop) << shift)) >> shift) == floatOrIntOop))) {
+			arg = ((double) ((floatOrIntOop >> 3)) );
+			goto l1;
+		}
+	}
+	else {
+		if (((longAt(floatOrIntOop)) & (classIndexMask())) == ClassFloatCompactIndex) {
+			fetchFloatAtinto(floatOrIntOop + BaseHeaderSize, result);
+			arg = result;
+			goto l1;
+		}
+	}
+	/* begin primitiveFail */
+	if (!GIV(primFailCode)) {
+		GIV(primFailCode) = 1;
+	}
+	arg = 0.0;
+l1:	/* end loadFloatOrIntFrom: */;
+	if (!GIV(primFailCode)) {
+		/* begin pop:thenPushBool: */
+		longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), (rcvr == arg
+			? GIV(trueObj)
+			: GIV(falseObj)));
+		GIV(stackPointer) = sp;
+	}
+}
+
+
+/*	Computes E raised to the receiver power.
+	Since SmallFloats cannot represent NaNs there's no need to special case. */
+
+	/* InterpreterPrimitives>>#primitiveSmallFloatExp */
+static void
+primitiveSmallFloatExp(void)
+{   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    double f;
+    char *sp;
+
+	/* begin pop:thenPushFloat: */
+	f = exp(smallFloatValueOf(longAt(GIV(stackPointer))));
+	longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), floatObjectOf(f));
+	GIV(stackPointer) = sp;
+}
+
+
+/*	Answer the exponent part of this float. */
+
+	/* InterpreterPrimitives>>#primitiveSmallFloatExponent */
+static void
+primitiveSmallFloatExponent(void)
+{   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    sqInt integerVal;
+    char *sp;
+
+	/* begin pop:thenPushInteger: */
+	integerVal = (exponentOfSmallFloat(longAt(GIV(stackPointer)))) - 1;
+	longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), ((integerVal << 3) | 1));
+	GIV(stackPointer) = sp;
+}
+
+	/* InterpreterPrimitives>>#primitiveSmallFloatFractionalPart */
+static void
+primitiveSmallFloatFractionalPart(void)
+{   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    sqInt bits;
+    double frac;
+    sqInt oop;
+    double rcvr;
+    sqInt rot;
+    char *sp;
+    double trunc;
+
+	/* begin smallFloatValueOf: */
+	oop = longAt(GIV(stackPointer));
+	assert(isImmediateFloat(oop));
+	rot = ((usqInt) (((usqInt)oop))) >> (numTagBits());
+	if (rot > 1) {
+
+		/* a.k.a. ~= +/-0.0 */
+		rot += ((long)(smallFloatExponentOffset())) << ((smallFloatMantissaBits()) + 1);
+	}
+	rot = (((long)rot) << 0x3F) + (((usqInt) (((unsigned long)rot))) >> 1);
+	bits = rot;
+	rcvr = (((double *) ((&bits))))[0];
+	frac = modf(rcvr, (&trunc));
+	/* begin pop:thenPushFloat: */
+	longAtput((sp = GIV(stackPointer) + ((1 - 1) * BytesPerWord)), floatObjectOf(frac));
+	GIV(stackPointer) = sp;
+}
+
+	/* InterpreterPrimitives>>#primitiveSmallFloatGreaterOrEqual */
+static void
+primitiveSmallFloatGreaterOrEqual(void)
+{   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    double arg;
+    sqInt bits;
+    sqInt bits1;
+    sqInt floatOrIntOop;
+    sqInt oop;
+    double rcvr;
+    double result;
+    sqInt rot;
+    sqInt rot1;
+    sqInt shift;
+    char *sp;
+    sqInt tagBits;
+
+	/* begin smallFloatValueOf: */
+	oop = longAt(GIV(stackPointer) + (1 * BytesPerWord));
+	assert(isImmediateFloat(oop));
+	rot = ((usqInt) (((usqInt)oop))) >> (numTagBits());
+	if (rot > 1) {
+
+		/* a.k.a. ~= +/-0.0 */
+		rot += ((long)(smallFloatExponentOffset())) << ((smallFloatMantissaBits()) + 1);
+	}
+	rot = (((long)rot) << 0x3F) + (((usqInt) (((unsigned long)rot))) >> 1);
+	bits = rot;
+	rcvr = (((double *) ((&bits))))[0];
+	/* begin loadFloatOrIntFrom: */
+	floatOrIntOop = longAt(GIV(stackPointer));
+	if (((tagBits = floatOrIntOop & (tagMask()))) != 0) {
+		if (tagBits == (smallFloatTag())) {
+			/* begin smallFloatValueOf: */
+			assert(isImmediateFloat(floatOrIntOop));
+			rot1 = ((usqInt) (((usqInt)floatOrIntOop))) >> (numTagBits());
+			if (rot1 > 1) {
+
+				/* a.k.a. ~= +/-0.0 */
+				rot1 += ((long)(smallFloatExponentOffset())) << ((smallFloatMantissaBits()) + 1);
+			}
+			rot1 = (((long)rot1) << 0x3F) + (((usqInt) (((unsigned long)rot1))) >> 1);
+			bits1 = rot1;
+			arg = (((double *) ((&bits1))))[0];
+			goto l1;
+		}
+		if ((tagBits == 1)
+		 && (((shift = (64 - (numTagBits())) - (smallFloatMantissaBits())),
+		(((sqInt) (((long)floatOrIntOop) << shift)) >> shift) == floatOrIntOop))) {
+			arg = ((double) ((floatOrIntOop >> 3)) );
+			goto l1;
+		}
+	}
+	else {
+		if (((longAt(floatOrIntOop)) & (classIndexMask())) == ClassFloatCompactIndex) {
+			fetchFloatAtinto(floatOrIntOop + BaseHeaderSize, result);
+			arg = result;
+			goto l1;
+		}
+	}
+	/* begin primitiveFail */
+	if (!GIV(primFailCode)) {
+		GIV(primFailCode) = 1;
+	}
+	arg = 0.0;
+l1:	/* end loadFloatOrIntFrom: */;
+	if (!GIV(primFailCode)) {
+		/* begin pop:thenPushBool: */
+		longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), (rcvr >= arg
+			? GIV(trueObj)
+			: GIV(falseObj)));
+		GIV(stackPointer) = sp;
+	}
+}
+
+	/* InterpreterPrimitives>>#primitiveSmallFloatGreaterThan */
+static void
+primitiveSmallFloatGreaterThan(void)
+{   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    double arg;
+    sqInt bits;
+    sqInt bits1;
+    sqInt floatOrIntOop;
+    sqInt oop;
+    double rcvr;
+    double result;
+    sqInt rot;
+    sqInt rot1;
+    sqInt shift;
+    char *sp;
+    sqInt tagBits;
+
+	/* begin smallFloatValueOf: */
+	oop = longAt(GIV(stackPointer) + (1 * BytesPerWord));
+	assert(isImmediateFloat(oop));
+	rot = ((usqInt) (((usqInt)oop))) >> (numTagBits());
+	if (rot > 1) {
+
+		/* a.k.a. ~= +/-0.0 */
+		rot += ((long)(smallFloatExponentOffset())) << ((smallFloatMantissaBits()) + 1);
+	}
+	rot = (((long)rot) << 0x3F) + (((usqInt) (((unsigned long)rot))) >> 1);
+	bits = rot;
+	rcvr = (((double *) ((&bits))))[0];
+	/* begin loadFloatOrIntFrom: */
+	floatOrIntOop = longAt(GIV(stackPointer));
+	if (((tagBits = floatOrIntOop & (tagMask()))) != 0) {
+		if (tagBits == (smallFloatTag())) {
+			/* begin smallFloatValueOf: */
+			assert(isImmediateFloat(floatOrIntOop));
+			rot1 = ((usqInt) (((usqInt)floatOrIntOop))) >> (numTagBits());
+			if (rot1 > 1) {
+
+				/* a.k.a. ~= +/-0.0 */
+				rot1 += ((long)(smallFloatExponentOffset())) << ((smallFloatMantissaBits()) + 1);
+			}
+			rot1 = (((long)rot1) << 0x3F) + (((usqInt) (((unsigned long)rot1))) >> 1);
+			bits1 = rot1;
+			arg = (((double *) ((&bits1))))[0];
+			goto l1;
+		}
+		if ((tagBits == 1)
+		 && (((shift = (64 - (numTagBits())) - (smallFloatMantissaBits())),
+		(((sqInt) (((long)floatOrIntOop) << shift)) >> shift) == floatOrIntOop))) {
+			arg = ((double) ((floatOrIntOop >> 3)) );
+			goto l1;
+		}
+	}
+	else {
+		if (((longAt(floatOrIntOop)) & (classIndexMask())) == ClassFloatCompactIndex) {
+			fetchFloatAtinto(floatOrIntOop + BaseHeaderSize, result);
+			arg = result;
+			goto l1;
+		}
+	}
+	/* begin primitiveFail */
+	if (!GIV(primFailCode)) {
+		GIV(primFailCode) = 1;
+	}
+	arg = 0.0;
+l1:	/* end loadFloatOrIntFrom: */;
+	if (!GIV(primFailCode)) {
+		/* begin pop:thenPushBool: */
+		longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), (rcvr > arg
+			? GIV(trueObj)
+			: GIV(falseObj)));
+		GIV(stackPointer) = sp;
+	}
+}
+
+	/* InterpreterPrimitives>>#primitiveSmallFloatLessOrEqual */
+static void
+primitiveSmallFloatLessOrEqual(void)
+{   DECL_MAYBE_SQ_GLOBAL_STRUCT
+    double arg;
+    sqInt bits;
+    sqInt bits1;
+    sqInt floatOrIntOop;
+    sqInt oop;
+    double rcvr;
+    double result;
+    sqInt rot;
+    sqInt rot1;
+    sqInt shift;
+    char *sp;
+    sqInt tagBits;
+
+	/* begin smallFloatValueOf: */
+	oop = longAt(GIV(stackPointer) + (1 * BytesPerWord));
+	assert(isImmediateFloat(oop));
+	rot = ((usqInt) (((usqInt)oop))) >> (numTagBits());
+	if (rot > 1) {
+
+		/* a.k.a. ~= +/-0.0 */
+		rot += ((long)(smallFloatExponentOffset())) << ((smallFloatMantissaBits()) + 1);
+	}
+	rot = (((long)rot) << 0x3F) + (((usqInt) (((unsigned long)rot))) >> 1);
+	bits = rot;
+	rcvr = (((double *) ((&bits))))[0];
+	/* begin loadFloatOrIntFrom: */
+	floatOrIntOop = longAt(GIV(stackPointer));
+	if (((tagBits = floatOrIntOop & (tagMask()))) != 0) {
+		if (tagBits == (smallFloatTag())) {
+			/* begin smallFloatValueOf: */
+			assert(isImmediateFloat(floatOrIntOop));
+			rot1 = ((usqInt) (((usqInt)floatOrIntOop))) >> (numTagBits());
+			if (rot1 > 1) {
+
+				/* a.k.a. ~= +/-0.0 */

@@ Diff output truncated at 50000 characters. @@


More information about the Vm-dev mailing list