Skip to content

Commit 57d3cbc

Browse files
committed
CogVM source as per VMMaker.oscog-eem.3546
Fix some longAt:[put:] usages that should have been longAtPointer: surfaced by using USE_INLINE_MEMORY_ACCESSORS with strict versions of clang. Move the exception handler that collects the VMMaker for the CCodeGenerator being built into buildCodeGeneratorForCogit/buildCodeGeneratorForInterpreter, which allows simplifications, e.g. in Slang Test Workspace.text Use inline memory accessors in the Windows clang builds. On arm64 all clang versions tested (14 through 18) produce incorrect code for return:restoringObjectsIn:savedFirstFields:and:savedHashes: with the macro memory interface. Make sure the transcript's characterLimit is raised to 1,000,000 when building a VMMaker image.
1 parent 4ff84f7 commit 57d3cbc

69 files changed

Lines changed: 2999 additions & 3383 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

building/win64ARMv8/common/Makefile.msvc.tools

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,12 @@ WINVER:=-D_WIN64=1 -D_WIN32_WINNT=0x1001 -DWINVER=0x1001
5858
NOBUILTIN:=-D_MT
5959
MACHINE:=arm64
6060

61+
# Several versions of clang (all versions from 14 through 18 as of this writing)
62+
# generate incorrect code for spur segment storage
63+
# (return:restoringObjectsIn:savedFirstFields:and:savedHashes:)
64+
# unless USE_INLINE_MEMORY_ACCESSORS is set.
65+
MEMACCESS:=-DUSE_INLINE_MEMORY_ACCESSORS=1
66+
6167
#!#! UNICODE applies to API calls, _UNICODE to string representation, so one
6268
#!#! must define both.
6369
DEFS:= -D$(VM)VM=1 $(COGDEFS) $(MEMACCESS) $(WINVER) $(JMPDEFS) \

building/win64ARMv8/common/Makefile.tools

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,14 @@ NOBUILTIN:= -D_MT -fno-builtin-printf -fno-builtin-putchar -fno-builtin-fprintf
6161
CFLAGS:= -fdeclspec -msse2 -ggdb2 -m64 \
6262
-mno-rtd -mms-bitfields $(OFLAGS) $(NOBUILTIN) $(WARNINGS)
6363

64+
# Several versions of clang (all versions from 14 through 18 as of this writing)
65+
# generate incorrect code for spur segment storage
66+
# (return:restoringObjectsIn:savedFirstFields:and:savedHashes:)
67+
# unless USE_INLINE_MEMORY_ACCESSORS is set.
68+
MEMACCESS:=-DUSE_INLINE_MEMORY_ACCESSORS=1
69+
6470
TZ:=$(shell date +%Z)
65-
DEFS:= -D$(VM)VM=1 $(COGDEFS) $(WINVER) \
71+
DEFS:= -D$(VM)VM=1 $(COGDEFS) $(MEMACCESS) $(WINVER) \
6672
-DWIN64=1 -DNO_ISNAN -DNO_SERVICE \
6773
$(NDEBUG) -DLSB_FIRST -D'VM_NAME="$(VM_NAME)"' $(XDEFS) $(CROQUET)
6874

building/win64x64/common/Makefile.msvc.tools

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,12 @@ WINVER:=-D_WIN64=1 -D_WIN32_WINNT=0x1001 -DWINVER=0x1001
5858
NOBUILTIN:=-D_MT
5959
MACHINE:=x64
6060

61+
# Several versions of clang (all versions from 14 through 18 as of this writing)
62+
# generate incorrect code for spur segment storage
63+
# (return:restoringObjectsIn:savedFirstFields:and:savedHashes:)
64+
# unless USE_INLINE_MEMORY_ACCESSORS is set.
65+
MEMACCESS:=-DUSE_INLINE_MEMORY_ACCESSORS=1
66+
6167
#!#! UNICODE applies to API calls, _UNICODE to string representation, so one
6268
#!#! must define both.
6369
DEFS:= -D$(VM)VM=1 $(COGDEFS) $(MEMACCESS) $(WINVER) $(JMPDEFS) \

building/win64x64/common/Makefile.tools

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,14 @@ NOBUILTIN:= -D_MT -fno-builtin-printf -fno-builtin-putchar -fno-builtin-fprintf
6161
CFLAGS:= -fdeclspec -msse2 -ggdb2 -m64 \
6262
-mno-rtd -mms-bitfields $(OFLAGS) $(NOBUILTIN) $(WARNINGS)
6363

64+
# Several versions of clang (all versions from 14 through 18 as of this writing)
65+
# generate incorrect code for spur segment storage
66+
# (return:restoringObjectsIn:savedFirstFields:and:savedHashes:)
67+
# unless USE_INLINE_MEMORY_ACCESSORS is set.
68+
MEMACCESS:=-DUSE_INLINE_MEMORY_ACCESSORS=1
69+
6470
TZ:=$(shell date +%Z)
65-
DEFS:= -D$(VM)VM=1 $(COGDEFS) $(WINVER) \
71+
DEFS:= -D$(VM)VM=1 $(COGDEFS) $(MEMACCESS) $(WINVER) \
6672
-DWIN64=1 -DNO_ISNAN -DNO_SERVICE \
6773
$(NDEBUG) -DLSB_FIRST -D'VM_NAME="$(VM_NAME)"' $(XDEFS) $(CROQUET)
6874

image/BuildSqueakSpurTrunkVMMakerImage.st

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
[MCMcmUpdater default doUpdate: false] on: Warning do: [:ex | ex resume: true].
55

66
"Disable underscore as assignment, allowing underscores in method names."
7-
Scanner allowUnderscoreAsAssignment: false.
7+
Scanner allowUnderscoreAsAssignment: false.TranscriptStream characterLimit: 1000000.
88

99
manifest := #(
1010
squeak 'FFI'

image/Slang Test Workspace.text

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

image/Source Generation Workspace.text

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
"The target directory to which sources are generated is specified by VMMaker's DirNames class variable's #sourceTree entry. VMMaker's DirNames is set in its class initialize method. You can edit DirNames using e.g. an Inspector to change the default value of DirNames at: #sourceTree from '..' to the directory of your choice.""To generate all sources evaluate the following"[VMMaker generateAllConfigurationsUnderVersionControl] valueSupplyingAnswer: false."To be more selective choose any of the following"[VMMaker generateAllMTConfigurationsUnderVersionControl] valueSupplyingAnswer: false.[VMMaker generateAllCogConfigurationsUnderVersionControl] valueSupplyingAnswer: false.[VMMaker generateAllSpurConfigurationsUnderVersionControl] valueSupplyingAnswer: false.[VMMaker generateAllSpurLowcodeConfigurations] valueSupplyingAnswer: false.[VMMaker generateAllSpurConfigurations] valueSupplyingAnswer: false.[VMMaker generateAllSistaConfigurationsUnderVersionControl] valueSupplyingAnswer: false.[VMMaker generateAllStackConfigurationsUnderVersionControl] valueSupplyingAnswer: false.[VMMaker generateAllNewspeakConfigurations] valueSupplyingAnswer: false.[VMMaker generateSqueakCogVM] valueSupplyingAnswer: false.[VMMaker generateSqueakStackVM] valueSupplyingAnswer: false.[VMMaker generateSqueakSpurCogVM] valueSupplyingAnswer: false.[VMMaker generateSqueakSpurCog64VM] valueSupplyingAnswer: false.[VMMaker generateSqueakSpurCog64MTVM] valueSupplyingAnswer: false.[VMMaker generateSqueakSpurRegisterCogVM] valueSupplyingAnswer: false.[VMMaker generateSqueakSpurCogSistaVM] valueSupplyingAnswer: false.[VMMaker generateSqueakSpurCogSista64VM] valueSupplyingAnswer: false.[VMMaker generateSqueakSpurStackVM] valueSupplyingAnswer: false.[VMMaker generateSqueakSpurStack64VM] valueSupplyingAnswer: false.VMMaker generateSpur32LeakChecker.VMMaker generateSpur64LeakChecker.VMMaker generateVMPlugins."To generate plugins open a VMMakerTool, drag and drop the plugins you want to build across to the External Plugins list, select each plugin and choose 'generate plugin' from the pop-up menu."VMMakerTool openInWorld."These may be useful in Slang development work."(Gnuifier on: (VMMaker rootDirectory fullNameFor: VMMaker sourceDirName, '/spur64.stack')) interpreterFilename: StackInterpreter sourceFileName; gnuify.(VMMakerFileBisector directory: '../src/spur64.stack' fileName: 'gcc3x-interp.c') import.(VMMakerFileBisector directory: '../src/spur64.cog' fileName: 'cogitX64SysV.c') import.
1+
"The target directory to which sources are generated is specified by VMMaker's DirNames class variable's #sourceTree entry. VMMaker's DirNames is set in its class initialize method. You can edit DirNames using e.g. an Inspector to change the default value of DirNames at: #sourceTree from '..' to the directory of your choice.""To generate all sources evaluate the following"[VMMaker generateAllConfigurationsUnderVersionControl] valueSupplyingAnswer: false."To be more selective choose any of the following"[VMMaker generateAllMTConfigurationsUnderVersionControl] valueSupplyingAnswer: false.[VMMaker generateAllCogConfigurationsUnderVersionControl] valueSupplyingAnswer: false.[VMMaker generateAllSpurConfigurationsUnderVersionControl] valueSupplyingAnswer: false.[VMMaker generateAllSpurLowcodeConfigurations] valueSupplyingAnswer: false.[VMMaker generateAllSpurConfigurations] valueSupplyingAnswer: false.[VMMaker generateAllSistaConfigurationsUnderVersionControl] valueSupplyingAnswer: false.[VMMaker generateAllStackConfigurationsUnderVersionControl] valueSupplyingAnswer: false.[VMMaker generateAllNewspeakConfigurations] valueSupplyingAnswer: false.[VMMaker generateSqueakCogVM] valueSupplyingAnswer: false.[VMMaker generateSqueakStackVM] valueSupplyingAnswer: false.[VMMaker generateSqueakSpurCogVM] valueSupplyingAnswer: false.[VMMaker generateSqueakSpurCog64VM] valueSupplyingAnswer: false.[VMMaker generateSqueakSpurCog64MTVM] valueSupplyingAnswer: false.[VMMaker generateSqueakSpurRegisterCogVM] valueSupplyingAnswer: false.[VMMaker generateSqueakSpurCogSistaVM] valueSupplyingAnswer: false.[VMMaker generateSqueakSpurCogSista64VM] valueSupplyingAnswer: false.[VMMaker generateSqueakSpurStackVM] valueSupplyingAnswer: false.[VMMaker generateSqueakSpurStack64VM] valueSupplyingAnswer: false.VMMaker generateSpur32LeakChecker.VMMaker generateSpur64LeakChecker.VMMaker generateVMPlugins."To generate plugins open a VMMakerTool, drag and drop the plugins you want to build across to the External Plugins list, select each plugin and choose 'generate plugin' from the pop-up menu."VMMakerTool openInWorld."These may be useful in Slang development work."(Gnuifier on: (VMMaker rootDirectory fullNameFor: VMMaker sourceDirName, '/spur64.stack')) interpreterFilename: StackInterpreter sourceFileName; gnuify.(VMMakerCFileBisector directory: '../src/spur64.stack' fileName: 'gcc3x-interp.c') import.(VMMakerCFileBisector directory: '../src/spur64.cog' fileName: 'cogitX64SysV.c') import.

src/plugins/SqueakFFIPrims/X64Win64FFIPlugin.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
/* Automatically generated by
2-
VMPluginCodeGenerator VMMaker.oscog-eem.3478 uuid: b32ccdc8-fc59-4e5c-b64a-901f820e72ca
3-
(Compiler-eem.512)
2+
VMPluginCodeGenerator VMMaker.oscog-eem.3546 uuid: c0fdd7da-d7a5-4bce-8e52-40f2876838bc
3+
(Compiler-eem.514)
44
from
5-
ThreadedX64Win64FFIPlugin VMMaker.oscog-eem.3478 uuid: b32ccdc8-fc59-4e5c-b64a-901f820e72ca
5+
ThreadedX64Win64FFIPlugin VMMaker.oscog-eem.3546 uuid: c0fdd7da-d7a5-4bce-8e52-40f2876838bc
66
*/
7-
static char __buildInfo[] = "ThreadedX64Win64FFIPlugin VMMaker.oscog-eem.3478 uuid: b32ccdc8-fc59-4e5c-b64a-901f820e72ca " __DATE__ ;
7+
static char __buildInfo[] = "ThreadedX64Win64FFIPlugin VMMaker.oscog-eem.3546 uuid: c0fdd7da-d7a5-4bce-8e52-40f2876838bc " __DATE__ ;
88

99

1010
#include "config.h"
@@ -178,7 +178,7 @@ static char __buildInfo[] = "ThreadedX64Win64FFIPlugin VMMaker.oscog-eem.3478 uu
178178
#define MaxNumArgs 15
179179
#define NumFloatRegArgs 4
180180
#define NumIntRegArgs 4
181-
#define PluginVersionInfo " VMMaker.oscog-eem.3478"
181+
#define PluginVersionInfo " VMMaker.oscog-eem.3546"
182182
#define WordSize 8
183183

184184
typedef struct {
@@ -528,7 +528,7 @@ extern sqInt trueObject(void);
528528
extern
529529
#endif
530530
struct VirtualMachine* interpreterProxy;
531-
static const char *moduleName = "X64Win64FFIPlugin VMMaker.oscog-eem.3478 " INT_EXT;
531+
static const char *moduleName = "X64Win64FFIPlugin VMMaker.oscog-eem.3546 " INT_EXT;
532532
static sqInt nilObj;
533533

534534

@@ -742,7 +742,6 @@ ffiArgumentSpecClassin(sqInt oop, sqInt argSpec, sqInt argClass, CalloutState *c
742742
}
743743

744744
/* BUG!! This memory should be 16-byte aligned; Spur guarantees only 8-byte alignment. */
745-
flag("bug");
746745

747746
/* begin ffiPushPointer:in: */
748747
if (((calloutState->integerRegisterIndex)) < NumIntRegArgs) {
@@ -805,7 +804,6 @@ ffiArgumentSpecClassin(sqInt oop, sqInt argSpec, sqInt argClass, CalloutState *c
805804
}
806805

807806
/* BUG!! This memory should be 16-byte aligned; Spur guarantees only 8-byte alignment. */
808-
flag("bug");
809807

810808
/* begin ffiPushPointer:in: */
811809
if (((calloutState->integerRegisterIndex)) < NumIntRegArgs) {

src/spur32.cog.lowcode/cogit.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* Automatically generated by
2-
CCodeGenerator VMMaker.oscog-eem.3535 uuid: 5d68cdd6-e146-48df-836a-2394c8ae29f0
2+
CCodeGenerator VMMaker.oscog-eem.3546 uuid: c0fdd7da-d7a5-4bce-8e52-40f2876838bc
33
(Compiler-eem.514)
44
*/
55

src/spur32.cog.lowcode/cogitARMv5.c

Lines changed: 8 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
/* Automatically generated by
2-
CCodeGenerator VMMaker.oscog-eem.3535 uuid: 5d68cdd6-e146-48df-836a-2394c8ae29f0
2+
CCodeGenerator VMMaker.oscog-eem.3546 uuid: c0fdd7da-d7a5-4bce-8e52-40f2876838bc
33
(Compiler-eem.514)
44
from
5-
StackToRegisterMappingCogit VMMaker.oscog-eem.3535 uuid: 5d68cdd6-e146-48df-836a-2394c8ae29f0
5+
StackToRegisterMappingCogit VMMaker.oscog-eem.3546 uuid: c0fdd7da-d7a5-4bce-8e52-40f2876838bc
66
*/
7-
static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.3535 uuid: 5d68cdd6-e146-48df-836a-2394c8ae29f0 " __DATE__ ;
7+
static char __buildInfo[] = "StackToRegisterMappingCogit VMMaker.oscog-eem.3546 uuid: c0fdd7da-d7a5-4bce-8e52-40f2876838bc " __DATE__ ;
88
char *__cogitBuildInfo = __buildInfo;
99

1010

@@ -1004,7 +1004,7 @@ static sqInt genPrimitiveStringAtPut(void);
10041004
static NoDbgRegParms sqInt genRemoveSmallIntegerTagsInScratchReg(sqInt scratchReg);
10051005
static NoDbgRegParms sqInt genShiftAwaySmallIntegerTagsInScratchReg(sqInt scratchReg);
10061006
static NoDbgRegParms sqInt getLiteralCountOfplusOneinBytesintoscratch(sqInt methodReg, sqInt plusOne, sqInt inBytes, sqInt litCountReg, sqInt scratchReg);
1007-
static NoDbgRegParms sqInt inlineCacheTagForInstance(sqInt oop);
1007+
static NoDbgRegParms usqInt inlineCacheTagForInstance(sqInt oop);
10081008
static NoDbgRegParms AbstractInstruction * jumpNotSmallIntegerUnsignedValueInRegister(sqInt reg);
10091009
static NoDbgRegParms sqInt markAndTraceCacheTagLiteralinatpc(sqInt literal, CogMethod *cogMethodOrNil, usqInt address);
10101010
static sqInt numSmallIntegerBits(void);
@@ -8516,7 +8516,7 @@ callCogCodePopReceiverAndClassRegs(void)
85168516
static NoDbgRegParms sqInt
85178517
ceCPICMissreceiver(CogMethod *cPIC, sqInt receiver)
85188518
{
8519-
sqInt cacheTag;
8519+
usqInt cacheTag;
85208520
sqInt errorSelectorOrNil;
85218521
sqInt methodOrSelectorIndex;
85228522
sqInt newTargetMethodOrNil;
@@ -8651,7 +8651,7 @@ ceMalloc(size_t size)
86518651
static NoDbgRegParms sqInt
86528652
ceSICMiss(sqInt receiver)
86538653
{
8654-
sqInt cacheTag;
8654+
usqInt cacheTag;
86558655
sqInt entryPoint;
86568656
sqInt errorSelectorOrNil;
86578657
sqInt extent;
@@ -12565,7 +12565,6 @@ generateCogFullBlock(void)
1256512565
assert(((startAddress + headerSize) + codeSize) == result);
1256612566
padIfPossibleWithStopsFromto(backEnd, result, ((startAddress + totalSize) - mapSize) - 1);
1256712567
generateMapAtstart((startAddress + totalSize) - 1, startAddress + cbNoSwitchEntryOffset);
12568-
flag("TOCHECK");
1256912568
method = ((CogMethod *) ((((usqInt)startAddress)) + codeToDataDelta));
1257012569
fillInMethodHeadersizeselector(method, totalSize, nilObject());
1257112570
(method->cpicHasMNUCaseOrCMIsFullBlock = 1);
@@ -13883,7 +13882,7 @@ void
1388313882
linkSendAtintooffsetreceiver(sqInt callSiteReturnAddress, CogMethod *sendingMethod, CogMethod *targetMethod, sqInt theEntryOffset, sqInt receiver)
1388413883
{
1388513884
sqInt extent;
13886-
sqInt inlineCacheTag;
13885+
usqInt inlineCacheTag;
1388713886

1388813887
assert((theEntryOffset == cmEntryOffset)
1388913888
|| (theEntryOffset == cmNoCheckEntryOffset));
@@ -19971,7 +19970,6 @@ genGetInlineCacheClassTagFromintoforEntry(sqInt sourceReg, sqInt destReg, sqInt
1997119970

1997219971
/* JumpNonZero: */
1997319972
genConditionalBranchoperand(JumpNonZero, ((sqInt)immLabel));
19974-
flag("endianness");
1997519973

1997619974
/* Get least significant half of header word in destReg */
1997719975

@@ -20005,7 +20003,6 @@ genGetInlineCacheClassTagFromintoforEntry(sqInt sourceReg, sqInt destReg, sqInt
2000520003
jumpCompare = genoperand(Jump, ((sqInt)0));
2000620004

2000720005
/* Get least significant half of header word in destReg */
20008-
flag("endianness");
2000920006
jmpTarget(jumpNotImm, gMoveMwrR(0, sourceReg, destReg));
2001020007
jmpTarget(jumpCompare, gAndCqR(classIndexMask(), destReg));
2001120008
}
@@ -22881,7 +22878,7 @@ getLiteralCountOfplusOneinBytesintoscratch(sqInt methodReg, sqInt plusOne, sqInt
2288122878
c.f. getInlineCacheClassTagFrom:into: & inlineCacheTagForClass: */
2288222879

2288322880
/* CogObjectRepresentationFor32BitSpur>>#inlineCacheTagForInstance: */
22884-
static NoDbgRegParms sqInt
22881+
static NoDbgRegParms usqInt
2288522882
inlineCacheTagForInstance(sqInt oop)
2288622883
{
2288722884
return (isImmediate(oop)
@@ -23664,7 +23661,6 @@ genGetActiveContextLargeinBlock(sqInt isLarge, sqInt isInBlock)
2366423661
? LargeContextSlots
2366523662
: SmallContextSlots);
2366623663
header = headerForSlotsformatclassIndex(slotSize, indexablePointersFormat(), ClassMethodContextCompactIndex);
23667-
flag("endianness");
2366823664

2366923665
/* #MoveAw:R: #gen:literal:operand: */
2367023666
checkLiteralforInstruction(freeStartAddress(), genoperandoperand(MoveAwR, freeStartAddress(), ReceiverResultReg));
@@ -24104,8 +24100,6 @@ genGetBitsofFormatByteOfinto(sqInt mask, sqInt sourceReg, sqInt destReg)
2410424100
{
2410524101
AbstractInstruction *anInstruction;
2410624102

24107-
flag("endianness");
24108-
2410924103
/* begin MoveMb:r:R: */
2411024104
/* begin gen:quickConstant:operand:operand: */
2411124105
anInstruction = genoperandoperandoperand(MoveMbrR, 3, sourceReg, destReg);
@@ -24237,7 +24231,6 @@ genGetClassObjectOfintoscratchRegmayBeAForwarder(sqInt instReg, sqInt destReg, s
2423724231
(anInstruction->dependent = locateLiteral(quickConstant));
2423824232
}
2423924233
jumpIsImm = genConditionalBranchoperand(JumpNonZero, ((sqInt)0));
24240-
flag("endianness");
2424124234

2424224235
/* Get least significant half of header word in destReg */
2424324236

@@ -24361,8 +24354,6 @@ genGetFormatOfintoleastSignificantHalfOfBaseHeaderIntoScratch(sqInt sourceReg, s
2436124354
sqInt quickConstant;
2436224355

2436324356
if (scratchRegOrNone == NoReg) {
24364-
flag("endianness");
24365-
2436624357
/* begin MoveMb:r:R: */
2436724358
/* begin gen:quickConstant:operand:operand: */
2436824359
anInstruction = genoperandoperandoperand(MoveMbrR, 3, sourceReg, destReg);
@@ -28696,7 +28687,6 @@ compileGetErrorCode(void)
2869628687

2869728688
/* #MoveAw:R: #gen:literal:operand: */
2869828689
checkLiteralforInstruction(primFailCodeAddress(), genoperandoperand(MoveAwR, primFailCodeAddress(), TempReg));
28699-
flag("ask concrete code gen if move sets condition codes?");
2870028690

2870128691
/* begin CmpCq:R: */
2870228692
/* begin gen:quickConstant:operand: */
@@ -28859,7 +28849,6 @@ compileInterpreterPrimitiveflags(void (*primitiveRoutine)(void), sqInt flags)
2885928849

2886028850
/* #MoveAw:R: #gen:literal:operand: */
2886128851
checkLiteralforInstruction(primFailCodeAddress(), genoperandoperand(MoveAwR, primFailCodeAddress(), TempReg));
28862-
flag("ask concrete code gen if move sets condition codes?");
2886328852

2886428853
/* begin CmpCq:R: */
2886528854
/* begin gen:quickConstant:operand: */
@@ -29232,7 +29221,6 @@ compileOpenPICnumArgs(sqInt selector, sqInt numArgs)
2923229221
((methodLabel->operands))[1] = 0;
2923329222
compilePICAbort(numArgs);
2923429223
entry = genGetClassTagOfintoscratchReg(ReceiverResultReg, SendNumArgsReg, TempReg);
29235-
flag("lookupInMethodCacheSel:classTag:");
2923629224
cacheBaseReg = NoReg;
2923729225

2923829226
/* Do first of three probes. See CoInterpreter>>lookupInMethodCacheSel:classTag: */
@@ -30191,7 +30179,6 @@ genLookupForPerformNumArgs(sqInt numArgs)
3019130179
sqInt offset;
3019230180

3019330181
genGetInlineCacheClassTagFromintoforEntry(ReceiverResultReg, SendNumArgsReg, 0);
30194-
flag("lookupInMethodCacheSel:classTag:");
3019530182
cacheBaseReg = NoReg;
3019630183

3019730184
/* Do first of three probes. See CoInterpreter>>lookupInMethodCacheSel:classTag: */
@@ -30411,7 +30398,6 @@ genPrimReturnEnterCogCodeEnilopmart(sqInt profiling)
3041130398

3041230399
/* #MoveAw:R: #gen:literal:operand: */
3041330400
checkLiteralforInstruction(primFailCodeAddress(), genoperandoperand(MoveAwR, primFailCodeAddress(), TempReg));
30414-
flag("ask concrete code gen if move sets condition codes?");
3041530401

3041630402
/* begin CmpCq:R: */
3041730403
/* begin gen:quickConstant:operand: */
@@ -31603,8 +31589,6 @@ allocateRegForStackEntryAtnotConflictingWith(sqInt index, sqInt regMask)
3160331589
mask = registerMaskOrNone(stackEntry);
3160431590
if ((mask != 0)
3160531591
&& ((!(mask & regMask)))) {
31606-
flag("TODO");
31607-
3160831592
/* When one does pushDup on a SSRegister
3160931593
followed by an operation reusing the register
3161031594
but mutating the value of the register, then the value that was
@@ -32152,7 +32136,6 @@ compileCogFullBlockMethod(sqInt numCopied)
3215232136
labelCounter = 0;
3215332137
/* end allocateOpcodes:bytecodes:ifFail: */
3215432138
l1:
32155-
flag("TODO");
3215632139
if (((numBlocks = scanMethod())) < 0) {
3215732140
return ((CogMethod *) numBlocks);
3215832141
}
@@ -32393,7 +32376,6 @@ static NoDbgRegParms void
3239332376
compileFullBlockFramelessEntry(sqInt numCopied)
3239432377
{
3239532378
initSimStackForFramelessBlock(initialPC);
32396-
flag("TODO");
3239732379
genLoadSlotsourceRegdestReg(FullClosureReceiverIndex, ReceiverResultReg, Arg0Reg);
3239832380
genEnsureOopInRegNotForwardedscratchRegupdatingSlotin(Arg0Reg, TempReg, FullClosureReceiverIndex, ReceiverResultReg);
3239932381

@@ -32482,7 +32464,6 @@ compileFullBlockMethodFrameBuild(sqInt numCopied)
3248232464

3248332465
/* PushR: */
3248432466
genoperand(PushR, SendNumArgsReg);
32485-
flag("TODO");
3248632467
genLoadSlotsourceRegdestReg(FullClosureReceiverIndex, ClassReg, Arg0Reg);
3248732468
genEnsureOopInRegNotForwardedscratchRegupdatingSlotin(Arg0Reg, TempReg, FullClosureReceiverIndex, ReceiverResultReg);
3248832469

@@ -44885,7 +44866,6 @@ genPrimitivePerformWithArguments(void)
4488544866
/* begin genLookupForPerformWithArguments */
4488644867
jumpImmArray = genJumpImmediate(Arg1Reg);
4488744868
genGetInlineCacheClassTagFromintoforEntry(ReceiverResultReg, SendNumArgsReg, 0);
44888-
flag("lookupInMethodCacheSel:classTag:");
4488944869
cacheBaseReg = NoReg;
4489044870

4489144871
/* Do first of three probes. See CoInterpreter>>lookupInMethodCacheSel:classTag: */
@@ -46709,7 +46689,6 @@ mapDeadDescriptorIfNeeded(BytecodeDescriptor *descriptor)
4670946689
{
4671046690
AbstractInstruction *abstractInstruction;
4671146691

46712-
flag("annotateInstruction");
4671346692
if (((descriptor->isMapped))
4671446693
|| ((inBlock > 0)
4671546694
&& ((descriptor->isMappedInBlock)))) {

0 commit comments

Comments
 (0)