[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