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@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 --
Hi Jan,
On Thu, Sep 28, 2023 at 5:26 AM Jan Vrany jan@vrany.io wrote:
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?
I don't know. I use macOS almost exclusively for development. I test and use other platforms occasionally. But as far as VMMaker development getting attention, I put my energy into making sure macOS supports all the simulators.
(ii) if so, what's the correct incantation to compile it.
In each platform build you'll find a directory for each of the sims: building/*/{bochsx64,bochsx86,gdbarm32,gdbarm64} and in each directory there is at least a conf.COG and a makeem script.l Most, but not all makeem scripts invoke conf.COG. You need to read to make sure.
So for each sim from bochsx64,bochsx86,gdbarm32,gdbarm64 on the platform you want to run VMMaker (in your case linux64x64) cd to the directory, run makeem. If there are errores report back here, or try and fix and submit a pull request.
This will build the support libraries (the guts of the sims) for the sim plugins src/plugins/{BochsIA32Plugin/BochsIA32Plugin.c,BochsX64Plugin/BochsX64Plugin.c,GdbARMPlugin/GdbARMPlugin.c,GdbARMv8Plugin/GdbARMv8Plugin.c}
The macos and linux VM makefiles make the plugins if the support directories contain teh sim libraries *and* the plugins.ext file in the VM build dir includes the plugin name. This is the case in squeak.cog.spur directories.
e.g. Aeolus.oscogvm$ head -9 building/linux64x64/squeak.cog.spur/plugins.ext # Copied, perhaps edited, from ../../../src/examplePlugins.ext EXTERNAL_PLUGINS = \ MIDIPlugin \ B3DAcceleratorPlugin \ ClipboardExtendedPlugin \ BochsIA32Plugin \ BochsX64Plugin \ GdbARMPlugin \ GdbARMv8Plugin \ Aeolus.oscogvm$
So once the support libs are built build a VM. It should end up with all the relevant plugins in products/sqcogspur64linuxht The destination i defined by the INSTALLDIR var in the mvm file, e.g. building/linux64x64/squeak.cog.spur/build/mvm
Sorry this is so messy.
(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.
It is hoped that it works for all. But this isn't regularly tested. Changes elsewhere sometimes break in-image compilation. Bug reports and fixes gratefully received here. It would be great to add in-9mage compilation checks to a CI system near us, but I'm unable to put in that effort.
Thanks! Jan
HTH
================================================== ==== 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@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)
This is a PITA. Findimng a declaration that works across all platforms is difficult but required. That may imply per-platform macros to define the signature.
- 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
I got bitten by this recently too. Someone changed the way we include config.h and that fucked everything up. It was a house of cards, but there we are. I'm not sure how to fix this. It works on macos, and that's my need.
- 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).
You're missing some secret sauce:
StackToRegisterMappingCogit genAndDis: SequenceableCollection>>#indexOf:startingAt:ifAbsent: options: #(ObjectMemory Spur64BitCoMemoryManager MULTIPLEBYTECODESETS true ISA X64).
Maybe this should be the default for in-image compilation. Sorry.
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 --
Hi,
On Thu, 2023-09-28 at 15:40 -0700, Eliot Miranda wrote:
Hi Jan,
On Thu, Sep 28, 2023 at 5:26 AM Jan Vrany jan@vrany.io wrote:
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?
I don't know. I use macOS almost exclusively for development. I test and use other platforms occasionally. But as far as VMMaker development getting attention, I put my energy into making sure macOS supports all the simulators.
(ii) if so, what's the correct incantation to compile it.
In each platform build you'll find a directory for each of the sims: building/*/{bochsx64,bochsx86,gdbarm32,gdbarm64} and in each directory there is at least a conf.COG and a makeem script.l Most, but not all makeem scripts invoke conf.COG. You need to read to make sure.
Yes, I did all that.
So for each sim from bochsx64,bochsx86,gdbarm32,gdbarm64 on the platform you want to run VMMaker (in your case linux64x64) cd to the directory, run makeem. If there are errores report back here, or try and fix and submit a pull request.
This will build the support libraries (the guts of the sims) for the sim plugins src/plugins/{BochsIA32Plugin/BochsIA32Plugin.c,BochsX64Plugin/BochsX64Plugin.c,GdbARMPlugin/GdbARMPlugin.c,GdbARMv8Plugin/GdbARMv8Plugin.c}
The macos and linux VM makefiles make the plugins if the support directories contain teh sim libraries *and* the plugins.ext file in the VM build dir includes the plugin name. This is the case in squeak.cog.spur directories.
e.g. Aeolus.oscogvm$ head -9 building/linux64x64/squeak.cog.spur/plugins.ext # Copied, perhaps edited, from ../../../src/examplePlugins.ext EXTERNAL_PLUGINS = \ MIDIPlugin \ B3DAcceleratorPlugin \ ClipboardExtendedPlugin \ BochsIA32Plugin \ BochsX64Plugin \ GdbARMPlugin \ GdbARMv8Plugin \ Aeolus.oscogvm$
So once the support libs are built build a VM. It should end up with all the relevant plugins in products/sqcogspur64linuxht The destination i defined by the INSTALLDIR var in the mvm file, e.g. building/linux64x64/squeak.cog.spur/build/mvm
Sorry this is so messy.
(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.
It is hoped that it works for all. But this isn't regularly tested. Changes elsewhere sometimes break in-image compilation. Bug reports and fixes gratefully received here. It would be great to add in-9mage compilation checks to a CI system near us, but I'm unable to put in that effort.
Thanks! Jan
HTH
^ ~~~~~~~ 1 warning and 2 errors generated.
This is using clang version 16.0.6 (which mvm script enforces on line 20)
This is a PITA. Findimng a declaration that works across all platforms is difficult but required. That may imply per-platform macros to define the signature.
Yeah, maybe not forcing clang on Linux would help at least to newcomers :-)
- 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
I got bitten by this recently too. Someone changed the way we include config.h and that fucked everything up. It was a house of cards, but there we are. I'm not sure how to fix this. It works on macos, and that's my need.
I see. I do not have access to macOS so I guess not AArch64 for me.
).
You're missing some secret sauce:
StackToRegisterMappingCogit genAndDis: SequenceableCollection>>#indexOf:startingAt:ifAbsent: options: #(ObjectMemory Spur64BitCoMemoryManager MULTIPLEBYTECODESETS true ISA X64).
Maybe this should be the default for in-image compilation. Sorry.
Perfect, the secret sauce helped! Thanks a lot!
Best, Jan
Hi Eliot,
9 | #include <aarch64/config.h> | ^~~~~~~~~~~~~~~~~~ compilation terminated. make[1]: *** [Makefile:197: sqGdbARMv8Plugin.lo] Error 1 make: *** [Makefile:557: GdbARMv8Plugin.la] Error 2
I got bitten by this recently too. Someone changed the way we include config.h and that fucked everything up. It was a house of cards, but there we are. I'm not sure how to fix this. It works on macos, and that's my need.
With some rather wild hacking I got the thing to compile (and it was not only config.h). See attached patch.
Now I'm getting different error when trying to compile some method in image, see below.
Best, Jan
=================
4 October 2023 4:25:15.314171 pm
VM: unix - Smalltalk Image: Squeak6.1alpha [latest update: #22780]
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
SmallInteger(Object)>>error: Receiver: 158 Arguments and temporary variables: aString: 'Case not found (158), and no otherwise clause' Receiver's instance variables: 158
SmallInteger(Object)>>caseError Receiver: 158 Arguments and temporary variables:
Receiver's instance variables: 158
CogARMv8Compiler>>dispatchConcretize Receiver: a CogARMv8Compiler (MovePerfCnt64RRL @3E8) Arguments and temporary variables:
Receiver's instance variables: opcode: 158 machineCodeSize: nil maxSize: 4 annotation: nil machineCode: a CArrayAccessor on: a WordArray(0 0 0) operands: a CArrayAccessor on: #(0 #undefined 536346624) address: 1000 dependent: nil cogit: a StackToRegisterMappingCogit objectMemory: a CurrentImageCoInterpreterFacadeForSpurObjectRepresentation bcpc: nil
CogARMv8Compiler(CogAbstractInstruction)>>concretizeAt: Receiver: a CogARMv8Compiler (MovePerfCnt64RRL @3E8) Arguments and temporary variables: actualAddress: 1000 Receiver's instance variables: opcode: 158 machineCodeSize: nil maxSize: 4 annotation: nil machineCode: a CArrayAccessor on: a WordArray(0 0 0) operands: a CArrayAccessor on: #(0 #undefined 536346624) address: 1000 dependent: nil cogit: a StackToRegisterMappingCogit objectMemory: a CurrentImageCoInterpreterFacadeForSpurObjectRepresentation bcpc: nil
StackToRegisterMappingCogit>>generateInstructionsAt: Receiver: a StackToRegisterMappingCogit Arguments and temporary variables: eventualAbsoluteAddress: 1000 absoluteAddress: 1000 pcDependentIndex: 0 abstractInstruction: a CogARMv8Compiler (MovePerfCnt64RRL @3E8) fixup: nil i: 0 iLimiT: 2 j: nil jLimiT: nil Receiver's instance variables: coInterpreter: a CurrentImageCoInterpreterFacadeForSpurObjectRepresentation objectMemory: a CurrentImageCoInterpreterFacadeForSpurObjectRepresentation objectRepresentation: a CogObjectRepresentationFor32BitSpur processor: a GdbARMv8Alien64 r28: 0000000000000000 fp: 00000000003FFBD0 (419323...etc... processorLock: a Mutex() methodZone: a CogMethodZone methodZoneBase: 1024 codeBase: 1024 lastNInstructions: an OrderedCollection() simulatedAddresses: a Dictionary(#argumentCount->2147483708 #framePointer->2147...etc... simulatedTrampolines: a Dictionary() 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: nil inBlock: nil needsFrame: nil hasYoungReferent: nil hasMovableLiteral: nil primitiveIndex: nil backEnd: a CogARMv8Compiler literalsManager: an OutOfLineLiteralsManagerFor64Bits methodLabel: a CogARMv8Compiler (Label 0 @3E8) stackCheckLabel: nil blockEntryLabel: nil blockEntryNoContextSwitch: nil blockNoContextSwitchOffset: nil stackOverflowCall: nil sendMiss: nil missOffset: nil entryPointMask: nil checkedEntryAlignment: nil uncheckedEntryAlignment: nil cmEntryOffset: nil entry: nil cmNoCheckEntryOffset: nil noCheckEntry: nil fullBlockEntry: nil cbEntryOffset: nil fullBlockNoContextSwitchEntry: nil cbNoSwitchEntryOffset: nil picMNUAbort: nil picInterpretAbort: nil endCPICCase0: nil endCPICCase1: nil firstCPICCaseOffset: nil cPICCaseSize: nil cPICEndSize: nil closedPICSize: nil openPICSize: nil fixups: a CArrayAccessor on: {a CogSSBytecodeFixup ( 0) . a CogSSBytecodeFixup ...etc... abstractOpcodes: a CArrayAccessor on: {a CogARMv8Compiler (MovePerfCnt64RRL @3E...etc... generatorTable: a CArrayAccessor on: {a CogBytecodeDescriptor (genPushReceiverVariableBytecode...etc... byte0: nil byte1: nil byte2: nil byte3: nil bytecodePC: nil bytecodeSetOffset: nil opcodeIndex: 3 numAbstractOpcodes: 4 blockStarts: nil blockCount: nil labelCounter: 0 cStackAlignment: 16 expectedSPAlignment: 0 expectedFPAlignment: 0 codeModified: nil maxLitIndex: nil ceMethodAbortTrampoline: nil cePICAbortTrampoline: nil ceCheckForInterruptTrampoline: nil ceCPICMissTrampoline: nil ceReturnToInterpreterTrampoline: nil ceBaseFrameReturnTrampoline: nil ceReapAndResetErrorCodeTrampoline: nil ceSendMustBeBooleanAddTrueTrampoline: nil ceSendMustBeBooleanAddFalseTrampoline: nil ceCannotResumeTrampoline: nil ceEnterCogCodePopReceiverReg: nil ceCallCogCodePopReceiverReg: nil ceCallCogCodePopReceiverAndClassRegs: nil cePrimReturnEnterCogCode: nil cePrimReturnEnterCogCodeProfiling: nil ceNonLocalReturnTrampoline: nil ceFetchContextInstVarTrampoline: nil ceStoreContextInstVarTrampoline: nil ceEnclosingObjectTrampoline: nil ceFlushDCache: nil ceFlushICache: nil ceTraceLinkedSendTrampoline: nil ceTraceBlockActivationTrampoline: nil ceTraceStoreTrampoline: nil ceGetFP: nil ceGetSP: nil ceCaptureCStackPointers: nil ceInvokeInterpret: nil ordinarySendTrampolines: a CArrayAccessor on: #(nil nil nil nil) superSendTrampolines: a CArrayAccessor on: #(nil nil nil nil) directedSuperSendTrampolines: a CArrayAccessor on: #(nil nil nil nil) directedSuperBindingSendTrampolines: a CArrayAccessor on: #(nil nil nil nil) dynamicSuperSendTrampolines: nil outerSendTrampolines: nil selfSendTrampolines: nil firstSend: nil lastSend: nil realCEEnterCogCodePopReceiverReg: nil realCECallCogCodePopReceiverReg: nil realCECallCogCodePopReceiverAndClassRegs: nil trampolineTableIndex: 0 trampolineAddresses: a CArrayAccessor on: #(nil nil nil nil nil nil nil nil nil...etc... objectReferencesInRuntime: a CArrayAccessor on: #() runtimeObjectRefIndex: 0 cFramePointerInUse: nil ceTryLockVMOwner: nil extA: 0 extB: 0 numExtB: 0 tempOop: nil numIRCs: nil indexOfIRC: nil theIRCs: nil receiverTags: nil implicitReceiverSendTrampolines: nil cogMethodSurrogateClass: CogMethodSurrogate32 cogBlockMethodSurrogateClass: CogBlockMethodSurrogate32 nsSendCacheSurrogateClass: NSSendCacheSurrogate32 cPICPrototype: nil cPICEndOfCodeOffset: nil cPICEndOfCodeLabel: nil ceMallocTrampoline: nil ceFreeTrampoline: nil ceFFICalloutTrampoline: nil debugBytecodePointers: a Set() debugOpcodeIndices: a Set() disassemblingMethod: nil cogConstituentIndex: nil directedSendUsesBinding: false processorFrameValid: false codeToDataDelta: 0 varBaseAddress: 2097156 codeZoneIsExecutableNotWritable: false debugAPISelector: nil shortCutTrampolineBlocks: an IdentityDictionary(#ceShortCutTraceBlockActivation:...etc... ioHighResClock: nil perMethodProfile: nil instructionProfile: nil primitiveGeneratorTable: a CArrayAccessor on: {a CogPrimitiveDescriptor . a CogPrimitiveDescriptor...etc... introspectionDataIndex: nil introspectionData: nil prevBCDescriptor: nil numPushNilsFunction: #squeakV3orSistaV1:Num:Push:Nils: pushNilSizeFunction: #squeakV3orSistaV1PushNilSize:numInitialNils: methodOrBlockNumTemps: nil regArgsHaveBeenPushed: nil simStack: a CArrayAccessor on: {a CogSimStackEntry . a CogSimStackEntry . a CogSimStackEntry...etc... simStackPtr: nil simSpillBase: nil ceCallCogCodePopReceiverArg0Regs: nil ceCallCogCodePopReceiverArg1Arg0Regs: nil methodAbortTrampolines: a CArrayAccessor on: #(nil nil nil nil) picAbortTrampolines: a CArrayAccessor on: #(nil nil nil nil) picMissTrampolines: a CArrayAccessor on: #(nil nil nil nil) ceCall0ArgsPIC: nil ceCall1ArgsPIC: nil ceCall2ArgsPIC: nil 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)>>outputInstructionsForGeneratedRuntimeAt: Receiver: a StackToRegisterMappingCogit Arguments and temporary variables: startAddress: 1000 size: nil endAddress: nil Receiver's instance variables: coInterpreter: a CurrentImageCoInterpreterFacadeForSpurObjectRepresentation objectMemory: a CurrentImageCoInterpreterFacadeForSpurObjectRepresentation objectRepresentation: a CogObjectRepresentationFor32BitSpur processor: a GdbARMv8Alien64 r28: 0000000000000000 fp: 00000000003FFBD0 (419323...etc... processorLock: a Mutex() methodZone: a CogMethodZone methodZoneBase: 1024 codeBase: 1024 lastNInstructions: an OrderedCollection() simulatedAddresses: a Dictionary(#argumentCount->2147483708 #framePointer->2147...etc... simulatedTrampolines: a Dictionary() 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: nil inBlock: nil needsFrame: nil hasYoungReferent: nil hasMovableLiteral: nil primitiveIndex: nil backEnd: a CogARMv8Compiler literalsManager: an OutOfLineLiteralsManagerFor64Bits methodLabel: a CogARMv8Compiler (Label 0 @3E8) stackCheckLabel: nil blockEntryLabel: nil blockEntryNoContextSwitch: nil blockNoContextSwitchOffset: nil stackOverflowCall: nil sendMiss: nil missOffset: nil entryPointMask: nil checkedEntryAlignment: nil uncheckedEntryAlignment: nil cmEntryOffset: nil entry: nil cmNoCheckEntryOffset: nil noCheckEntry: nil fullBlockEntry: nil cbEntryOffset: nil fullBlockNoContextSwitchEntry: nil cbNoSwitchEntryOffset: nil picMNUAbort: nil picInterpretAbort: nil endCPICCase0: nil endCPICCase1: nil firstCPICCaseOffset: nil cPICCaseSize: nil cPICEndSize: nil closedPICSize: nil openPICSize: nil fixups: a CArrayAccessor on: {a CogSSBytecodeFixup ( 0) . a CogSSBytecodeFixup ...etc... abstractOpcodes: a CArrayAccessor on: {a CogARMv8Compiler (MovePerfCnt64RRL @3E...etc... generatorTable: a CArrayAccessor on: {a CogBytecodeDescriptor (genPushReceiverVariableBytecode...etc... byte0: nil byte1: nil byte2: nil byte3: nil bytecodePC: nil bytecodeSetOffset: nil opcodeIndex: 3 numAbstractOpcodes: 4 blockStarts: nil blockCount: nil labelCounter: 0 cStackAlignment: 16 expectedSPAlignment: 0 expectedFPAlignment: 0 codeModified: nil maxLitIndex: nil ceMethodAbortTrampoline: nil cePICAbortTrampoline: nil ceCheckForInterruptTrampoline: nil ceCPICMissTrampoline: nil ceReturnToInterpreterTrampoline: nil ceBaseFrameReturnTrampoline: nil ceReapAndResetErrorCodeTrampoline: nil ceSendMustBeBooleanAddTrueTrampoline: nil ceSendMustBeBooleanAddFalseTrampoline: nil ceCannotResumeTrampoline: nil ceEnterCogCodePopReceiverReg: nil ceCallCogCodePopReceiverReg: nil ceCallCogCodePopReceiverAndClassRegs: nil cePrimReturnEnterCogCode: nil cePrimReturnEnterCogCodeProfiling: nil ceNonLocalReturnTrampoline: nil ceFetchContextInstVarTrampoline: nil ceStoreContextInstVarTrampoline: nil ceEnclosingObjectTrampoline: nil ceFlushDCache: nil ceFlushICache: nil ceTraceLinkedSendTrampoline: nil ceTraceBlockActivationTrampoline: nil ceTraceStoreTrampoline: nil ceGetFP: nil ceGetSP: nil ceCaptureCStackPointers: nil ceInvokeInterpret: nil ordinarySendTrampolines: a CArrayAccessor on: #(nil nil nil nil) superSendTrampolines: a CArrayAccessor on: #(nil nil nil nil) directedSuperSendTrampolines: a CArrayAccessor on: #(nil nil nil nil) directedSuperBindingSendTrampolines: a CArrayAccessor on: #(nil nil nil nil) dynamicSuperSendTrampolines: nil outerSendTrampolines: nil selfSendTrampolines: nil firstSend: nil lastSend: nil realCEEnterCogCodePopReceiverReg: nil realCECallCogCodePopReceiverReg: nil realCECallCogCodePopReceiverAndClassRegs: nil trampolineTableIndex: 0 trampolineAddresses: a CArrayAccessor on: #(nil nil nil nil nil nil nil nil nil...etc... objectReferencesInRuntime: a CArrayAccessor on: #() runtimeObjectRefIndex: 0 cFramePointerInUse: nil ceTryLockVMOwner: nil extA: 0 extB: 0 numExtB: 0 tempOop: nil numIRCs: nil indexOfIRC: nil theIRCs: nil receiverTags: nil implicitReceiverSendTrampolines: nil cogMethodSurrogateClass: CogMethodSurrogate32 cogBlockMethodSurrogateClass: CogBlockMethodSurrogate32 nsSendCacheSurrogateClass: NSSendCacheSurrogate32 cPICPrototype: nil cPICEndOfCodeOffset: nil cPICEndOfCodeLabel: nil ceMallocTrampoline: nil ceFreeTrampoline: nil ceFFICalloutTrampoline: nil debugBytecodePointers: a Set() debugOpcodeIndices: a Set() disassemblingMethod: nil cogConstituentIndex: nil directedSendUsesBinding: false processorFrameValid: false codeToDataDelta: 0 varBaseAddress: 2097156 codeZoneIsExecutableNotWritable: false debugAPISelector: nil shortCutTrampolineBlocks: an IdentityDictionary(#ceShortCutTraceBlockActivation:...etc... ioHighResClock: nil perMethodProfile: nil instructionProfile: nil primitiveGeneratorTable: a CArrayAccessor on: {a CogPrimitiveDescriptor . a CogPrimitiveDescriptor...etc... introspectionDataIndex: nil introspectionData: nil prevBCDescriptor: nil numPushNilsFunction: #squeakV3orSistaV1:Num:Push:Nils: pushNilSizeFunction: #squeakV3orSistaV1PushNilSize:numInitialNils: methodOrBlockNumTemps: nil regArgsHaveBeenPushed: nil simStack: a CArrayAccessor on: {a CogSimStackEntry . a CogSimStackEntry . a CogSimStackEntry...etc... simStackPtr: nil simSpillBase: nil ceCallCogCodePopReceiverArg0Regs: nil ceCallCogCodePopReceiverArg1Arg0Regs: nil methodAbortTrampolines: a CArrayAccessor on: #(nil nil nil nil) picAbortTrampolines: a CArrayAccessor on: #(nil nil nil nil) picMissTrampolines: a CArrayAccessor on: #(nil nil nil nil) ceCall0ArgsPIC: nil ceCall1ArgsPIC: nil ceCall2ArgsPIC: nil 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)>>initializeSimulationIOHighResClockForProfiling Receiver: a StackToRegisterMappingCogit Arguments and temporary variables:
Receiver's instance variables: coInterpreter: a CurrentImageCoInterpreterFacadeForSpurObjectRepresentation objectMemory: a CurrentImageCoInterpreterFacadeForSpurObjectRepresentation objectRepresentation: a CogObjectRepresentationFor32BitSpur processor: a GdbARMv8Alien64 r28: 0000000000000000 fp: 00000000003FFBD0 (419323...etc... processorLock: a Mutex() methodZone: a CogMethodZone methodZoneBase: 1024 codeBase: 1024 lastNInstructions: an OrderedCollection() simulatedAddresses: a Dictionary(#argumentCount->2147483708 #framePointer->2147...etc... simulatedTrampolines: a Dictionary() 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: nil inBlock: nil needsFrame: nil hasYoungReferent: nil hasMovableLiteral: nil primitiveIndex: nil backEnd: a CogARMv8Compiler literalsManager: an OutOfLineLiteralsManagerFor64Bits methodLabel: a CogARMv8Compiler (Label 0 @3E8) stackCheckLabel: nil blockEntryLabel: nil blockEntryNoContextSwitch: nil blockNoContextSwitchOffset: nil stackOverflowCall: nil sendMiss: nil missOffset: nil entryPointMask: nil checkedEntryAlignment: nil uncheckedEntryAlignment: nil cmEntryOffset: nil entry: nil cmNoCheckEntryOffset: nil noCheckEntry: nil fullBlockEntry: nil cbEntryOffset: nil fullBlockNoContextSwitchEntry: nil cbNoSwitchEntryOffset: nil picMNUAbort: nil picInterpretAbort: nil endCPICCase0: nil endCPICCase1: nil firstCPICCaseOffset: nil cPICCaseSize: nil cPICEndSize: nil closedPICSize: nil openPICSize: nil fixups: a CArrayAccessor on: {a CogSSBytecodeFixup ( 0) . a CogSSBytecodeFixup ...etc... abstractOpcodes: a CArrayAccessor on: {a CogARMv8Compiler (MovePerfCnt64RRL @3E...etc... generatorTable: a CArrayAccessor on: {a CogBytecodeDescriptor (genPushReceiverVariableBytecode...etc... byte0: nil byte1: nil byte2: nil byte3: nil bytecodePC: nil bytecodeSetOffset: nil opcodeIndex: 3 numAbstractOpcodes: 4 blockStarts: nil blockCount: nil labelCounter: 0 cStackAlignment: 16 expectedSPAlignment: 0 expectedFPAlignment: 0 codeModified: nil maxLitIndex: nil ceMethodAbortTrampoline: nil cePICAbortTrampoline: nil ceCheckForInterruptTrampoline: nil ceCPICMissTrampoline: nil ceReturnToInterpreterTrampoline: nil ceBaseFrameReturnTrampoline: nil ceReapAndResetErrorCodeTrampoline: nil ceSendMustBeBooleanAddTrueTrampoline: nil ceSendMustBeBooleanAddFalseTrampoline: nil ceCannotResumeTrampoline: nil ceEnterCogCodePopReceiverReg: nil ceCallCogCodePopReceiverReg: nil ceCallCogCodePopReceiverAndClassRegs: nil cePrimReturnEnterCogCode: nil cePrimReturnEnterCogCodeProfiling: nil ceNonLocalReturnTrampoline: nil ceFetchContextInstVarTrampoline: nil ceStoreContextInstVarTrampoline: nil ceEnclosingObjectTrampoline: nil ceFlushDCache: nil ceFlushICache: nil ceTraceLinkedSendTrampoline: nil ceTraceBlockActivationTrampoline: nil ceTraceStoreTrampoline: nil ceGetFP: nil ceGetSP: nil ceCaptureCStackPointers: nil ceInvokeInterpret: nil ordinarySendTrampolines: a CArrayAccessor on: #(nil nil nil nil) superSendTrampolines: a CArrayAccessor on: #(nil nil nil nil) directedSuperSendTrampolines: a CArrayAccessor on: #(nil nil nil nil) directedSuperBindingSendTrampolines: a CArrayAccessor on: #(nil nil nil nil) dynamicSuperSendTrampolines: nil outerSendTrampolines: nil selfSendTrampolines: nil firstSend: nil lastSend: nil realCEEnterCogCodePopReceiverReg: nil realCECallCogCodePopReceiverReg: nil realCECallCogCodePopReceiverAndClassRegs: nil trampolineTableIndex: 0 trampolineAddresses: a CArrayAccessor on: #(nil nil nil nil nil nil nil nil nil...etc... objectReferencesInRuntime: a CArrayAccessor on: #() runtimeObjectRefIndex: 0 cFramePointerInUse: nil ceTryLockVMOwner: nil extA: 0 extB: 0 numExtB: 0 tempOop: nil numIRCs: nil indexOfIRC: nil theIRCs: nil receiverTags: nil implicitReceiverSendTrampolines: nil cogMethodSurrogateClass: CogMethodSurrogate32 cogBlockMethodSurrogateClass: CogBlockMethodSurrogate32 nsSendCacheSurrogateClass: NSSendCacheSurrogate32 cPICPrototype: nil cPICEndOfCodeOffset: nil cPICEndOfCodeLabel: nil ceMallocTrampoline: nil ceFreeTrampoline: nil ceFFICalloutTrampoline: nil debugBytecodePointers: a Set() debugOpcodeIndices: a Set() disassemblingMethod: nil cogConstituentIndex: nil directedSendUsesBinding: false processorFrameValid: false codeToDataDelta: 0 varBaseAddress: 2097156 codeZoneIsExecutableNotWritable: false debugAPISelector: nil shortCutTrampolineBlocks: an IdentityDictionary(#ceShortCutTraceBlockActivation:...etc... ioHighResClock: nil perMethodProfile: nil instructionProfile: nil primitiveGeneratorTable: a CArrayAccessor on: {a CogPrimitiveDescriptor . a CogPrimitiveDescriptor...etc... introspectionDataIndex: nil introspectionData: nil prevBCDescriptor: nil numPushNilsFunction: #squeakV3orSistaV1:Num:Push:Nils: pushNilSizeFunction: #squeakV3orSistaV1PushNilSize:numInitialNils: methodOrBlockNumTemps: nil regArgsHaveBeenPushed: nil simStack: a CArrayAccessor on: {a CogSimStackEntry . a CogSimStackEntry . a CogSimStackEntry...etc... simStackPtr: nil simSpillBase: nil ceCallCogCodePopReceiverArg0Regs: nil ceCallCogCodePopReceiverArg1Arg0Regs: nil methodAbortTrampolines: a CArrayAccessor on: #(nil nil nil nil) picAbortTrampolines: a CArrayAccessor on: #(nil nil nil nil) picMissTrampolines: a CArrayAccessor on: #(nil nil nil nil) ceCall0ArgsPIC: nil ceCall1ArgsPIC: nil ceCall2ArgsPIC: nil 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
[] in StackToRegisterMappingCogit(Cogit)>>initializeCodeZoneFrom:upTo: Receiver: a StackToRegisterMappingCogit Arguments and temporary variables: startAddress: 1024 endAddress: 4190208 Receiver's instance variables: coInterpreter: a CurrentImageCoInterpreterFacadeForSpurObjectRepresentation objectMemory: a CurrentImageCoInterpreterFacadeForSpurObjectRepresentation objectRepresentation: a CogObjectRepresentationFor32BitSpur processor: a GdbARMv8Alien64 r28: 0000000000000000 fp: 00000000003FFBD0 (419323...etc... processorLock: a Mutex() methodZone: a CogMethodZone methodZoneBase: 1024 codeBase: 1024 lastNInstructions: an OrderedCollection() simulatedAddresses: a Dictionary(#argumentCount->2147483708 #framePointer->2147...etc... simulatedTrampolines: a Dictionary() 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: nil inBlock: nil needsFrame: nil hasYoungReferent: nil hasMovableLiteral: nil primitiveIndex: nil backEnd: a CogARMv8Compiler literalsManager: an OutOfLineLiteralsManagerFor64Bits methodLabel: a CogARMv8Compiler (Label 0 @3E8) stackCheckLabel: nil blockEntryLabel: nil blockEntryNoContextSwitch: nil blockNoContextSwitchOffset: nil stackOverflowCall: nil sendMiss: nil missOffset: nil entryPointMask: nil checkedEntryAlignment: nil uncheckedEntryAlignment: nil cmEntryOffset: nil entry: nil cmNoCheckEntryOffset: nil noCheckEntry: nil fullBlockEntry: nil cbEntryOffset: nil fullBlockNoContextSwitchEntry: nil cbNoSwitchEntryOffset: nil picMNUAbort: nil picInterpretAbort: nil endCPICCase0: nil endCPICCase1: nil firstCPICCaseOffset: nil cPICCaseSize: nil cPICEndSize: nil closedPICSize: nil openPICSize: nil fixups: a CArrayAccessor on: {a CogSSBytecodeFixup ( 0) . a CogSSBytecodeFixup ...etc... abstractOpcodes: a CArrayAccessor on: {a CogARMv8Compiler (MovePerfCnt64RRL @3E...etc... generatorTable: a CArrayAccessor on: {a CogBytecodeDescriptor (genPushReceiverVariableBytecode...etc... byte0: nil byte1: nil byte2: nil byte3: nil bytecodePC: nil bytecodeSetOffset: nil opcodeIndex: 3 numAbstractOpcodes: 4 blockStarts: nil blockCount: nil labelCounter: 0 cStackAlignment: 16 expectedSPAlignment: 0 expectedFPAlignment: 0 codeModified: nil maxLitIndex: nil ceMethodAbortTrampoline: nil cePICAbortTrampoline: nil ceCheckForInterruptTrampoline: nil ceCPICMissTrampoline: nil ceReturnToInterpreterTrampoline: nil ceBaseFrameReturnTrampoline: nil ceReapAndResetErrorCodeTrampoline: nil ceSendMustBeBooleanAddTrueTrampoline: nil ceSendMustBeBooleanAddFalseTrampoline: nil ceCannotResumeTrampoline: nil ceEnterCogCodePopReceiverReg: nil ceCallCogCodePopReceiverReg: nil ceCallCogCodePopReceiverAndClassRegs: nil cePrimReturnEnterCogCode: nil cePrimReturnEnterCogCodeProfiling: nil ceNonLocalReturnTrampoline: nil ceFetchContextInstVarTrampoline: nil ceStoreContextInstVarTrampoline: nil ceEnclosingObjectTrampoline: nil ceFlushDCache: nil ceFlushICache: nil ceTraceLinkedSendTrampoline: nil ceTraceBlockActivationTrampoline: nil ceTraceStoreTrampoline: nil ceGetFP: nil ceGetSP: nil ceCaptureCStackPointers: nil ceInvokeInterpret: nil ordinarySendTrampolines: a CArrayAccessor on: #(nil nil nil nil) superSendTrampolines: a CArrayAccessor on: #(nil nil nil nil) directedSuperSendTrampolines: a CArrayAccessor on: #(nil nil nil nil) directedSuperBindingSendTrampolines: a CArrayAccessor on: #(nil nil nil nil) dynamicSuperSendTrampolines: nil outerSendTrampolines: nil selfSendTrampolines: nil firstSend: nil lastSend: nil realCEEnterCogCodePopReceiverReg: nil realCECallCogCodePopReceiverReg: nil realCECallCogCodePopReceiverAndClassRegs: nil trampolineTableIndex: 0 trampolineAddresses: a CArrayAccessor on: #(nil nil nil nil nil nil nil nil nil...etc... objectReferencesInRuntime: a CArrayAccessor on: #() runtimeObjectRefIndex: 0 cFramePointerInUse: nil ceTryLockVMOwner: nil extA: 0 extB: 0 numExtB: 0 tempOop: nil numIRCs: nil indexOfIRC: nil theIRCs: nil receiverTags: nil implicitReceiverSendTrampolines: nil cogMethodSurrogateClass: CogMethodSurrogate32 cogBlockMethodSurrogateClass: CogBlockMethodSurrogate32 nsSendCacheSurrogateClass: NSSendCacheSurrogate32 cPICPrototype: nil cPICEndOfCodeOffset: nil cPICEndOfCodeLabel: nil ceMallocTrampoline: nil ceFreeTrampoline: nil ceFFICalloutTrampoline: nil debugBytecodePointers: a Set() debugOpcodeIndices: a Set() disassemblingMethod: nil cogConstituentIndex: nil directedSendUsesBinding: false processorFrameValid: false codeToDataDelta: 0 varBaseAddress: 2097156 codeZoneIsExecutableNotWritable: false debugAPISelector: nil shortCutTrampolineBlocks: an IdentityDictionary(#ceShortCutTraceBlockActivation:...etc... ioHighResClock: nil perMethodProfile: nil instructionProfile: nil primitiveGeneratorTable: a CArrayAccessor on: {a CogPrimitiveDescriptor . a CogPrimitiveDescriptor...etc... introspectionDataIndex: nil introspectionData: nil prevBCDescriptor: nil numPushNilsFunction: #squeakV3orSistaV1:Num:Push:Nils: pushNilSizeFunction: #squeakV3orSistaV1PushNilSize:numInitialNils: methodOrBlockNumTemps: nil regArgsHaveBeenPushed: nil simStack: a CArrayAccessor on: {a CogSimStackEntry . a CogSimStackEntry . a CogSimStackEntry...etc... simStackPtr: nil simSpillBase: nil ceCallCogCodePopReceiverArg0Regs: nil ceCallCogCodePopReceiverArg1Arg0Regs: nil methodAbortTrampolines: a CArrayAccessor on: #(nil nil nil nil) picAbortTrampolines: a CArrayAccessor on: #(nil nil nil nil) picMissTrampolines: a CArrayAccessor on: #(nil nil nil nil) ceCall0ArgsPIC: nil ceCall1ArgsPIC: nil ceCall2ArgsPIC: nil 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(VMClass)>>cCode:inSmalltalk: Receiver: a StackToRegisterMappingCogit Arguments and temporary variables: codeStringOrBlock: '' aBlock: [closure] in StackToRegisterMappingCogit(Cogit)>>initializeCodeZoneFrom:upTo:...etc... Receiver's instance variables: coInterpreter: a CurrentImageCoInterpreterFacadeForSpurObjectRepresentation objectMemory: a CurrentImageCoInterpreterFacadeForSpurObjectRepresentation objectRepresentation: a CogObjectRepresentationFor32BitSpur processor: a GdbARMv8Alien64 r28: 0000000000000000 fp: 00000000003FFBD0 (419323...etc... processorLock: a Mutex() methodZone: a CogMethodZone methodZoneBase: 1024 codeBase: 1024 lastNInstructions: an OrderedCollection() simulatedAddresses: a Dictionary(#argumentCount->2147483708 #framePointer->2147...etc... simulatedTrampolines: a Dictionary() 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: nil inBlock: nil needsFrame: nil hasYoungReferent: nil hasMovableLiteral: nil primitiveIndex: nil backEnd: a CogARMv8Compiler literalsManager: an OutOfLineLiteralsManagerFor64Bits methodLabel: a CogARMv8Compiler (Label 0 @3E8) stackCheckLabel: nil blockEntryLabel: nil blockEntryNoContextSwitch: nil blockNoContextSwitchOffset: nil stackOverflowCall: nil sendMiss: nil missOffset: nil entryPointMask: nil checkedEntryAlignment: nil uncheckedEntryAlignment: nil cmEntryOffset: nil entry: nil cmNoCheckEntryOffset: nil noCheckEntry: nil fullBlockEntry: nil cbEntryOffset: nil fullBlockNoContextSwitchEntry: nil cbNoSwitchEntryOffset: nil picMNUAbort: nil picInterpretAbort: nil endCPICCase0: nil endCPICCase1: nil firstCPICCaseOffset: nil cPICCaseSize: nil cPICEndSize: nil closedPICSize: nil openPICSize: nil fixups: a CArrayAccessor on: {a CogSSBytecodeFixup ( 0) . a CogSSBytecodeFixup ...etc... abstractOpcodes: a CArrayAccessor on: {a CogARMv8Compiler (MovePerfCnt64RRL @3E...etc... generatorTable: a CArrayAccessor on: {a CogBytecodeDescriptor (genPushReceiverVariableBytecode...etc... byte0: nil byte1: nil byte2: nil byte3: nil bytecodePC: nil bytecodeSetOffset: nil opcodeIndex: 3 numAbstractOpcodes: 4 blockStarts: nil blockCount: nil labelCounter: 0 cStackAlignment: 16 expectedSPAlignment: 0 expectedFPAlignment: 0 codeModified: nil maxLitIndex: nil ceMethodAbortTrampoline: nil cePICAbortTrampoline: nil ceCheckForInterruptTrampoline: nil ceCPICMissTrampoline: nil ceReturnToInterpreterTrampoline: nil ceBaseFrameReturnTrampoline: nil ceReapAndResetErrorCodeTrampoline: nil ceSendMustBeBooleanAddTrueTrampoline: nil ceSendMustBeBooleanAddFalseTrampoline: nil ceCannotResumeTrampoline: nil ceEnterCogCodePopReceiverReg: nil ceCallCogCodePopReceiverReg: nil ceCallCogCodePopReceiverAndClassRegs: nil cePrimReturnEnterCogCode: nil cePrimReturnEnterCogCodeProfiling: nil ceNonLocalReturnTrampoline: nil ceFetchContextInstVarTrampoline: nil ceStoreContextInstVarTrampoline: nil ceEnclosingObjectTrampoline: nil ceFlushDCache: nil ceFlushICache: nil ceTraceLinkedSendTrampoline: nil ceTraceBlockActivationTrampoline: nil ceTraceStoreTrampoline: nil ceGetFP: nil ceGetSP: nil ceCaptureCStackPointers: nil ceInvokeInterpret: nil ordinarySendTrampolines: a CArrayAccessor on: #(nil nil nil nil) superSendTrampolines: a CArrayAccessor on: #(nil nil nil nil) directedSuperSendTrampolines: a CArrayAccessor on: #(nil nil nil nil) directedSuperBindingSendTrampolines: a CArrayAccessor on: #(nil nil nil nil) dynamicSuperSendTrampolines: nil outerSendTrampolines: nil selfSendTrampolines: nil firstSend: nil lastSend: nil realCEEnterCogCodePopReceiverReg: nil realCECallCogCodePopReceiverReg: nil realCECallCogCodePopReceiverAndClassRegs: nil trampolineTableIndex: 0 trampolineAddresses: a CArrayAccessor on: #(nil nil nil nil nil nil nil nil nil...etc... objectReferencesInRuntime: a CArrayAccessor on: #() runtimeObjectRefIndex: 0 cFramePointerInUse: nil ceTryLockVMOwner: nil extA: 0 extB: 0 numExtB: 0 tempOop: nil numIRCs: nil indexOfIRC: nil theIRCs: nil receiverTags: nil implicitReceiverSendTrampolines: nil cogMethodSurrogateClass: CogMethodSurrogate32 cogBlockMethodSurrogateClass: CogBlockMethodSurrogate32 nsSendCacheSurrogateClass: NSSendCacheSurrogate32 cPICPrototype: nil cPICEndOfCodeOffset: nil cPICEndOfCodeLabel: nil ceMallocTrampoline: nil ceFreeTrampoline: nil ceFFICalloutTrampoline: nil debugBytecodePointers: a Set() debugOpcodeIndices: a Set() disassemblingMethod: nil cogConstituentIndex: nil directedSendUsesBinding: false processorFrameValid: false codeToDataDelta: 0 varBaseAddress: 2097156 codeZoneIsExecutableNotWritable: false debugAPISelector: nil shortCutTrampolineBlocks: an IdentityDictionary(#ceShortCutTraceBlockActivation:...etc... ioHighResClock: nil perMethodProfile: nil instructionProfile: nil primitiveGeneratorTable: a CArrayAccessor on: {a CogPrimitiveDescriptor . a CogPrimitiveDescriptor...etc... introspectionDataIndex: nil introspectionData: nil prevBCDescriptor: nil numPushNilsFunction: #squeakV3orSistaV1:Num:Push:Nils: pushNilSizeFunction: #squeakV3orSistaV1PushNilSize:numInitialNils: methodOrBlockNumTemps: nil regArgsHaveBeenPushed: nil simStack: a CArrayAccessor on: {a CogSimStackEntry . a CogSimStackEntry . a CogSimStackEntry...etc... simStackPtr: nil simSpillBase: nil ceCallCogCodePopReceiverArg0Regs: nil ceCallCogCodePopReceiverArg1Arg0Regs: nil methodAbortTrampolines: a CArrayAccessor on: #(nil nil nil nil) picAbortTrampolines: a CArrayAccessor on: #(nil nil nil nil) picMissTrampolines: a CArrayAccessor on: #(nil nil nil nil) ceCall0ArgsPIC: nil ceCall1ArgsPIC: nil ceCall2ArgsPIC: nil 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)>>initializeCodeZoneFrom:upTo: Receiver: a StackToRegisterMappingCogit Arguments and temporary variables: startAddress: 1024 endAddress: 4190208 Receiver's instance variables: coInterpreter: a CurrentImageCoInterpreterFacadeForSpurObjectRepresentation objectMemory: a CurrentImageCoInterpreterFacadeForSpurObjectRepresentation objectRepresentation: a CogObjectRepresentationFor32BitSpur processor: a GdbARMv8Alien64 r28: 0000000000000000 fp: 00000000003FFBD0 (419323...etc... processorLock: a Mutex() methodZone: a CogMethodZone methodZoneBase: 1024 codeBase: 1024 lastNInstructions: an OrderedCollection() simulatedAddresses: a Dictionary(#argumentCount->2147483708 #framePointer->2147...etc... simulatedTrampolines: a Dictionary() 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: nil inBlock: nil needsFrame: nil hasYoungReferent: nil hasMovableLiteral: nil primitiveIndex: nil backEnd: a CogARMv8Compiler literalsManager: an OutOfLineLiteralsManagerFor64Bits methodLabel: a CogARMv8Compiler (Label 0 @3E8) stackCheckLabel: nil blockEntryLabel: nil blockEntryNoContextSwitch: nil blockNoContextSwitchOffset: nil stackOverflowCall: nil sendMiss: nil missOffset: nil entryPointMask: nil checkedEntryAlignment: nil uncheckedEntryAlignment: nil cmEntryOffset: nil entry: nil cmNoCheckEntryOffset: nil noCheckEntry: nil fullBlockEntry: nil cbEntryOffset: nil fullBlockNoContextSwitchEntry: nil cbNoSwitchEntryOffset: nil picMNUAbort: nil picInterpretAbort: nil endCPICCase0: nil endCPICCase1: nil firstCPICCaseOffset: nil cPICCaseSize: nil cPICEndSize: nil closedPICSize: nil openPICSize: nil fixups: a CArrayAccessor on: {a CogSSBytecodeFixup ( 0) . a CogSSBytecodeFixup ...etc... abstractOpcodes: a CArrayAccessor on: {a CogARMv8Compiler (MovePerfCnt64RRL @3E...etc... generatorTable: a CArrayAccessor on: {a CogBytecodeDescriptor (genPushReceiverVariableBytecode...etc... byte0: nil byte1: nil byte2: nil byte3: nil bytecodePC: nil bytecodeSetOffset: nil opcodeIndex: 3 numAbstractOpcodes: 4 blockStarts: nil blockCount: nil labelCounter: 0 cStackAlignment: 16 expectedSPAlignment: 0 expectedFPAlignment: 0 codeModified: nil maxLitIndex: nil ceMethodAbortTrampoline: nil cePICAbortTrampoline: nil ceCheckForInterruptTrampoline: nil ceCPICMissTrampoline: nil ceReturnToInterpreterTrampoline: nil ceBaseFrameReturnTrampoline: nil ceReapAndResetErrorCodeTrampoline: nil ceSendMustBeBooleanAddTrueTrampoline: nil ceSendMustBeBooleanAddFalseTrampoline: nil ceCannotResumeTrampoline: nil ceEnterCogCodePopReceiverReg: nil ceCallCogCodePopReceiverReg: nil ceCallCogCodePopReceiverAndClassRegs: nil cePrimReturnEnterCogCode: nil cePrimReturnEnterCogCodeProfiling: nil ceNonLocalReturnTrampoline: nil ceFetchContextInstVarTrampoline: nil ceStoreContextInstVarTrampoline: nil ceEnclosingObjectTrampoline: nil ceFlushDCache: nil ceFlushICache: nil ceTraceLinkedSendTrampoline: nil ceTraceBlockActivationTrampoline: nil ceTraceStoreTrampoline: nil ceGetFP: nil ceGetSP: nil ceCaptureCStackPointers: nil ceInvokeInterpret: nil ordinarySendTrampolines: a CArrayAccessor on: #(nil nil nil nil) superSendTrampolines: a CArrayAccessor on: #(nil nil nil nil) directedSuperSendTrampolines: a CArrayAccessor on: #(nil nil nil nil) directedSuperBindingSendTrampolines: a CArrayAccessor on: #(nil nil nil nil) dynamicSuperSendTrampolines: nil outerSendTrampolines: nil selfSendTrampolines: nil firstSend: nil lastSend: nil realCEEnterCogCodePopReceiverReg: nil realCECallCogCodePopReceiverReg: nil realCECallCogCodePopReceiverAndClassRegs: nil trampolineTableIndex: 0 trampolineAddresses: a CArrayAccessor on: #(nil nil nil nil nil nil nil nil nil...etc... objectReferencesInRuntime: a CArrayAccessor on: #() runtimeObjectRefIndex: 0 cFramePointerInUse: nil ceTryLockVMOwner: nil extA: 0 extB: 0 numExtB: 0 tempOop: nil numIRCs: nil indexOfIRC: nil theIRCs: nil receiverTags: nil implicitReceiverSendTrampolines: nil cogMethodSurrogateClass: CogMethodSurrogate32 cogBlockMethodSurrogateClass: CogBlockMethodSurrogate32 nsSendCacheSurrogateClass: NSSendCacheSurrogate32 cPICPrototype: nil cPICEndOfCodeOffset: nil cPICEndOfCodeLabel: nil ceMallocTrampoline: nil ceFreeTrampoline: nil ceFFICalloutTrampoline: nil debugBytecodePointers: a Set() debugOpcodeIndices: a Set() disassemblingMethod: nil cogConstituentIndex: nil directedSendUsesBinding: false processorFrameValid: false codeToDataDelta: 0 varBaseAddress: 2097156 codeZoneIsExecutableNotWritable: false debugAPISelector: nil shortCutTrampolineBlocks: an IdentityDictionary(#ceShortCutTraceBlockActivation:...etc... ioHighResClock: nil perMethodProfile: nil instructionProfile: nil primitiveGeneratorTable: a CArrayAccessor on: {a CogPrimitiveDescriptor . a CogPrimitiveDescriptor...etc... introspectionDataIndex: nil introspectionData: nil prevBCDescriptor: nil numPushNilsFunction: #squeakV3orSistaV1:Num:Push:Nils: pushNilSizeFunction: #squeakV3orSistaV1PushNilSize:numInitialNils: methodOrBlockNumTemps: nil regArgsHaveBeenPushed: nil simStack: a CArrayAccessor on: {a CogSimStackEntry . a CogSimStackEntry . a CogSimStackEntry...etc... simStackPtr: nil simSpillBase: nil ceCallCogCodePopReceiverArg0Regs: nil ceCallCogCodePopReceiverArg1Arg0Regs: nil methodAbortTrampolines: a CArrayAccessor on: #(nil nil nil nil) picAbortTrampolines: a CArrayAccessor on: #(nil nil nil nil) picMissTrampolines: a CArrayAccessor on: #(nil nil nil nil) ceCall0ArgsPIC: nil ceCall1ArgsPIC: nil ceCall2ArgsPIC: nil 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
[] in StackToRegisterMappingCogit class(Cogit class)>>initializedInstanceForTests: Receiver: StackToRegisterMappingCogit Arguments and temporary variables: optionsDictionaryOrArray: #(#ObjectMemory #Spur32BitCoMemoryManager #MULTIPLEBYTECODESETS...etc... cogit: a StackToRegisterMappingCogit coInterpreter: a CurrentImageCoInterpreterFacadeForSpurObjectRepresentation rumpStackSize: 4096 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: 3873888354 generatorTable: a CArrayAccessor on: {a CogBytecodeDescriptor (genPushReceiverVariableBytecode...etc... primitiveTable: a CArrayAccessor on: {a CogPrimitiveDescriptor . a CogPrimitiveDescriptor...etc... numPushNilsFunction: #squeakV3orSistaV1:Num:Push:Nils: pushNilSizeFunction: #squeakV3orSistaV1PushNilSize:numInitialNils:
FullBlockClosure(BlockClosure)>>on:do: Receiver: [closure] in StackToRegisterMappingCogit class(Cogit class)>>initializedInstanceForTests: Arguments and temporary variables: exceptionOrExceptionSet: Notification handlerAction: [closure] in StackToRegisterMappingCogit class(Cogit class)>>initializedInstanceForTests:...etc... handlerActive: true handlerRearmed: false Receiver's instance variables: outerContext: StackToRegisterMappingCogit class(Cogit class)>>initializedInstanceForTests:...etc... startpcOrMethod: ([] in Cogit class>>#initializedInstanceForTests: "a CompiledBlock...etc... numArgs: 0 receiver: StackToRegisterMappingCogit
StackToRegisterMappingCogit class(Cogit class)>>initializedInstanceForTests: Receiver: StackToRegisterMappingCogit Arguments and temporary variables: optionsDictionaryOrArray: #(#ObjectMemory #Spur32BitCoMemoryManager #MULTIPLEBYTECODESETS...etc... cogit: a StackToRegisterMappingCogit coInterpreter: a CurrentImageCoInterpreterFacadeForSpurObjectRepresentation 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: 3873888354 generatorTable: a CArrayAccessor on: {a CogBytecodeDescriptor (genPushReceiverVariableBytecode...etc... primitiveTable: a CArrayAccessor on: {a CogPrimitiveDescriptor . a CogPrimitiveDescriptor...etc... numPushNilsFunction: #squeakV3orSistaV1:Num:Push:Nils: pushNilSizeFunction: #squeakV3orSistaV1PushNilSize:numInitialNils:
StackToRegisterMappingCogit class(Cogit class)>>cog:selectorOrNumCopied:options: Receiver: StackToRegisterMappingCogit Arguments and temporary variables: aCompiledMethod: (SequenceableCollection>>#indexOf:startingAt:ifAbsent: "a CompiledMethod...etc... selectorOrNumCopied: #indexOf:startingAt:ifAbsent: optionsDictionaryOrArray: #(#ObjectMemory #Spur32BitCoMemoryManager #MULTIPLEBYTECODESETS...etc... cogit: nil coInterpreter: nil 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: 3873888354 generatorTable: a CArrayAccessor on: {a CogBytecodeDescriptor (genPushReceiverVariableBytecode...etc... primitiveTable: a CArrayAccessor on: {a CogPrimitiveDescriptor . a CogPrimitiveDescriptor...etc... numPushNilsFunction: #squeakV3orSistaV1:Num:Push:Nils: pushNilSizeFunction: #squeakV3orSistaV1PushNilSize:numInitialNils:
StackToRegisterMappingCogit class(Cogit class)>>genAndDis:options: Receiver: StackToRegisterMappingCogit Arguments and temporary variables: methodOrDoitString: (SequenceableCollection>>#indexOf:startingAt:ifAbsent: "a CompiledMethod...etc... optionsDictionaryOrArray: #(#ObjectMemory #Spur32BitCoMemoryManager #MULTIPLEBYTECODESETS...etc... tuple: nil 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: 3873888354 generatorTable: a CArrayAccessor on: {a CogBytecodeDescriptor (genPushReceiverVariableBytecode...etc... primitiveTable: a CArrayAccessor on: {a CogPrimitiveDescriptor . a CogPrimitiveDescriptor...etc... numPushNilsFunction: #squeakV3orSistaV1:Num:Push:Nils: pushNilSizeFunction: #squeakV3orSistaV1PushNilSize: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(87723)") 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
--- The full stack --- SmallInteger(Object)>>error: ...etc...
vm-dev@lists.squeakfoundation.org