Hi Eliot and others,
I'm trying to build working VMMaker image in order to see what
machine code Cog generates for some simple methods - without
success so far. All this is on Linux on AMD64. Detailed report
on what exactly I did and what errors I got is below.
In short:
(i) does AArch64 sim plugin works on modern linuxes, does anyone
use it there?
(ii) if so, what's the correct incantation to compile it.
(iii) using code in workspace labelled "In-Image Compilation Workspace",
is it supposed to work for every method and every ISA or is it normal
that it fails with DNU for some methods? I managed to compile but the
trivial ones.
Thanks! Jan
==================================================
==== Below details what I did and errors I got ===
I'm using this commit:
commit 330d6779ad2ecbce1f07131f53d75cd168165f0b (HEAD -> Cog, origin/HEAD, origin/Cog)
Author: Christoph Thiede <christoph.thiede(a)student.hpi.de>
Date: Thu Aug 17 13:32:52 2023 +0200
Here's what I did:
* IIUC, first I need to build bochs and BOCHS 64 simulator, so
cd opensmalltalk-vm/building/linux64x64/bochsx64
./conf.COG
./makeem
That built just fine.
* Then I built gdbarm64 simulator:
cd opensmalltalk-vm/building/linux64x64/gdbarm64$
./conf.COG
./makeem
Again, no problem so far.
* Then I tried to build the VM:
cd opensmalltalk-vm/building/linux64x64/squeak.cog.spur/build
./mvm
That failed soon:
.../opensmalltalk-vm/platforms/unix/vm/sqUnixMain.c:1832:10: warning: format string is not a string literal (potentially insecure) [-Wformat-security]
printf(optionStrings[count]);
^~~~~~~~~~~~~~~~~~~~
.../opensmalltalk-vm/platforms/unix/vm/sqUnixMain.c:1832:10: note: treat the string as an argument to avoid this
printf(optionStrings[count]);
^
"%s",
.../opensmalltalk-vm/platforms/unix/vm/sqUnixMain.c:2324:38: error: incompatible function pointer types assigning to 'void (*)(int, siginfo_t *, void *)' from
'void (int, siginfo_t *, ucontext_t *)' (aka 'void (int, siginfo_t *, struct ucontext_t *)') [-Wincompatible-function-pointer-types]
sigsegv_handler_action.sa_sigaction = sigsegv;
^ ~~~~~~~
.../opensmalltalk-vm/platforms/unix/vm/sqUnixMain.c:2331:38: error: incompatible function pointer types assigning to 'void (*)(int, siginfo_t *, void *)' from
'void (int, siginfo_t *, ucontext_t *)' (aka 'void (int, siginfo_t *, struct ucontext_t *)') [-Wincompatible-function-pointer-types]
sigusr1_handler_action.sa_sigaction = sigusr1;
^ ~~~~~~~
1 warning and 2 errors generated.
This is using clang version 16.0.6 (which mvm script enforces on line 20)
* Then I tried to build the VM again, this time with GCC (version 13.2.0 by editing mvm line 20):
cd opensmalltalk-vm/building/linux64x64/squeak.cog.spur/build
./mvm
This failed to compile too, though with different error:
libtool: compile: gcc -Wall -g -O2 -DNDEBUG -DDEBUGVM=0 -msse2 -DCOGMTVM=0 -pthread -DLSB_FIRST=1 -m64 -Wno-missing-braces -Wno-unknown-pragmas -Wno-unused-
value -Wno-unused-label -Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -DHAVE_CONFIG_H -I.../opensmalltalk-
vm/building/linux64x64/squeak.cog.spur/build -I.../opensmalltalk-vm/building/linux64x64/squeak.cog.spur/build -I.../opensmalltalk-vm/platforms/unix/vm -
I.../opensmalltalk-vm/platforms/Cross/vm -I.../opensmalltalk-vm/src/spur64.cog -I/usr/local/include -I.../opensmalltalk-
vm/platforms/Cross/plugins/GdbARMv8Plugin -I../../../../processors/ARM/gdb-8.3.1/include -I../../../../processors/ARM/gdb-8.3.1/sim/aarch64 -m64 -Wno-missing-
braces -Wno-unknown-pragmas -Wno-unused-value -Wno-unused-label -Wno-unused-function -Wno-unused-variable -Wno-unused-but-set-variable -c .../opensmalltalk-
vm/platforms/Cross/plugins/GdbARMv8Plugin/sqGdbARMv8Plugin.c -fPIC -DPIC -o .libs/sqGdbARMv8Plugin.o
In file included from .../opensmalltalk-vm/platforms/Cross/vm/sqMemoryAccess.h:23,
from .../opensmalltalk-vm/platforms/unix/vm/sqPlatformSpecific.h:35,
from .../opensmalltalk-vm/platforms/Cross/vm/sqAssert.h:16,
from .../opensmalltalk-vm/platforms/Cross/plugins/GdbARMv8Plugin/sqGdbARMv8Plugin.c:4:
.../opensmalltalk-vm/building/linux64x64/squeak.cog.spur/build/config.h:40:2: error: #error This file was included too late. Please make sure it is included
earlier
40 | #error This file was included too late. Please make sure it is included earlier
| ^~~~~
.../opensmalltalk-vm/platforms/Cross/plugins/GdbARMv8Plugin/sqGdbARMv8Plugin.c:9:10: fatal error: aarch64/config.h: No such file or directory
9 | #include <aarch64/config.h>
| ^~~~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [Makefile:197: sqGdbARMv8Plugin.lo] Error 1
make: *** [Makefile:557: GdbARMv8Plugin.la] Error 2
* Then I gave up on AArch64 support and tried only with AMD64 by cleaning
opensmalltalk-vm/building/linux64x64/gdbarm64. This time VM compiled fine.
* As a next step, I built VMMaker image:
cd opensmalltalk-vm/image
./buildspurtrunkvmmaker64image.sh -vm ../building/linux64x64/squeak.cog.spur/build/squeak.sh
This worked just fine, producing Spur64VMMaker.image
* Finally, I tried to see AMD64 (since I could not build AArch64 sim plugin) machine code
for some method, so I executed following smalltalk code in a workspace
(which is just a modification of what is suggested in one of pre-opened workspaces
I only changed memory manager class and ISA):
StackToRegisterMappingCogit
genAndDis: SequenceableCollection>>#indexOf:startingAt:ifAbsent:
options: #(ObjectMemory Spur64BitCoMemoryManager ISA X64).
This resulted in DNU:
28 September 2023 1:07:59.435358 pm
VM: unix - Smalltalk
Image: Squeak6.1alpha [latest update: #22775]
SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /home/jv/Projects/Squeak/opensmalltalk-vm/image
Trusted Dir /home/jv/Projects/Squeak/opensmalltalk-vm/image/secure
Untrusted Dir /home/jv/Projects/Squeak/opensmalltalk-vm/image/My Squeak
UndefinedObject(Object)>>doesNotUnderstand: #isCMBlock
Receiver: nil
Arguments and temporary variables:
aMessage: isCMBlock
exception: MessageNotUnderstood: UndefinedObject>>isCMBlock
resumeValue: nil
Receiver's instance variables:
nil
StackToRegisterMappingCogit(Cogit)>>disassembleMethod:on:
Receiver: a StackToRegisterMappingCogit
Arguments and temporary variables:
surrogateOrAddress: nil
aStream: a TranscriptStream
cogMethod: nil
mapEntries: nil
codeRanges: nil
i: nil
iLimiT: nil
Receiver's instance variables:
coInterpreter: a CurrentImageCoInterpreterFacadeFor64BitSpurObjectRepresentation...etc...
objectMemory: a CurrentImageCoInterpreterFacadeFor64BitSpurObjectRepresentation...etc...
objectRepresentation: a CogObjectRepresentationFor64BitSpur
processor: a BochsX64Alien64
rax: 00000101 (257) rbx: 00000000 rcx: 00000000 rdx...etc...
processorLock: a Mutex()
methodZone: a CogMethodZone
methodZoneBase: 5784
codeBase: 1024
lastNInstructions: an OrderedCollection(a DoubleWordArray(0 0 0 0 4193216 41932...etc...
simulatedAddresses: a Dictionary(#argumentCount->9223372036854775932 #ceActivateFailingPrimitiveMethod:...etc...
simulatedTrampolines: a Dictionary(9223372036854775980->MessageSend(#ceSend:super:to:numArgs:...etc...
simulatedVariableGetters: a Dictionary()
simulatedVariableSetters: a Dictionary()
printRegisters: false
printInstructions: false
compilationTrace: 0
clickConfirm: false
clickStepping: false
breakPC: nil
breakBlock: nil
singleStep: true
guardPageSize: 1024
traceFlags: 8
traceStores: 0
breakMethod: nil
methodObj: nil
enumeratingCogMethod: nil
methodHeader: nil
initialPC: 0
endPC: nil
methodOrBlockNumArgs: 0
inBlock: nil
needsFrame: nil
hasYoungReferent: false
hasMovableLiteral: true
primitiveIndex: nil
backEnd: a CogInLineLiteralsX64Compiler
literalsManager: an InLineLiteralsManager
methodLabel: a CogInLineLiteralsX64Compiler (Label 0 @1698)
stackCheckLabel: nil
blockEntryLabel: nil
blockEntryNoContextSwitch: nil
blockNoContextSwitchOffset: nil
stackOverflowCall: a CogInLineLiteralsX64Compiler (MoveCqR 0 ReceiverResultReg ...etc...
sendMiss: a CogInLineLiteralsX64Compiler (Call 1680/690 E8 A0 F0 FF FF @15EB)
missOffset: 48
entryPointMask: 7
checkedEntryAlignment: 0
uncheckedEntryAlignment: 7
cmEntryOffset: 48
entry: a CogInLineLiteralsX64Compiler (Label 1 @16C8)
cmNoCheckEntryOffset: 71
noCheckEntry: a CogInLineLiteralsX64Compiler (Label 3 @1607)
fullBlockEntry: nil
cbEntryOffset: nil
fullBlockNoContextSwitchEntry: nil
cbNoSwitchEntryOffset: nil
picMNUAbort: a CogInLineLiteralsX64Compiler (MoveCqR 0 ClassReg 48 31 C9 @16C0)...etc...
picInterpretAbort: a CogInLineLiteralsX64Compiler (Call 2336/920 E8 58 F2 FF FF...etc...
endCPICCase0: a CogInLineLiteralsX64Compiler (Label 3 @1617)
endCPICCase1: a CogInLineLiteralsX64Compiler (Label 4 @162D)
firstCPICCaseOffset: 87
cPICCaseSize: 22
cPICEndSize: 12
closedPICSize: 216
openPICSize: 360
fixups: a CArrayAccessor on: {a CogSSBytecodeFixup ( 0 ix 2) . a CogSSBytecodeFixup...etc...
abstractOpcodes: a CArrayAccessor on: {a CogInLineLiteralsX64Compiler (MoveCqR ...etc...
generatorTable: a CArrayAccessor on: {a CogBytecodeDescriptor (genPushReceiverVariableBytecode...etc...
byte0: nil
byte1: nil
byte2: nil
byte3: nil
bytecodePC: nil
bytecodeSetOffset: nil
opcodeIndex: 64
numAbstractOpcodes: 100
blockStarts: nil
blockCount: nil
labelCounter: 5
cStackAlignment: 32
expectedSPAlignment: 0
expectedFPAlignment: 16
codeModified: nil
maxLitIndex: nil
ceMethodAbortTrampoline: nil
cePICAbortTrampoline: nil
ceCheckForInterruptTrampoline: 4648
ceCPICMissTrampoline: nil
ceReturnToInterpreterTrampoline: 4872
ceBaseFrameReturnTrampoline: 4920
ceReapAndResetErrorCodeTrampoline: 2768
ceSendMustBeBooleanAddTrueTrampoline: 4544
ceSendMustBeBooleanAddFalseTrampoline: 4488
ceCannotResumeTrampoline: 4800
ceEnterCogCodePopReceiverReg: 4960
ceCallCogCodePopReceiverReg: 4984
ceCallCogCodePopReceiverAndClassRegs: 5008
cePrimReturnEnterCogCode: 5032
cePrimReturnEnterCogCodeProfiling: 5120
ceNonLocalReturnTrampoline: 4600
ceFetchContextInstVarTrampoline: 4696
ceStoreContextInstVarTrampoline: 4744
ceEnclosingObjectTrampoline: nil
ceFlushDCache: nil
ceFlushICache: nil
ceTraceLinkedSendTrampoline: 9223372036854776172
ceTraceBlockActivationTrampoline: 9223372036854776180
ceTraceStoreTrampoline: 9223372036854776188
ceGetFP: 1024
ceGetSP: 1032
ceCaptureCStackPointers: 1040
ceInvokeInterpret: 4840
ordinarySendTrampolines: a CArrayAccessor on: #(1144 1208 1280 1352)
superSendTrampolines: a CArrayAccessor on: #(1408 1480 1552 1624)
directedSuperSendTrampolines: nil
directedSuperBindingSendTrampolines: nil
dynamicSuperSendTrampolines: nil
outerSendTrampolines: nil
selfSendTrampolines: nil
firstSend: 1144
lastSend: 1624
realCEEnterCogCodePopReceiverReg: nil
realCECallCogCodePopReceiverReg: nil
realCECallCogCodePopReceiverAndClassRegs: nil
trampolineTableIndex: 124
trampolineAddresses: a CArrayAccessor on: #('ceGetFP' 1024 'ceGetSP' 1032 'ceCa...etc...
objectReferencesInRuntime: a CArrayAccessor on: #()
runtimeObjectRefIndex: 0
cFramePointerInUse: true
ceTryLockVMOwner: nil
extA: 0
extB: 0
numExtB: 0
tempOop: nil
numIRCs: nil
indexOfIRC: nil
theIRCs: nil
receiverTags: nil
implicitReceiverSendTrampolines: nil
cogMethodSurrogateClass: CogMethodSurrogate64
cogBlockMethodSurrogateClass: CogBlockMethodSurrogate64
nsSendCacheSurrogateClass: NSSendCacheSurrogate64
cPICPrototype: a CogMethodSurrogate64 @5568/16r15C0
cPICEndOfCodeOffset: 209
cPICEndOfCodeLabel: a CogInLineLiteralsX64Compiler (Label 6 @1691)
ceMallocTrampoline: nil
ceFreeTrampoline: nil
ceFFICalloutTrampoline: nil
debugBytecodePointers: a Set()
debugOpcodeIndices: a Set()
disassemblingMethod: nil
cogConstituentIndex: nil
directedSendUsesBinding: nil
processorFrameValid: false
codeToDataDelta: 0
varBaseAddress: 2097160
codeZoneIsExecutableNotWritable: false
debugAPISelector: nil
shortCutTrampolineBlocks: an IdentityDictionary(#ceShortCutTraceBlockActivation:...etc...
ioHighResClock: 996
perMethodProfile: nil
instructionProfile: nil
primitiveGeneratorTable: a CArrayAccessor on: {a CogPrimitiveDescriptor . a CogPrimitiveDescriptor...etc...
introspectionDataIndex: nil
introspectionData: nil
prevBCDescriptor: nil
numPushNilsFunction: #v3:Num:Push:Nils:
pushNilSizeFunction: #v3PushNilSize:numInitialNils:
methodOrBlockNumTemps: nil
regArgsHaveBeenPushed: nil
simStack: a CArrayAccessor on: {a CogSimStackEntry . a CogSimStackEntry . a CogSimStackEntry...etc...
simStackPtr: nil
simSpillBase: nil
ceCallCogCodePopReceiverArg0Regs: 5248
ceCallCogCodePopReceiverArg1Arg0Regs: 5272
methodAbortTrampolines: a CArrayAccessor on: #(1680 1792 1904 2016)
picAbortTrampolines: a CArrayAccessor on: #(2104 2216 2336 2456)
picMissTrampolines: a CArrayAccessor on: #(2552 2608 2664 2720)
ceCall0ArgsPIC: 5296
ceCall1ArgsPIC: 5328
ceCall2ArgsPIC: 5360
debugStackPointers: nil
debugFixupBreaks: a Set()
realCECallCogCodePopReceiverArg0Regs: nil
realCECallCogCodePopReceiverArg1Arg0Regs: nil
deadCode: nil
useTwoPaths: nil
currentCallCleanUpSize: nil
simNativeStack: a CArrayAccessor on: {a CogSimStackNativeEntry . a CogSimStackNativeEntry...etc...
simNativeStackPtr: nil
simNativeSpillBase: nil
simNativeStackSize: nil
hasNativeFrame: nil
compilationPass: nil
StackToRegisterMappingCogit(Cogit)>>disassembleMethod:
Receiver: a StackToRegisterMappingCogit
Arguments and temporary variables:
surrogateOrAddress: nil
Receiver's instance variables:
coInterpreter: a CurrentImageCoInterpreterFacadeFor64BitSpurObjectRepresentation...etc...
objectMemory: a CurrentImageCoInterpreterFacadeFor64BitSpurObjectRepresentation...etc...
objectRepresentation: a CogObjectRepresentationFor64BitSpur
processor: a BochsX64Alien64
rax: 00000101 (257) rbx: 00000000 rcx: 00000000 rdx...etc...
processorLock: a Mutex()
methodZone: a CogMethodZone
methodZoneBase: 5784
codeBase: 1024
lastNInstructions: an OrderedCollection(a DoubleWordArray(0 0 0 0 4193216 41932...etc...
simulatedAddresses: a Dictionary(#argumentCount->9223372036854775932 #ceActivateFailingPrimitiveMethod:...etc...
simulatedTrampolines: a Dictionary(9223372036854775980->MessageSend(#ceSend:super:to:numArgs:...etc...
simulatedVariableGetters: a Dictionary()
simulatedVariableSetters: a Dictionary()
printRegisters: false
printInstructions: false
compilationTrace: 0
clickConfirm: false
clickStepping: false
breakPC: nil
breakBlock: nil
singleStep: true
guardPageSize: 1024
traceFlags: 8
traceStores: 0
breakMethod: nil
methodObj: nil
enumeratingCogMethod: nil
methodHeader: nil
initialPC: 0
endPC: nil
methodOrBlockNumArgs: 0
inBlock: nil
needsFrame: nil
hasYoungReferent: false
hasMovableLiteral: true
primitiveIndex: nil
backEnd: a CogInLineLiteralsX64Compiler
literalsManager: an InLineLiteralsManager
methodLabel: a CogInLineLiteralsX64Compiler (Label 0 @1698)
stackCheckLabel: nil
blockEntryLabel: nil
blockEntryNoContextSwitch: nil
blockNoContextSwitchOffset: nil
stackOverflowCall: a CogInLineLiteralsX64Compiler (MoveCqR 0 ReceiverResultReg ...etc...
sendMiss: a CogInLineLiteralsX64Compiler (Call 1680/690 E8 A0 F0 FF FF @15EB)
missOffset: 48
entryPointMask: 7
checkedEntryAlignment: 0
uncheckedEntryAlignment: 7
cmEntryOffset: 48
entry: a CogInLineLiteralsX64Compiler (Label 1 @16C8)
cmNoCheckEntryOffset: 71
noCheckEntry: a CogInLineLiteralsX64Compiler (Label 3 @1607)
fullBlockEntry: nil
cbEntryOffset: nil
fullBlockNoContextSwitchEntry: nil
cbNoSwitchEntryOffset: nil
picMNUAbort: a CogInLineLiteralsX64Compiler (MoveCqR 0 ClassReg 48 31 C9 @16C0)...etc...
picInterpretAbort: a CogInLineLiteralsX64Compiler (Call 2336/920 E8 58 F2 FF FF...etc...
endCPICCase0: a CogInLineLiteralsX64Compiler (Label 3 @1617)
endCPICCase1: a CogInLineLiteralsX64Compiler (Label 4 @162D)
firstCPICCaseOffset: 87
cPICCaseSize: 22
cPICEndSize: 12
closedPICSize: 216
openPICSize: 360
fixups: a CArrayAccessor on: {a CogSSBytecodeFixup ( 0 ix 2) . a CogSSBytecodeFixup...etc...
abstractOpcodes: a CArrayAccessor on: {a CogInLineLiteralsX64Compiler (MoveCqR ...etc...
generatorTable: a CArrayAccessor on: {a CogBytecodeDescriptor (genPushReceiverVariableBytecode...etc...
byte0: nil
byte1: nil
byte2: nil
byte3: nil
bytecodePC: nil
bytecodeSetOffset: nil
opcodeIndex: 64
numAbstractOpcodes: 100
blockStarts: nil
blockCount: nil
labelCounter: 5
cStackAlignment: 32
expectedSPAlignment: 0
expectedFPAlignment: 16
codeModified: nil
maxLitIndex: nil
ceMethodAbortTrampoline: nil
cePICAbortTrampoline: nil
ceCheckForInterruptTrampoline: 4648
ceCPICMissTrampoline: nil
ceReturnToInterpreterTrampoline: 4872
ceBaseFrameReturnTrampoline: 4920
ceReapAndResetErrorCodeTrampoline: 2768
ceSendMustBeBooleanAddTrueTrampoline: 4544
ceSendMustBeBooleanAddFalseTrampoline: 4488
ceCannotResumeTrampoline: 4800
ceEnterCogCodePopReceiverReg: 4960
ceCallCogCodePopReceiverReg: 4984
ceCallCogCodePopReceiverAndClassRegs: 5008
cePrimReturnEnterCogCode: 5032
cePrimReturnEnterCogCodeProfiling: 5120
ceNonLocalReturnTrampoline: 4600
ceFetchContextInstVarTrampoline: 4696
ceStoreContextInstVarTrampoline: 4744
ceEnclosingObjectTrampoline: nil
ceFlushDCache: nil
ceFlushICache: nil
ceTraceLinkedSendTrampoline: 9223372036854776172
ceTraceBlockActivationTrampoline: 9223372036854776180
ceTraceStoreTrampoline: 9223372036854776188
ceGetFP: 1024
ceGetSP: 1032
ceCaptureCStackPointers: 1040
ceInvokeInterpret: 4840
ordinarySendTrampolines: a CArrayAccessor on: #(1144 1208 1280 1352)
superSendTrampolines: a CArrayAccessor on: #(1408 1480 1552 1624)
directedSuperSendTrampolines: nil
directedSuperBindingSendTrampolines: nil
dynamicSuperSendTrampolines: nil
outerSendTrampolines: nil
selfSendTrampolines: nil
firstSend: 1144
lastSend: 1624
realCEEnterCogCodePopReceiverReg: nil
realCECallCogCodePopReceiverReg: nil
realCECallCogCodePopReceiverAndClassRegs: nil
trampolineTableIndex: 124
trampolineAddresses: a CArrayAccessor on: #('ceGetFP' 1024 'ceGetSP' 1032 'ceCa...etc...
objectReferencesInRuntime: a CArrayAccessor on: #()
runtimeObjectRefIndex: 0
cFramePointerInUse: true
ceTryLockVMOwner: nil
extA: 0
extB: 0
numExtB: 0
tempOop: nil
numIRCs: nil
indexOfIRC: nil
theIRCs: nil
receiverTags: nil
implicitReceiverSendTrampolines: nil
cogMethodSurrogateClass: CogMethodSurrogate64
cogBlockMethodSurrogateClass: CogBlockMethodSurrogate64
nsSendCacheSurrogateClass: NSSendCacheSurrogate64
cPICPrototype: a CogMethodSurrogate64 @5568/16r15C0
cPICEndOfCodeOffset: 209
cPICEndOfCodeLabel: a CogInLineLiteralsX64Compiler (Label 6 @1691)
ceMallocTrampoline: nil
ceFreeTrampoline: nil
ceFFICalloutTrampoline: nil
debugBytecodePointers: a Set()
debugOpcodeIndices: a Set()
disassemblingMethod: nil
cogConstituentIndex: nil
directedSendUsesBinding: nil
processorFrameValid: false
codeToDataDelta: 0
varBaseAddress: 2097160
codeZoneIsExecutableNotWritable: false
debugAPISelector: nil
shortCutTrampolineBlocks: an IdentityDictionary(#ceShortCutTraceBlockActivation:...etc...
ioHighResClock: 996
perMethodProfile: nil
instructionProfile: nil
primitiveGeneratorTable: a CArrayAccessor on: {a CogPrimitiveDescriptor . a CogPrimitiveDescriptor...etc...
introspectionDataIndex: nil
introspectionData: nil
prevBCDescriptor: nil
numPushNilsFunction: #v3:Num:Push:Nils:
pushNilSizeFunction: #v3PushNilSize:numInitialNils:
methodOrBlockNumTemps: nil
regArgsHaveBeenPushed: nil
simStack: a CArrayAccessor on: {a CogSimStackEntry . a CogSimStackEntry . a CogSimStackEntry...etc...
simStackPtr: nil
simSpillBase: nil
ceCallCogCodePopReceiverArg0Regs: 5248
ceCallCogCodePopReceiverArg1Arg0Regs: 5272
methodAbortTrampolines: a CArrayAccessor on: #(1680 1792 1904 2016)
picAbortTrampolines: a CArrayAccessor on: #(2104 2216 2336 2456)
picMissTrampolines: a CArrayAccessor on: #(2552 2608 2664 2720)
ceCall0ArgsPIC: 5296
ceCall1ArgsPIC: 5328
ceCall2ArgsPIC: 5360
debugStackPointers: nil
debugFixupBreaks: a Set()
realCECallCogCodePopReceiverArg0Regs: nil
realCECallCogCodePopReceiverArg1Arg0Regs: nil
deadCode: nil
useTwoPaths: nil
currentCallCleanUpSize: nil
simNativeStack: a CArrayAccessor on: {a CogSimStackNativeEntry . a CogSimStackNativeEntry...etc...
simNativeStackPtr: nil
simNativeSpillBase: nil
simNativeStackSize: nil
hasNativeFrame: nil
compilationPass: nil
StackToRegisterMappingCogit class(Cogit class)>>genAndDis:options:
Receiver: StackToRegisterMappingCogit
Arguments and temporary variables:
methodOrDoitString: (SequenceableCollection>>#indexOf:startingAt:ifAbsent: "a CompiledMethod...etc...
optionsDictionaryOrArray: #(#ObjectMemory #Spur64BitCoMemoryManager #ISA #X64)
tuple: {a CurrentImageCoInterpreterFacadeFor64BitSpurObjectRepresentation . a StackToRegisterMappingCogit...etc...
Receiver's instance variables:
superclass: SimpleStackBasedCogit
methodDict: a MethodDictionary(size 607)
format: 65731
instanceVariables: #('prevBCDescriptor' 'numPushNilsFunction' 'pushNilSizeFunct...etc...
organization: ('accessing' simSelf)
('bytecode generator stores' genGenericStorePop:MaybeContextSlotIndex:needsStoreCheck:needsRestoreRcvr:needsImmutabilityCheck:...etc...
subclasses: {RegisterAllocatingCogit . SistaCogit . StackToRegisterMappingCogitChecker...etc...
name: #StackToRegisterMappingCogit
classPool: a Dictionary(#NeedsMergeFixupFlag->nil #NeedsNonMergeFixupFlag->nil ...etc...
sharedPools: an OrderedCollection(CogCompilationConstants VMMethodCacheConstants...etc...
environment: Smalltalk
category: #'VMMaker-JIT'
timeStamp: 3873358619
generatorTable: a CArrayAccessor on: {a CogBytecodeDescriptor (genPushReceiverVariableBytecode...etc...
primitiveTable: a CArrayAccessor on: {a CogPrimitiveDescriptor . a CogPrimitiveDescriptor...etc...
numPushNilsFunction: #v3:Num:Push:Nils:
pushNilSizeFunction: #v3PushNilSize:numInitialNils:
UndefinedObject>>DoIt
Receiver: nil
Arguments and temporary variables:
Receiver's instance variables:
nil
Compiler>>evaluateCue:ifFail:
Receiver: a Compiler
Arguments and temporary variables:
aCue: a CompilationCue
failBlock: [closure] in Compiler>>evaluateCue:ifFail:logged:
methodNode: DoIt
^ StackToRegisterMappingCogit genAndDis: SequenceableCollecti...etc...
method: (UndefinedObject>>#DoIt "a CompiledMethod(4121528)")
value: nil
Receiver's instance variables:
parser: a Parser
cue: a CompilationCue
Compiler>>evaluateCue:ifFail:logged:
Receiver: a Compiler
Arguments and temporary variables:
aCue: a CompilationCue
failBlock: [closure] in [] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:...etc...
logFlag: true
value: nil
Receiver's instance variables:
parser: a Parser
cue: a CompilationCue
Compiler>>evaluate:in:to:environment:notifying:ifFail:logged:
Receiver: a Compiler
Arguments and temporary variables:
textOrStream: a ReadStream
aContext: nil
receiver: nil
anEnvironment: Smalltalk
aRequestor: a SmalltalkEditor
failBlock: [closure] in [] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:...etc...
logFlag: true
Receiver's instance variables:
parser: a Parser
cue: a CompilationCue
[] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aBlock: [closure] in SmalltalkEditor(TextEditor)>>evaluateSelection
result: nil
rcvr: nil
ctxt: nil
Receiver's instance variables:
morph: a TextMorphForEditView(216877)
model: a Workspace
paragraph: a NewParagraph
markBlock: a CharacterBlock with index 613 and character Character return and r...etc...
pointBlock: a CharacterBlock with index 767 and rectangle 422@290 corner: 422@3...etc...
beginTypeInIndex: nil
emphasisHere: {a TextColor code: Color black}
lastParenLocation: nil
otherInterval: (613 to: 766)
oldInterval: (627 to: 626)
typeAhead: a WriteStream
history: a TextEditorCommandHistory
FullBlockClosure(BlockClosure)>>on:do:
Receiver: [closure] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:
Arguments and temporary variables:
exceptionOrExceptionSet: OutOfScopeNotification
handlerAction: [closure] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:...etc...
handlerActive: true
handlerRearmed: false
Receiver's instance variables:
outerContext: SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:
startpcOrMethod: ([] in TextEditor>>#evaluateSelectionAndDo: "a CompiledBlock(3...etc...
numArgs: 0
receiver: a SmalltalkEditor
SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aBlock: [closure] in SmalltalkEditor(TextEditor)>>evaluateSelection
result: nil
rcvr: nil
ctxt: nil
Receiver's instance variables:
morph: a TextMorphForEditView(216877)
model: a Workspace
paragraph: a NewParagraph
markBlock: a CharacterBlock with index 613 and character Character return and r...etc...
pointBlock: a CharacterBlock with index 767 and rectangle 422@290 corner: 422@3...etc...
beginTypeInIndex: nil
emphasisHere: {a TextColor code: Color black}
lastParenLocation: nil
otherInterval: (613 to: 766)
oldInterval: (627 to: 626)
typeAhead: a WriteStream
history: a TextEditorCommandHistory
SmalltalkEditor(TextEditor)>>evaluateSelection
Receiver: a SmalltalkEditor
Arguments and temporary variables:
Receiver's instance variables:
morph: a TextMorphForEditView(216877)
model: a Workspace
paragraph: a NewParagraph
markBlock: a CharacterBlock with index 613 and character Character return and r...etc...
pointBlock: a CharacterBlock with index 767 and rectangle 422@290 corner: 422@3...etc...
beginTypeInIndex: nil
emphasisHere: {a TextColor code: Color black}
lastParenLocation: nil
otherInterval: (613 to: 766)
oldInterval: (627 to: 626)
typeAhead: a WriteStream
history: a TextEditorCommandHistory
SmalltalkEditor(TextEditor)>>doIt
Receiver: a SmalltalkEditor
Arguments and temporary variables:
Receiver's instance variables:
morph: a TextMorphForEditView(216877)
model: a Workspace
paragraph: a NewParagraph
markBlock: a CharacterBlock with index 613 and character Character return and r...etc...
pointBlock: a CharacterBlock with index 767 and rectangle 422@290 corner: 422@3...etc...
beginTypeInIndex: nil
emphasisHere: {a TextColor code: Color black}
lastParenLocation: nil
otherInterval: (613 to: 766)
oldInterval: (627 to: 626)
typeAhead: a WriteStream
history: a TextEditorCommandHistory
SmalltalkEditor(TextEditor)>>doIt:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aKeyboardEvent: [104@339 keystroke '<Ctrl-Cmd-d>' (100) 3090]
Receiver's instance variables:
morph: a TextMorphForEditView(216877)
model: a Workspace
paragraph: a NewParagraph
markBlock: a CharacterBlock with index 613 and character Character return and r...etc...
pointBlock: a CharacterBlock with index 767 and rectangle 422@290 corner: 422@3...etc...
beginTypeInIndex: nil
emphasisHere: {a TextColor code: Color black}
lastParenLocation: nil
otherInterval: (613 to: 766)
oldInterval: (627 to: 626)
typeAhead: a WriteStream
history: a TextEditorCommandHistory
SmalltalkEditor(TextEditor)>>dispatchOnKeyboardEvent:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
aKeyboardEvent: [104@339 keystroke '<Ctrl-Cmd-d>' (100) 3090]
honorCommandKeys: true
typedChar: $d
Receiver's instance variables:
morph: a TextMorphForEditView(216877)
model: a Workspace
paragraph: a NewParagraph
markBlock: a CharacterBlock with index 613 and character Character return and r...etc...
pointBlock: a CharacterBlock with index 767 and rectangle 422@290 corner: 422@3...etc...
beginTypeInIndex: nil
emphasisHere: {a TextColor code: Color black}
lastParenLocation: nil
otherInterval: (613 to: 766)
oldInterval: (627 to: 626)
typeAhead: a WriteStream
history: a TextEditorCommandHistory
SmalltalkEditor(TextEditor)>>keyStroke:
Receiver: a SmalltalkEditor
Arguments and temporary variables:
anEvent: [104@339 keystroke '<Ctrl-Cmd-d>' (100) 3090]
Receiver's instance variables:
morph: a TextMorphForEditView(216877)
model: a Workspace
paragraph: a NewParagraph
markBlock: a CharacterBlock with index 613 and character Character return and r...etc...
pointBlock: a CharacterBlock with index 767 and rectangle 422@290 corner: 422@3...etc...
beginTypeInIndex: nil
emphasisHere: {a TextColor code: Color black}
lastParenLocation: nil
otherInterval: (613 to: 766)
oldInterval: (627 to: 626)
typeAhead: a WriteStream
history: a TextEditorCommandHistory
[] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
Receiver: a TextMorphForEditView(216877)
Arguments and temporary variables:
evt: [104@339 keystroke '<Ctrl-Cmd-d>' (100) 3090]
action: nil
Receiver's instance variables:
bounds: 0@0 corner: 753@308
owner: a TransformMorph(217319)
submorphs: #()
fullBounds: 0@0 corner: 753@308
color: Color black
extension: a MorphExtension (1612197) [other: (unfocusedSelectionColor -> (Col...etc...
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle(6) Bitmap DejaVu Sans 10.5pt 96ppi 14px Normal
text: a Text for '"See what code the JIT generates for as method in the current...etc...
wrapFlag: true
paragraph: a NewParagraph
editor: a SmalltalkEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: 3@2 corner: 3@2
readOnly: false
autoFit: true
plainTextOnly: false
numCharactersPerLine: nil
editView: a PluggableTextMorphPlus(1615011)
acceptOnCR: false
TextMorphForEditView(TextMorph)>>handleInteraction:fromEvent:
Receiver: a TextMorphForEditView(216877)
Arguments and temporary variables:
interactionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke:...etc...
evt: [104@339 keystroke '<Ctrl-Cmd-d>' (100) 3090]
oldEditor: a SmalltalkEditor
oldParagraph: a NewParagraph
oldText: a Text for '"See what code the JIT generates for as method in the curr...etc...
oldSelection: an OrderedCollection(3@242 corner: 750@290 3@290 corner: 422@306)...etc...
Receiver's instance variables:
bounds: 0@0 corner: 753@308
owner: a TransformMorph(217319)
submorphs: #()
fullBounds: 0@0 corner: 753@308
color: Color black
extension: a MorphExtension (1612197) [other: (unfocusedSelectionColor -> (Col...etc...
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle(6) Bitmap DejaVu Sans 10.5pt 96ppi 14px Normal
text: a Text for '"See what code the JIT generates for as method in the current...etc...
wrapFlag: true
paragraph: a NewParagraph
editor: a SmalltalkEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: 3@2 corner: 3@2
readOnly: false
autoFit: true
plainTextOnly: false
numCharactersPerLine: nil
editView: a PluggableTextMorphPlus(1615011)
acceptOnCR: false
TextMorphForEditView>>handleInteraction:fromEvent:
Receiver: a TextMorphForEditView(216877)
Arguments and temporary variables:
interActionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke:...etc...
evt: [104@339 keystroke '<Ctrl-Cmd-d>' (100) 3090]
Receiver's instance variables:
bounds: 0@0 corner: 753@308
owner: a TransformMorph(217319)
submorphs: #()
fullBounds: 0@0 corner: 753@308
color: Color black
extension: a MorphExtension (1612197) [other: (unfocusedSelectionColor -> (Col...etc...
borderWidth: 0
borderColor: Color black
textStyle: a TextStyle(6) Bitmap DejaVu Sans 10.5pt 96ppi 14px Normal
text: a Text for '"See what code the JIT generates for as method in the current...etc...
wrapFlag: true
paragraph: a NewParagraph
editor: a SmalltalkEditor
container: nil
predecessor: nil
successor: nil
backgroundColor: nil
margins: 3@2 corner: 3@2
readOnly: false
autoFit: true
plainTextOnly: false
numCharactersPerLine: nil
editView: a PluggableTextMorphPlus(1615011)
acceptOnCR: false
--- The full stack ---
UndefinedObject(Object)>>doesNotUnderstand: #isCMBlock
StackToRegisterMappingCogit(Cogit)>>disassembleMethod:on:
StackToRegisterMappingCogit(Cogit)>>disassembleMethod:
StackToRegisterMappingCogit class(Cogit class)>>genAndDis:options:
UndefinedObject>>DoIt
Compiler>>evaluateCue:ifFail:
Compiler>>evaluateCue:ifFail:logged:
Compiler>>evaluate:in:to:environment:notifying:ifFail:logged:
[] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:
FullBlockClosure(BlockClosure)>>on:do:
SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:
SmalltalkEditor(TextEditor)>>evaluateSelection
SmalltalkEditor(TextEditor)>>doIt
SmalltalkEditor(TextEditor)>>doIt:
SmalltalkEditor(TextEditor)>>dispatchOnKeyboardEvent:
SmalltalkEditor(TextEditor)>>keyStroke:
[] in [] in TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView(TextMorph)>>handleInteraction:fromEvent:
TextMorphForEditView>>handleInteraction:fromEvent:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
[] in TextMorphForEditView(TextMorph)>>keyStroke:
StandardToolSet class>>codeCompletionAround:textMorph:keyStroke:
ToolSet class>>codeCompletionAround:textMorph:keyStroke:
TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView>>keyStroke:
TextMorphForEditView(Morph)>>handleKeystroke:
TextMorphForEditView(TextMorph)>>handleKeystroke:
KeyboardEvent>>sentTo:
TextMorphForEditView(Morph)>>handleEvent:
TextMorphForEditView(Morph)>>handleFocusEvent:
MorphicEventDispatcher>>doHandlingForFocusEvent:with:
MorphicEventDispatcher>>dispatchFocusEvent:with:
TextMorphForEditView(Morph)>>processFocusEvent:using:
TextMorphForEditView(Morph)>>processFocusEvent:
[] in [] in [] in HandMorph>>sendFocusEvent:to:clear:
[] in ActiveEventVariable class(DynamicVariable class)>>value:during:
FullBlockClosure(BlockClosure)>>ensure:
ActiveEventVariable class(DynamicVariable class)>>value:during:
[] in ActiveEventVariable class>>value:during:
FullBlockClosure(BlockClosure)>>ensure:
ActiveEventVariable class>>value:during:
KeyboardEvent(MorphicEvent)>>becomeActiveDuring:
[] in [] in HandMorph>>sendFocusEvent:to:clear:
[] in ActiveHandVariable class(DynamicVariable class)>>value:during:
FullBlockClosure(BlockClosure)>>ensure:
ActiveHandVariable class(DynamicVariable class)>>value:during:
[] in ActiveHandVariable class>>value:during:
FullBlockClosure(BlockClosure)>>ensure:
ActiveHandVariable class>>value:during:
HandMorph>>becomeActiveDuring:
[] in HandMorph>>sendFocusEvent:to:clear:
[] in ActiveWorldVariable class(DynamicVariable class)>>value:during:
FullBlockClosure(BlockClosure)>>ensure:
ActiveWorldVariable class(DynamicVariable class)>>value:during:
[] in ActiveWorldVariable class>>value:during:
FullBlockClosure(BlockClosure)>>ensure:
ActiveWorldVariable class>>value:during:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendKeyboardEvent:
HandMorph>>handleEvent:
-- and more not shown --