[Vm-dev] [commit][3563] CogVM source as per VMMaker.oscog-eem.1656
commits at squeakvm.org
commits at squeakvm.org
Wed Jan 20 02:33:25 UTC 2016
Revision: 3563
Author: eliot
Date: 2016-01-19 18:33:22 -0800 (Tue, 19 Jan 2016)
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.1656
Slang: Remember to remove the declaration for a local that is introduced for
inlining where the inlining uses the parse tree, not the local. Otherwise,
stale declarations can be left that will mistype subsequent inlines of a method
with formals of the same name. This fixes quite a few assignment type warnings.
Changes to interpreter bytecode dispatch (fetching next bytecode later) to support optional IMMUATBILITY
primitiveStringReplace needs to check for immutability amd soon should support
16- and 64-bit access. Provide an error code for immediate replacement.
primitiveStringReplace.
Add immutability check to changeClassOf:to: for primitiveAdoptInstance et al.
Cogit: Merge in ARM 16 bit write handling.
Modified Paths:
--------------
branches/Cog/nsspur64src/vm/cogit.h
branches/Cog/nsspur64src/vm/cogitX64.c
branches/Cog/nsspur64src/vm/cointerp.c
branches/Cog/nsspur64src/vm/cointerp.h
branches/Cog/nsspur64src/vm/gcc3x-cointerp.c
branches/Cog/nsspursrc/plugins/B2DPlugin/B2DPlugin.c
branches/Cog/nsspursrc/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
branches/Cog/nsspursrc/plugins/ZipPlugin/ZipPlugin.c
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/plugins/ADPCMCodecPlugin/ADPCMCodecPlugin.c
branches/Cog/src/plugins/B2DPlugin/B2DPlugin.c
branches/Cog/src/plugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
branches/Cog/src/plugins/SoundGenerationPlugin/SoundGenerationPlugin.c
branches/Cog/src/plugins/ZipPlugin/ZipPlugin.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
branches/Cog/src/vm/cointerp.c
branches/Cog/src/vm/cointerp.h
branches/Cog/src/vm/cointerpmt.c
branches/Cog/src/vm/cointerpmt.h
branches/Cog/src/vm/gcc3x-cointerp.c
branches/Cog/src/vm/gcc3x-cointerpmt.c
branches/Cog/stacksrc/vm/gcc3x-interp.c
branches/Cog/stacksrc/vm/interp.c
Property Changed:
----------------
branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
Modified: branches/Cog/nsspur64src/vm/cogit.h
===================================================================
--- branches/Cog/nsspur64src/vm/cogit.h 2016-01-17 04:02:34 UTC (rev 3562)
+++ branches/Cog/nsspur64src/vm/cogit.h 2016-01-20 02:33:22 UTC (rev 3563)
@@ -1,5 +1,5 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1647 uuid: 013e4a41-bb4b-46ba-86e0-16c6977c4865
+ CCodeGenerator VMMaker.oscog-eem.1656 uuid: 02086cbf-8db3-4035-9f0d-f2671db50748
*/
Modified: branches/Cog/nsspur64src/vm/cogitX64.c
===================================================================
--- branches/Cog/nsspur64src/vm/cogitX64.c 2016-01-17 04:02:34 UTC (rev 3562)
+++ branches/Cog/nsspur64src/vm/cogitX64.c 2016-01-20 02:33:22 UTC (rev 3563)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGenerator VMMaker.oscog-eem.1647 uuid: 013e4a41-bb4b-46ba-86e0-16c6977c4865
+ CCodeGenerator VMMaker.oscog-eem.1656 uuid: 02086cbf-8db3-4035-9f0d-f2671db50748
from
- StackToRegisterMappingCogit VMMaker.oscog-eem.1647 uuid: 013e4a41-bb4b-46ba-86e0-16c6977c4865
+ StackToRegisterMappingCogit VMMaker.oscog-eem.1656 uuid: 02086cbf-8db3-4035-9f0d-f2671db50748
*/
-static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1647 uuid: 013e4a41-bb4b-46ba-86e0-16c6977c4865 " __DATE__ ;
+static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.1656 uuid: 02086cbf-8db3-4035-9f0d-f2671db50748 " __DATE__ ;
char *__cogitBuildInfo = __buildInfo;
@@ -805,7 +805,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 sqInt NoDbgRegParms genGetClassTagOfintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg);
+static AbstractInstruction * 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);
@@ -852,7 +852,7 @@
static sqInt NoDbgRegParms cmpC32RTempByteSize(AbstractInstruction * self_in_cmpC32RTempByteSize);
static sqInt NoDbgRegParms computeMaximumSize(AbstractInstruction * self_in_computeMaximumSize);
static sqInt NoDbgRegParms computeShiftRRSize(AbstractInstruction * self_in_computeShiftRRSize);
-static sqInt NoDbgRegParms concretizeArithCqRWithROraxOpcode(AbstractInstruction * self_in_concretizeArithCqRWithROraxOpcode, sqInt regOpcode, sqInt raxOpcode);
+static usqInt NoDbgRegParms concretizeArithCqRWithROraxOpcode(AbstractInstruction * self_in_concretizeArithCqRWithROraxOpcode, sqInt regOpcode, sqInt raxOpcode);
static usqInt NoDbgRegParms concretizeFill32(AbstractInstruction * self_in_concretizeFill32);
static usqInt NoDbgRegParms concretizeMoveRX32rR(AbstractInstruction * self_in_concretizeMoveRX32rR);
static usqInt NoDbgRegParms concretizeMoveX32rRR(AbstractInstruction * self_in_concretizeMoveX32rRR);
@@ -959,8 +959,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);
@@ -5859,12 +5859,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;
@@ -11648,7 +11648,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);
@@ -11661,7 +11661,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: */
@@ -11716,7 +11716,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);
@@ -11729,7 +11729,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: */
@@ -12071,11 +12071,11 @@
/* begin AndCq:R: */
quickConstant = tagMask();
/* begin gen:quickConstant:operand: */
- anInstruction1 = genoperandoperand(AndCqR, quickConstant, ClassReg);
+ anInstruction = genoperandoperand(AndCqR, quickConstant, ClassReg);
/* begin CmpCq:R: */
quickConstant1 = smallFloatTag();
/* begin gen:quickConstant:operand: */
- anInstruction2 = genoperandoperand(CmpCqR, quickConstant1, ClassReg);
+ anInstruction1 = genoperandoperand(CmpCqR, quickConstant1, ClassReg);
/* begin JumpNonZero: */
jumpNotSmallFloat = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
genGetSmallFloatValueOfscratchinto(Arg0Reg, TempReg, DPFPReg1);
@@ -12092,20 +12092,20 @@
/* FP jumps are a little weird */
jumpCond = jumpOpcodeGenerator(0);
- /* begin genMoveConstant:R: */
+ /* begin genMoveFalseR: */
constant = falseObject();
if (shouldAnnotateObjectReference(constant)) {
annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
}
else {
/* begin MoveCq:R: */
- anInstruction = genoperandoperand(MoveCqR, constant, ReceiverResultReg);
+ anInstruction2 = genoperandoperand(MoveCqR, constant, ReceiverResultReg);
}
/* begin genPrimReturn */
assert(methodOrBlockNumArgs <= (numRegArgs()));
/* begin RetN: */
genoperand(RetN, 0);
- jmpTarget(jumpCond, genMoveConstantR(trueObject(), ReceiverResultReg));
+ jmpTarget(jumpCond, genMoveTrueR(ReceiverResultReg));
/* begin genPrimReturn */
assert(methodOrBlockNumArgs <= (numRegArgs()));
/* begin RetN: */
@@ -15020,7 +15020,7 @@
}
/* CogObjectRepresentationForSpur>>#genGetClassTagOf:into:scratchReg: */
-static sqInt NoDbgRegParms
+static AbstractInstruction * NoDbgRegParms
genGetClassTagOfintoscratchReg(sqInt instReg, sqInt destReg, sqInt scratchReg)
{
return genGetInlineCacheClassTagFromintoforEntry(instReg, destReg, 1);
@@ -15255,9 +15255,7 @@
usqInt byteSize;
usqLong header;
sqInt numSlots;
- usqInt offset;
sqInt quickConstant;
- usqLong quickConstant1;
AbstractInstruction *skip;
@@ -15293,13 +15291,9 @@
(abstractInstruction->annotation = IsRelativeCall);
jmpTarget(skip, gLabel());
/* begin MoveR:Mw:r: */
- offset = (ClosureOuterContextIndex * BytesPerOop) + BaseHeaderSize;
- /* begin gen:operand:quickConstant:operand: */
- anInstruction6 = genoperandoperandoperand(MoveRMwr, ClassReg, offset, ReceiverResultReg);
+ anInstruction6 = genoperandoperandoperand(MoveRMwr, ClassReg, (ClosureOuterContextIndex * BytesPerOop) + BaseHeaderSize, ReceiverResultReg);
/* begin MoveCq:R: */
- quickConstant1 = ((bcpc << 3) | 1);
- /* begin gen:quickConstant:operand: */
- anInstruction7 = genoperandoperand(MoveCqR, quickConstant1, TempReg);
+ anInstruction7 = genoperandoperand(MoveCqR, ((bcpc << 3) | 1), TempReg);
/* begin MoveR:Mw:r: */
anInstruction8 = genoperandoperandoperand(MoveRMwr, TempReg, (ClosureStartPCIndex * BytesPerOop) + BaseHeaderSize, ReceiverResultReg);
/* begin MoveCq:R: */
@@ -15383,7 +15377,7 @@
/* begin JumpNonZero: */
jumpCmp = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
}
- /* begin genMoveConstant:R: */
+ /* begin genMoveTrueR: */
constant = trueObject();
if (shouldAnnotateObjectReference(constant)) {
annotateobjRef(gMoveCwR(constant, ReceiverResultReg), constant);
@@ -15396,7 +15390,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: */
@@ -16600,7 +16594,7 @@
/* Will get inlined into concretizeAt: switch. */
/* CogX64Compiler>>#concretizeArithCqRWithRO:raxOpcode: */
-static sqInt NoDbgRegParms
+static usqInt NoDbgRegParms
concretizeArithCqRWithROraxOpcode(AbstractInstruction * self_in_concretizeArithCqRWithROraxOpcode, sqInt regOpcode, sqInt raxOpcode)
{
unsigned long reg;
@@ -17238,7 +17232,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 JumpLongNonZero:
@@ -17278,7 +17272,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 Jump:
@@ -17343,7 +17337,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 JumpNonNegative:
@@ -17381,7 +17375,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 JumpOverflow:
@@ -17419,7 +17413,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 JumpNoOverflow:
@@ -17457,7 +17451,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 JumpCarry:
@@ -17497,7 +17491,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 JumpNoCarry:
@@ -17537,7 +17531,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 JumpLess:
@@ -17575,7 +17569,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 JumpGreaterOrEqual:
@@ -17613,7 +17607,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 JumpGreater:
@@ -17651,7 +17645,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset123) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset123) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset123) >> 24) & 0xFF);
- ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+ ((self_in_dispatchConcretize->machineCodeSize) = 6);
return;
case JumpLessOrEqual:
@@ -17689,7 +17683,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset124) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset124) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset124) >> 24) & 0xFF);
- ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+ ((self_in_dispatchConcretize->machineCodeSize) = 6);
return;
case JumpAbove:
@@ -17728,7 +17722,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset125) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset125) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset125) >> 24) & 0xFF);
- ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+ ((self_in_dispatchConcretize->machineCodeSize) = 6);
return;
case JumpBelowOrEqual:
@@ -17767,7 +17761,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset126) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset126) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset126) >> 24) & 0xFF);
- ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+ ((self_in_dispatchConcretize->machineCodeSize) = 6);
return;
case JumpFPOrdered:
@@ -17805,7 +17799,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset127) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset127) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset127) >> 24) & 0xFF);
- ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+ ((self_in_dispatchConcretize->machineCodeSize) = 6);
return;
case JumpFPUnordered:
@@ -17843,7 +17837,7 @@
((self_in_dispatchConcretize->machineCode))[3] = ((((usqInt) offset128) >> 8) & 0xFF);
((self_in_dispatchConcretize->machineCode))[4] = ((((usqInt) offset128) >> 16) & 0xFF);
((self_in_dispatchConcretize->machineCode))[5] = ((((usqInt) offset128) >> 24) & 0xFF);
- ((usqInt) (((self_in_dispatchConcretize->machineCodeSize) = 6)));
+ ((self_in_dispatchConcretize->machineCodeSize) = 6);
return;
case RetN:
@@ -20729,7 +20723,6 @@
AbstractInstruction *jmp;
AbstractInstruction *jmpSampleNonPrim;
AbstractInstruction *jmpSamplePrim;
- void *jumpTarget;
sqInt literal;
sqInt literal1;
sqInt offset;
@@ -21195,7 +21188,8 @@
return genStorePopReceiverVariable(1, variableIndex);
}
if (variableType == 1) {
- return genStorePopTemporaryVariable(1, variableIndex);
+ genStorePopTemporaryVariable(1, variableIndex);
+ return 0;
}
if (variableType == 3) {
return genStorePopLiteralVariable(1, variableIndex);
@@ -21216,7 +21210,8 @@
return genStorePopReceiverVariable(0, variableIndex);
}
if (variableType == 1) {
- return genStorePopTemporaryVariable(0, variableIndex);
+ genStorePopTemporaryVariable(0, variableIndex);
+ return 0;
}
if (variableType == 3) {
return genStorePopLiteralVariable(0, variableIndex);
@@ -21891,12 +21886,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: */
@@ -21905,7 +21903,7 @@
}
/* SimpleStackBasedCogit>>#genMoveTrueR: */
-static sqInt NoDbgRegParms
+static AbstractInstruction * NoDbgRegParms
genMoveTrueR(sqInt reg)
{
AbstractInstruction *anInstruction;
@@ -24101,7 +24099,7 @@
break;
case 7:
genStorePopLiteralVariable(0, byte2);
- break;
+ break;
default:
/* 5 & 6 */
@@ -24111,7 +24109,7 @@
else {
genStorePopReceiverVariable(opType == 6, byte2);
}
-
+
}
assert(needsFrame);
assert(!(prevInstIsPCAnnotated()));
@@ -27165,8 +27163,8 @@
/* In addition to ssStorePop:toReg:, if this is a store and not
- a popInto and the top of the simulated stack is not spilled,
- I change the simulated stack to use the register for the value */
+ a popInto I change the simulated stack to use the register
+ for the top value */
/* StackToRegisterMappingCogit>>#ssStoreAndReplacePop:toReg: */
static void NoDbgRegParms
Modified: branches/Cog/nsspur64src/vm/cointerp.c
===================================================================
--- branches/Cog/nsspur64src/vm/cointerp.c 2016-01-17 04:02:34 UTC (rev 3562)
+++ branches/Cog/nsspur64src/vm/cointerp.c 2016-01-20 02:33:22 UTC (rev 3563)
@@ -1,9 +1,9 @@
/* Automatically generated by
- CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1646 uuid: 83280f1d-a69e-4201-a103-e3236315d026
+ CCodeGeneratorGlobalStructure VMMaker.oscog-eem.1656 uuid: 02086cbf-8db3-4035-9f0d-f2671db50748
from
- CoInterpreter VMMaker.oscog-eem.1646 uuid: 83280f1d-a69e-4201-a103-e3236315d026
+ CoInterpreter VMMaker.oscog-eem.1656 uuid: 02086cbf-8db3-4035-9f0d-f2671db50748
*/
-static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1646 uuid: 83280f1d-a69e-4201-a103-e3236315d026 " __DATE__ ;
+static char __buildInfo[] = "CoInterpreter VMMaker.oscog-eem.1656 uuid: 02086cbf-8db3-4035-9f0d-f2671db50748 " __DATE__ ;
char *__interpBuildInfo = __buildInfo;
@@ -870,7 +870,7 @@
extern void ensureNoForwardedLiteralsIn(sqInt aMethodObj);
extern usqInt freeStartAddress(void);
extern usqInt getScavengeThreshold(void);
-static sqInt NoDbgRegParms headerWhileForwardingOf(sqInt aCompiledMethodObjOop);
+static sqLong NoDbgRegParms headerWhileForwardingOf(sqInt aCompiledMethodObjOop);
extern sqInt isForwardedClassIndex(sqInt maybeClassIndex);
extern sqInt isImmediateClass(sqInt classObj);
extern sqInt isReallyYoungObject(sqInt objOop);
@@ -2430,7 +2430,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.1646";
+const char *interpreterVersion = "Newspeak Virtual Machine CoInterpreterPrimitives_VMMaker.oscog-eem.1656";
sqInt minBackwardJumpCountForCompile = MinBackwardJumpCountForCompile /* 40 */;
volatile int sendTrace;
@@ -4765,9 +4765,6 @@
instVarIndex = currentBytecode & 7;
/* begin internalPop: */
localSP += 1 * BytesPerOop;
- /* begin fetchNextBytecode */
- currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
-
/* begin storePointerImmutabilityCheck:ofObject:withValue: */
/* begin storePointer:ofObject:withValue: */
assert(!(isForwarded(rcvr)));
@@ -4784,6 +4781,9 @@
}
longAtput((rcvr + BaseHeaderSize) + (((long)instVarIndex) << (shiftForWord())), top);
l1: /* end storePointerImmutabilityCheck:ofObject:withValue: */;
+ /* begin fetchNextBytecode */
+ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
}
break;
case 104:
@@ -5087,7 +5087,7 @@
frameToReturnTo = 0;
if (!((byteAt((localFP + FoxIFrameFlags) + 3)) != 0)) {
goto commonCallerReturn;
- goto l190;
+ goto l194;
}
closure = longAt(localFP + (frameStackedReceiverOffsetNumArgs(((((usqInt)(longAt(localFP + FoxMethod)))) < (startOfMemory())
? ((mframeCogMethod(localFP))->cmNumArgs)
@@ -5137,10 +5137,10 @@
: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
assert(isContext(frameContext(localFP)));
ourContext = longAt(localFP + FoxThisContext);
- goto l194;
+ goto l198;
}
ourContext = marryFrameSP(localFP, localSP);
- l194: /* end ensureFrameIsMarried:SP: */;
+ l198: /* end ensureFrameIsMarried:SP: */;
/* begin internalPush: */
longAtPointerput((localSP -= BytesPerOop), ourContext);
/* begin internalPush: */
@@ -5148,7 +5148,7 @@
GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)SelectorCannotReturn) << (shiftForWord())));
GIV(argumentCount) = 1;
goto normalSend;
- goto l190;
+ goto l194;
}
if (unwindContextOrNilOrZero != 0) {
/* begin internalAboutToReturn:through: */
@@ -5157,10 +5157,10 @@
: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
assert(isContext(frameContext(localFP)));
ourContext1 = longAt(localFP + FoxThisContext);
- goto l191;
+ goto l195;
}
ourContext1 = marryFrameSP(localFP, localSP);
- l191: /* end ensureFrameIsMarried:SP: */;
+ l195: /* end ensureFrameIsMarried:SP: */;
/* begin internalPush: */
longAtPointerput((localSP -= BytesPerOop), ourContext1);
/* begin internalPush: */
@@ -5170,7 +5170,7 @@
GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)SelectorAboutToReturn) << (shiftForWord())));
GIV(argumentCount) = 2;
goto normalSend;
- goto l190;
+ goto l194;
}
contextToReturnTo = null;
if (((((longAt((home + BaseHeaderSize) + (((long)SenderIndex) << (shiftForWord()))))) & 7) == 1)) {
@@ -5222,10 +5222,10 @@
: (byteAt((localFP + FoxIFrameFlags) + 2)) != 0)) {
assert(isContext(frameContext(localFP)));
ourContext2 = longAt(localFP + FoxThisContext);
- goto l193;
+ goto l197;
}
ourContext2 = marryFrameSP(localFP, localSP);
- l193: /* end ensureFrameIsMarried:SP: */;
+ l197: /* end ensureFrameIsMarried:SP: */;
/* begin internalPush: */
longAtPointerput((localSP -= BytesPerOop), ourContext2);
/* begin internalPush: */
@@ -5233,7 +5233,7 @@
GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)SelectorCannotReturn) << (shiftForWord())));
GIV(argumentCount) = 1;
goto normalSend;
- goto l190;
+ goto l194;
}
}
assert(pageListIsWellFormed());
@@ -5338,11 +5338,11 @@
GIV(stackPointer) = localSP;
GIV(framePointer) = localFP;
ceEnterCogCodePopReceiverReg();
- goto l192;
+ goto l196;
}
localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
}
- l192: /* end maybeReturnToMachineCodeFrame */;
+ l196: /* end maybeReturnToMachineCodeFrame */;
/* begin setMethod: */
aMethodObj = longAt(localFP + FoxMethod);
assert((((usqInt)aMethodObj)) >= (startOfMemory()));
@@ -5357,7 +5357,7 @@
longAtPointerput(localSP, localReturnValue);
}
- l190: /* end case */;
+ l194: /* end case */;
break;
case 121:
/* returnTrue */
@@ -5470,27 +5470,27 @@
fp = (thePage->headFP);
if (fp == theFP) {
frameAbove = 0;
- goto l196;
+ goto l200;
}
while (((callerFP = pointerForOop(longAt(fp + FoxSavedFP)))) != 0) {
if (callerFP == theFP) {
frameAbove = fp;
- goto l196;
+ goto l200;
}
fp = callerFP;
}
error("did not find theFP in stack page");
frameAbove = 0;
- l196: /* end findFrameAbove:inPage: */;
+ l200: /* end findFrameAbove:inPage: */;
/* begin newStackPage */
lruOrFree = (GIV(mostRecentlyUsedPage)->nextPage);
if (((lruOrFree->baseFP)) == 0) {
newPage = lruOrFree;
- goto l197;
+ goto l201;
}
divorceFramesIn(lruOrFree);
newPage = lruOrFree;
- l197: /* end newStackPage */;
+ l201: /* end newStackPage */;
assert(newPage == GIV(stackPage));
moveFramesInthroughtoPage(thePage, frameAbove, newPage);
markStackPageMostRecentlyUsed(newPage);
@@ -5513,7 +5513,7 @@
longAtput((sp2 = GIV(stackPointer) - BytesPerWord), GIV(instructionPointer));
GIV(stackPointer) = sp2;
ceSendAborttonumArgs(longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)SelectorCannotReturn) << (shiftForWord()))), contextToReturnFrom, 1);
- goto l195;
+ goto l199;
}
GIV(instructionPointer) = 0;
thePage = makeBaseFrameFor(contextToReturnTo);
@@ -5549,7 +5549,7 @@
GIV(stackPointer) = localSP;
GIV(framePointer) = localFP;
ceEnterCogCodePopReceiverReg();
- goto l195;
+ goto l199;
}
localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
}
@@ -5567,7 +5567,7 @@
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
- goto l195;
+ goto l199;
}
localIP = pointerForOop(longAt(localFP + FoxCallerSavedIP));
localSP = localFP + (frameStackedReceiverOffsetNumArgs(((((usqInt)(longAt(localFP + FoxMethod)))) < (startOfMemory())
@@ -5592,7 +5592,7 @@
GIV(stackPointer) = localSP;
GIV(framePointer) = localFP;
ceEnterCogCodePopReceiverReg();
- goto l195;
+ goto l199;
}
localIP = pointerForOop(longAt(localFP + FoxIFSavedIP));
}
@@ -5610,7 +5610,7 @@
longAtPointerput(localSP, localReturnValue);
}
- l195: /* end case */;
+ l199: /* end case */;
break;
case 126:
case 127:
@@ -5643,10 +5643,10 @@
: (byteAt((theFP + FoxIFrameFlags) + 2)) != 0)) {
assert(isContext(frameContext(theFP)));
ourContext = longAt(theFP + FoxThisContext);
- goto l198;
+ goto l202;
}
ourContext = marryFrameSP(theFP, theSP);
- l198: /* end ensureFrameIsMarried:SP: */;
+ l202: /* end ensureFrameIsMarried:SP: */;
localIP -= 1;
/* begin internalPush: */
longAtPointerput((localSP -= BytesPerOop), ourContext);
@@ -5738,9 +5738,6 @@
VM_LABEL(extendedStoreBytecode);
/* begin extendedStoreBytecodePop: */
descriptor = byteAtPointer(++localIP);
- /* begin fetchNextBytecode */
- currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
-
variableType = (((usqInt) descriptor) >> 6) & 3;
variableIndex = descriptor & 0x3F;
value = longAtPointer(localSP);
@@ -5761,9 +5758,16 @@
}
}
longAtput((objOop + BaseHeaderSize) + (((long)variableIndex) << (shiftForWord())), value);
+ l4: /* end storePointerImmutabilityCheck:ofObject:withValue: */;
+ /* begin fetchNextBytecode */
+ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
goto l3;
}
if (variableType == 1) {
+ /* begin fetchNextBytecode */
+ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
if (variableIndex < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
longAtput((localFP + FoxCallerSavedIP) + ((frameNumArgs - variableIndex) * BytesPerWord), value);
}
@@ -5801,6 +5805,10 @@
}
}
longAtput((litVar + BaseHeaderSize) + (((long)ValueIndex) << (shiftForWord())), value);
+ l5: /* end storeLiteralVariable:withValue: */;
+ /* begin fetchNextBytecode */
+ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
goto l3;
}
error("illegal store");
@@ -5822,9 +5830,6 @@
VM_LABEL(extendedStoreAndPopBytecode);
/* begin extendedStoreBytecodePop: */
descriptor = byteAtPointer(++localIP);
- /* begin fetchNextBytecode */
- currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
-
variableType = (((usqInt) descriptor) >> 6) & 3;
variableIndex = descriptor & 0x3F;
value = longAtPointer(localSP);
@@ -5848,16 +5853,23 @@
}
}
longAtput((objOop + BaseHeaderSize) + (((long)variableIndex) << (shiftForWord())), value);
- goto l4;
+ l7: /* end storePointerImmutabilityCheck:ofObject:withValue: */;
+ /* begin fetchNextBytecode */
+ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
+ goto l6;
}
if (variableType == 1) {
+ /* begin fetchNextBytecode */
+ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
if (variableIndex < ((frameNumArgs = byteAt((localFP + FoxIFrameFlags) + 1)))) {
longAtput((localFP + FoxCallerSavedIP) + ((frameNumArgs - variableIndex) * BytesPerWord), value);
}
else {
longAtput(((localFP + FoxIFReceiver) - BytesPerWord) + ((frameNumArgs - variableIndex) * BytesPerWord), value);
}
- goto l4;
+ goto l6;
}
if (variableType == 3) {
/* begin storeLiteralVariable:withValue: */
@@ -5888,10 +5900,14 @@
}
}
longAtput((litVar + BaseHeaderSize) + (((long)ValueIndex) << (shiftForWord())), value);
- goto l4;
+ l8: /* end storeLiteralVariable:withValue: */;
+ /* begin fetchNextBytecode */
+ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
+ goto l6;
}
error("illegal store");
- l4: /* end extendedStoreBytecodePop: */;
+ l6: /* end extendedStoreBytecodePop: */;
}
break;
case 131:
@@ -5942,7 +5958,7 @@
sqInt methodHeader2;
sqInt nArgs;
sqInt numTemps;
- usqInt object;
+ sqInt object;
sqInt ok;
sqInt probe;
sqInt rcvr;
@@ -5967,12 +5983,12 @@
classTablePage = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)fieldIndex) << (shiftForWord())));
if (classTablePage == GIV(nilObj)) {
classOrInteger = null;
- goto l202;
+ goto l206;
}
/* begin fetchPointer:ofObject: */
fieldIndex1 = GIV(lkupClassTag) & ((1LL << (classTableMajorIndexShift())) - 1);
classOrInteger = longAt((classTablePage + BaseHeaderSize) + (((long)fieldIndex1) << (shiftForWord())));
- l202: /* end classAtIndex: */;
+ l206: /* end classAtIndex: */;
GIV(traceLog)[GIV(traceLogIndex)] = classOrInteger;
GIV(traceLog)[GIV(traceLogIndex) + 1] = GIV(messageSelector);
GIV(traceLog)[GIV(traceLogIndex) + 2] = TraceIsFromInterpreter;
@@ -5995,7 +6011,7 @@
GIV(newMethod) = GIV(methodCache)[probe + MethodCacheMethod];
primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe + MethodCachePrimFunction]));
ok = 1;
- goto l200;
+ goto l204;
}
/* second probe */
@@ -6005,7 +6021,7 @@
GIV(newMethod) = GIV(methodCache)[probe + MethodCacheMethod];
primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe + MethodCachePrimFunction]));
ok = 1;
- goto l200;
+ goto l204;
}
probe = (((usqInt) hash) >> 2) & MethodCacheMask;
if (((GIV(methodCache)[probe + MethodCacheSelector]) == GIV(messageSelector))
@@ -6013,10 +6029,10 @@
GIV(newMethod) = GIV(methodCache)[probe + MethodCacheMethod];
primitiveFunctionPointer = ((void (*)()) (GIV(methodCache)[probe + MethodCachePrimFunction]));
ok = 1;
- goto l200;
+ goto l204;
}
ok = 0;
- l200: /* end inlineLookupInMethodCacheSel:classTag: */;
+ l204: /* end inlineLookupInMethodCacheSel:classTag: */;
if (ok) {
/* begin ifAppropriateCompileToNativeCode:selector: */
methodHeader2 = longAt((GIV(newMethod) + BaseHeaderSize) + (((long)HeaderIndex) << (shiftForWord())));
@@ -6072,7 +6088,7 @@
maybeFlagMethodAsInterpreted(GIV(newMethod));
}
}
- goto l199;
+ goto l203;
}
}
/* begin classAtIndex: */
@@ -6083,12 +6099,12 @@
classTablePage1 = longAt((GIV(hiddenRootsObj) + BaseHeaderSize) + (((long)fieldIndex2) << (shiftForWord())));
if (classTablePage1 == GIV(nilObj)) {
GIV(lkupClass) = null;
- goto l203;
+ goto l207;
}
/* begin fetchPointer:ofObject: */
fieldIndex11 = GIV(lkupClassTag) & ((1LL << (classTableMajorIndexShift())) - 1);
GIV(lkupClass) = longAt((classTablePage1 + BaseHeaderSize) + (((long)fieldIndex11) << (shiftForWord())));
- l203: /* end classAtIndex: */;
+ l207: /* end classAtIndex: */;
lookupOrdinarySend();
/* begin internalizeIPandSP */
@@ -6098,7 +6114,7 @@
localFP = pointerForOop(GIV(framePointer));
addNewMethodToCache(GIV(lkupClass));
}
- l199: /* end internalFindNewMethodOrdinary */;
+ l203: /* end internalFindNewMethodOrdinary */;
/* begin internalExecuteNewMethod */
if (primitiveFunctionPointer != 0) {
if ((((unsigned long) primitiveFunctionPointer)) <= MaxQuickPrimitiveIndex) {
@@ -6110,26 +6126,26 @@
if (localPrimIndex >= 264) {
/* begin internalStackTopPut: */
longAtPointerput(localSP, longAt(((longAtPointer(localSP)) + BaseHeaderSize) + (((long)(localPrimIndex - 264)) << (shiftForWord()))));
- goto l201;
+ goto l205;
}
if (localPrimIndex == 256) {
- goto l201;
+ goto l205;
}
if (localPrimIndex == 257) {
longAtPointerput(localSP, GIV(trueObj));
- goto l201;
+ goto l205;
}
if (localPrimIndex == 258) {
longAtPointerput(localSP, GIV(falseObj));
- goto l201;
+ goto l205;
}
if (localPrimIndex == 259) {
longAtPointerput(localSP, GIV(nilObj));
- goto l201;
+ goto l205;
}
longAtPointerput(localSP, (((localPrimIndex - 261) << 3) | 1));
- l201: /* end internalQuickPrimitiveResponse */;
- goto l205;
+ l205: /* end internalQuickPrimitiveResponse */;
+ goto l209;
}
/* begin externalizeIPandSP */
assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
@@ -6191,7 +6207,7 @@
if (succeeded) {
returntoExecutive(popStack(), 1);
browserPluginReturnIfNeeded();
- goto l205;
+ goto l209;
}
}
if (methodHasCogMethod(GIV(newMethod))) {
@@ -6266,11 +6282,11 @@
table = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)PrimErrTableIndex) << (shiftForWord())));
if (GIV(primFailCode) <= (numSlotsOf(table))) {
errorCode = longAt((table + BaseHeaderSize) + (((long)(GIV(primFailCode) - 1)) << (shiftForWord())));
- goto l204;
+ goto l208;
}
}
errorCode = ((GIV(primFailCode) << 3) | 1);
- l204: /* end getErrorObjectFromPrimFailCode */;
+ l208: /* end getErrorObjectFromPrimFailCode */;
longAtPointerput(localSP, errorCode);
}
GIV(primFailCode) = 0;
@@ -6294,7 +6310,7 @@
localFP = pointerForOop(GIV(framePointer));
}
}
- l205: /* end internalExecuteNewMethod */;
+ l209: /* end internalExecuteNewMethod */;
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -6326,8 +6342,8 @@
sqInt senderOop;
sqInt senderOop1;
char *spouseFP;
- char *theFP;
- StackPage *thePage;
+ char * theFP;
+ StackPage * thePage;
StackPage *thePage1;
char *theSP;
sqInt top;
@@ -6343,7 +6359,7 @@
GIV(messageSelector) = longAt((GIV(method) + BaseHeaderSize) + (((long)(byte3 + LiteralStart)) << (shiftForWord())));
GIV(argumentCount) = byte2 & 0x1F;
goto normalSend;
- goto l6;
+ goto l9;
}
if (opType == 1) {
/* begin literal: */
@@ -6351,12 +6367,12 @@
GIV(messageSelector) = longAt((GIV(method) + BaseHeaderSize) + (((long)(byte3 + LiteralStart)) << (shiftForWord())));
GIV(argumentCount) = byte2 & 0x1F;
goto superclassSend;
- goto l6;
+ goto l9;
}
- /* begin fetchNextBytecode */
- currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+ if (opType == 2) {
+ /* begin fetchNextBytecode */
+ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
- if (opType == 2) {
/* begin pushMaybeContextReceiverVariable: */
rcvr = longAt(localFP + FoxIFReceiver);
if ((byte3 <= StackPointerIndex)
@@ -6394,11 +6410,11 @@
value = result;
}
object1 = value;
- goto l8;
+ goto l12;
}
if (isWidowedContext(rcvr)) {
object1 = longAt((rcvr + BaseHeaderSize) + (((long)byte3) << (shiftForWord())));
- goto l8;
+ goto l12;
}
/* begin frameOfMarriedContext: */
senderOop = longAt((rcvr + BaseHeaderSize) + (((long)SenderIndex) << (shiftForWord())));
@@ -6422,7 +6438,7 @@
assert((callerContextOrNil == (nilObject()))
|| (isContext(callerContextOrNil)));
object1 = callerContextOrNil;
- goto l5;
+ goto l10;
}
/* begin ensureFrameIsMarried:SP: */
assert(!(isBaseFrame(spouseFP)));
@@ -6434,40 +6450,46 @@
: (byteAt((callerFP + FoxIFrameFlags) + 2)) != 0)) {
assert(isContext(frameContext(callerFP)));
object1 = longAt(callerFP + FoxThisContext);
- goto l5;
+ goto l10;
}
object1 = marryFrameSP(callerFP, theSP);
- l5: /* end ensureCallerContext: */;
- goto l8;
+ l10: /* end ensureCallerContext: */;
+ goto l12;
}
if (byte3 == StackPointerIndex) {
assert((ReceiverIndex + (stackPointerIndexForFrame(spouseFP))) < (lengthOf(rcvr)));
object1 = (((stackPointerIndexForFrame(spouseFP)) << 3) | 1);
- goto l8;
+ goto l12;
}
if (byte3 == InstructionPointerIndex) {
object1 = instructionPointerForFramecurrentFPcurrentIP(spouseFP, localFP, oopForPointer(localIP));
- goto l8;
+ goto l12;
}
error("bad index");
object1 = 0;
- l8: /* end instVar:ofContext: */;
+ l12: /* end instVar:ofContext: */;
longAtPointerput((localSP -= BytesPerOop), object1);
}
else {
/* begin internalPush: */
longAtPointerput((localSP -= BytesPerOop), longAt((rcvr + BaseHeaderSize) + (((long)byte3) << (shiftForWord()))));
}
- goto l6;
+ goto l9;
}
if (opType == 3) {
+ /* begin fetchNextBytecode */
+ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
/* begin pushLiteralConstant: */
assert(GIV(method) == (iframeMethod(localFP)));
object = longAt((GIV(method) + BaseHeaderSize) + (((long)(byte3 + LiteralStart)) << (shiftForWord())));
longAtPointerput((localSP -= BytesPerOop), object);
- goto l6;
+ goto l9;
}
if (opType == 4) {
+ /* begin fetchNextBytecode */
+ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
/* begin pushLiteralVariable: */
/* push/store/popLiteralVariable all fetch a literal, and either read or write the literal's value field.
@@ -6490,7 +6512,7 @@
/* begin internalPush: */
longAtPointerput((localSP -= BytesPerOop), longAt((litVar1 + BaseHeaderSize) + (((long)ValueIndex) << (shiftForWord()))));
- goto l6;
+ goto l9;
}
top = longAtPointer(localSP);
if (opType == 7) {
@@ -6522,8 +6544,11 @@
}
}
longAtput((litVar + BaseHeaderSize) + (((long)ValueIndex) << (shiftForWord())), top);
- l10: /* end storeLiteralVariable:withValue: */;
- goto l6;
+ l14: /* end storeLiteralVariable:withValue: */;
+ /* begin fetchNextBytecode */
+ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
+ goto l9;
}
if (opType == 6) {
/* begin internalPop: */
@@ -6566,7 +6591,7 @@
if (byte3 == StackPointerIndex) {
ensureContextIsExecutionSafeAfterAssignToStackPointer(rcvr1);
}
- goto l9;
+ goto l13;
}
/* begin frameOfMarriedContext: */
senderOop1 = longAt((rcvr1 + BaseHeaderSize) + (((long)SenderIndex) << (shiftForWord())));
@@ -6588,7 +6613,7 @@
else {
markStackPageMostRecentlyUsed(GIV(stackPage));
}
- goto l9;
+ goto l13;
}
/* begin externalizeIPandSP */
assert((((usqInt)localIP)) != (ceReturnToInterpreterPC()));
@@ -6620,7 +6645,7 @@
localFP = pointerForOop(GIV(framePointer));
markStackPageMostRecentlyUsed(GIV(stackPage));
assertValidExecutionPointersimbarline(((usqInt)localIP), localFP, localSP, 1, __LINE__);
- l9: /* end instVar:ofContext:put: */;
+ l13: /* end instVar:ofContext:put: */;
}
else {
/* begin storePointerImmutabilityCheck:ofObject:withValue: */
@@ -6638,10 +6663,13 @@
}
}
longAtput((rcvr1 + BaseHeaderSize) + (((long)byte3) << (shiftForWord())), top);
- l7: /* end storePointerImmutabilityCheck:ofObject:withValue: */;
+ l11: /* end storePointerImmutabilityCheck:ofObject:withValue: */;
}
+ /* begin fetchNextBytecode */
+ currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
+
}
- l6: /* end case */;
+ l9: /* end case */;
break;
case 133:
/* singleExtendedSuperBytecode */
@@ -6784,10 +6812,10 @@
: (byteAt((theFP + FoxIFrameFlags) + 2)) != 0)) {
assert(isContext(frameContext(theFP)));
ourContext = longAt(theFP + FoxThisContext);
- goto l11;
+ goto l15;
}
ourContext = marryFrameSP(theFP, theSP);
- l11: /* end ensureFrameIsMarried:SP: */;
+ l15: /* end ensureFrameIsMarried:SP: */;
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -6838,13 +6866,13 @@
if ((GIV(freeStart) + numBytes) > (((eden()).limit))) {
error("no room in eden for allocateSmallNewSpaceSlots:format:classIndex:");
array = 0;
- goto l12;
+ goto l16;
}
}
long64Atput(newObj, ((((long)(((usqLong) size))) << (numSlotsFullShift())) + (2LL << (formatShift()))) + ClassArrayCompactIndex);
GIV(freeStart) += numBytes;
array = newObj;
- l12: /* end allocateSmallNewSpaceSlots:format:classIndex: */;
+ l16: /* end allocateSmallNewSpaceSlots:format:classIndex: */;
if (popValues) {
for (i = 0; i < size; i += 1) {
@@ -6891,15 +6919,15 @@
localIP = (localIP + (3)) - 1;
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
- goto l13;
+ goto l17;
}
else {
goto respondToUnknownBytecode;
- goto l13;
+ goto l17;
}
}
- l13: /* end case */;
+ l17: /* end case */;
break;
case 140:
case 506: /*250*/
@@ -7038,10 +7066,10 @@
: (byteAt((theFP + FoxIFrameFlags) + 2)) != 0)) {
assert(isContext(frameContext(theFP)));
context = longAt(theFP + FoxThisContext);
- goto l14;
+ goto l20;
}
context = marryFrameSP(theFP, theSP);
- l14: /* end ensureFrameIsMarried:SP: */;
+ l20: /* end ensureFrameIsMarried:SP: */;
/* begin closureIn:numArgs:instructionPointer:numCopiedValues: */
initialIP = ((oopForPointer(localIP)) + 2) - (GIV(method) + BaseHeaderSize);
/* begin eeInstantiateSmallClassIndex:format:numSlots: */
@@ -7069,13 +7097,13 @@
if ((GIV(freeStart) + numBytes) > (((eden()).limit))) {
error("no room in eden for allocateSmallNewSpaceSlots:format:classIndex:");
newClosure1 = 0;
- goto l15;
+ goto l18;
}
}
long64Atput(newObj, ((((long)(((usqLong) numSlots))) << (numSlotsFullShift())) + (((long)objFormat) << (formatShift()))) + ClassBlockClosureCompactIndex);
GIV(freeStart) += numBytes;
newClosure1 = newObj;
- l15: /* end allocateSmallNewSpaceSlots:format:classIndex: */;
+ l18: /* end allocateSmallNewSpaceSlots:format:classIndex: */;
/* begin storePointerUnchecked:ofObject:withValue: */
assert(!(isForwarded(newClosure1)));
@@ -7255,7 +7283,7 @@
GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)SelectorMustBeBoolean) << (shiftForWord())));
GIV(argumentCount) = 0;
goto normalSend;
- goto l17;
+ goto l21;
}
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -7263,7 +7291,7 @@
}
/* begin internalPop: */
localSP += 1 * BytesPerOop;
- l17: /* end jumplfFalseBy: */;
+ l21: /* end jumplfFalseBy: */;
}
break;
case 160:
@@ -7285,7 +7313,7 @@
localIP += offset;
/* begin ifBackwardsCheckForEvents: */
if (offset >= 0) {
- goto l18;
+ goto l22;
}
if (localSP < GIV(stackLimit)) {
/* begin externalizeIPandSP */
@@ -7302,7 +7330,7 @@
localSP = pointerForOop(GIV(stackPointer));
localFP = pointerForOop(GIV(framePointer));
if (switched) {
- goto l18;
+ goto l22;
}
}
backwardJumpCountByte = byteAt(localFP + ((VMBIGENDIAN
@@ -7331,7 +7359,7 @@
byteAtput(localFP + ((VMBIGENDIAN
? (FoxIFrameFlags + BytesPerWord) - 1
: FoxIFrameFlags)), backwardJumpCountByte);
- l18: /* end ifBackwardsCheckForEvents: */;
+ l22: /* end ifBackwardsCheckForEvents: */;
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -7362,7 +7390,7 @@
GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)SelectorMustBeBoolean) << (shiftForWord())));
GIV(argumentCount) = 0;
goto normalSend;
- goto l19;
+ goto l23;
}
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -7370,7 +7398,7 @@
}
/* begin internalPop: */
localSP += 1 * BytesPerOop;
- l19: /* end jumplfTrueBy: */;
+ l23: /* end jumplfTrueBy: */;
}
break;
case 172:
@@ -7398,7 +7426,7 @@
GIV(messageSelector) = longAt((GIV(specialObjectsOop) + BaseHeaderSize) + (((long)SelectorMustBeBoolean) << (shiftForWord())));
GIV(argumentCount) = 0;
goto normalSend;
- goto l20;
+ goto l24;
}
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
@@ -7406,7 +7434,7 @@
}
/* begin internalPop: */
localSP += 1 * BytesPerOop;
- l20: /* end jumplfFalseBy: */;
+ l24: /* end jumplfFalseBy: */;
}
break;
case 176:
@@ -7441,7 +7469,7 @@
/* begin fetchNextBytecode */
currentBytecode = (byteAtPointer(++localIP)) + GIV(bytecodeSetSelector);
- goto l21;
+ goto l25;
}
}
else {
@@ -7466,20 +7494,20 @@
rot = (((long)rot) << 0x3F) + (((usqInt) (((unsigned long)rot))) >> 1);
bits = rot;
rcvr1 = (((double *) ((&bits))))[0];
- goto l22;
+ goto l26;
}
if ((tagBits == (smallIntegerTag()))
&& (((shift = (64 - (numTagBits())) - (smallFloatMantissaBits())),
(((sqInt) (((long)rcvr) << shift)) >> shift) == rcvr))) {
rcvr1 = ((double) ((rcvr >> 3)) );
- goto l22;
+ goto l26;
}
}
else {
if (((longAt(rcvr)) & (classIndexMask())) == ClassFloatCompactIndex) {
fetchFloatAtinto(rcvr + BaseHeaderSize, result1);
rcvr1 = result1;
- goto l22;
+ goto l26;
}
}
/* begin primitiveFail */
@@ -7487,7 +7515,7 @@
GIV(primFailCode) = 1;
}
rcvr1 = 0.0;
- l22: /* end loadFloatOrIntFrom: */;
+ l26: /* end loadFloatOrIntFrom: */;
/* begin loadFloatOrIntFrom: */
if (((tagBits1 = arg & (tagMask()))) != 0) {
if (tagBits1 == (smallFloatTag())) {
@@ -7502,20 +7530,20 @@
rot1 = (((long)rot1) << 0x3F) + (((usqInt) (((unsigned long)rot1))) >> 1);
bits1 = rot1;
arg1 = (((double *) ((&bits1))))[0];
- goto l23;
+ goto l27;
}
if ((tagBits1 == (smallIntegerTag()))
&& (((shift1 = (64 - (numTagBits())) - (smallFloatMantissaBits())),
(((sqInt) (((long)arg) << shift1)) >> shift1) == arg))) {
arg1 = ((double) ((arg >> 3)) );
- goto l23;
+ goto l27;
}
}
else {
if (((longAt(arg)) & (classIndexMask())) == ClassFloatCompactIndex) {
fetchFloatAtinto(arg + BaseHeaderSize, result2);
arg1 = result2;
- goto l23;
+ goto l27;
}
}
/* begin primitiveFail */
@@ -7523,7 +7551,7 @@
GIV(primFailCode) = 1;
}
arg1 = 0.0;
- l23: /* end loadFloatOrIntFrom: */;
+ l27: /* end loadFloatOrIntFrom: */;
if (!GIV(primFailCode)) {
/* begin pop:thenPushFloat: */
longAtput((sp = GIV(stackPointer) + ((2 - 1) * BytesPerWord)), floatObjectOf(rcvr1 + arg1));
@@ -7538,7 +7566,7 @@
@@ Diff output truncated at 50000 characters. @@
More information about the Vm-dev
mailing list