Boris G. Shingarov uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.gdb-bgs.2748.mcz
==================== Summary ====================
Name: VMMaker.gdb-bgs.2748
Author: bgs
Time: 1 June 2020, 7:04:31.839686 pm
UUID: ee592c75-7d1e-4ff9-9f6c-3c27e621f21e
Ancestors: VMMaker.gdb-bgs.2747
Add TargetAwareARM. Corresponds to GDB-bgs.4
=============== Diff against VMMaker.gdb-bgs.2747 ===============
Item was changed:
----- Method: CogAbstractInstruction>>getDefaultCogCodeSize (in category 'accessing') -----
getDefaultCogCodeSize
"Answer the default number of bytes to allocate for native code at startup.
The actual value can be set via vmParameterAt: and/or a preference in the ini file.
Subclasses may this default override to arrange that the code zone has about
the same number of methods as the x86 back-end at a similar point in execution."
<inline: true>
+ ^1024 * 2048!
- ^1024 * 1024!
Item was changed:
----- Method: CogOutOfLineLiteralsARMCompiler>>getDefaultCogCodeSize (in category 'accessing') -----
getDefaultCogCodeSize
"Return the default number of bytes to allocate for native code at startup.
The actual value can be set via vmParameterAt: and/or a preference in the ini file."
<inline: true>
+ ^1024 * 2048!
- ^1024 * 1280!
Item was changed:
----- Method: CogVMSimulator>>moveMethodCacheToMemoryAt: (in category 'initialization') -----
moveMethodCacheToMemoryAt: address
| oldMethodCache |
oldMethodCache := methodCache.
"In the VM the methodCache is written as a normal array with 1-relative addressing.
In C this works by allocating an extra element in the methodCache array (see
class-side declareCVarsIn:). In simulation simply position the start of the methodCache
one word lower, achieving the same effect. -1 because CArrayAccessor is 0-relative
and adds 1 on accesses itself."
methodCache := CMethodCacheAccessor new
objectMemory: objectMemory
at: address
array: oldMethodCache
functionPointerIndex: MethodCachePrimFunction
entrySize: MethodCacheEntrySize.
self assert: address - objectMemory wordSize = self methodCacheAddress.
+ 1 to: MethodCacheSize do:
- " 1 to: MethodCacheSize do:
[:i|
+ self assert: (methodCache at: i) = 0].
- self assert: (methodCache at: i) = 0]. "
methodCache at: 1 put: 16rC4EC4.
self assert: (objectMemory longAt: address) = 16rC4EC4.
1 to: MethodCacheSize do:
[:i|
methodCache at: i put: (oldMethodCache at: i)]!
Item was changed:
----- Method: CogVMSimulator>>movePrimTraceLogToMemoryAt: (in category 'initialization') -----
movePrimTraceLogToMemoryAt: address
| oldTraceLog |
oldTraceLog := primTraceLog.
primTraceLog := CArrayOfLongsAccessor new
objectMemory: objectMemory at: address.
self assert: address = self primTraceLogAddress.
+ 0 to: PrimTraceLogSize - 1 do:
- " 0 to: PrimTraceLogSize - 1 do:
[:i|
+ self assert: (primTraceLog at: i) = 0].
- self assert: (primTraceLog at: i) = 0]."
primTraceLog at: 0 put: 16rC4EC4.
self assert: (objectMemory longAt: address) = 16rC4EC4.
0 to: PrimTraceLogSize - 1 do:
[:i|
primTraceLog at: i put: (oldTraceLog at: i)]!
Item was changed:
----- Method: Cogit class>>initializeMiscConstants (in category 'class initialization') -----
initializeMiscConstants
super initializeMiscConstants.
Debug := InitializationOptions at: #Debug ifAbsent: [false].
(InitializationOptions includesKey: #EagerInstructionDecoration)
ifTrue:
[EagerInstructionDecoration := InitializationOptions at: #EagerInstructionDecoration]
ifFalse:
[EagerInstructionDecoration ifNil:
[EagerInstructionDecoration := false]]. "speeds up single stepping but could lose fidelity"
ProcessorClass := (InitializationOptions at: #ISA ifAbsentPut: [self objectMemoryClass defaultISA]) caseOf: {
[#X64] -> [BochsX64Alien].
[#IA32] -> ["BochsIA32Alien" TargetAwareX86 ].
+ [#ARMv5] -> ["GdbARMAlien" TargetAwareARM ].
- [#ARMv5] -> [GdbARMAlien].
[#ARMv8] -> [GdbARMv8Alien].
[#MIPSEL] -> [MIPSELSimulator] }.
CogCompilerClass := self activeCompilerClass.
CogAbstractInstruction initializeAbstractRegisters.
self objectMemoryClass objectRepresentationClass initializeMiscConstants.
"Our criterion for which methods to JIT is literal count. The default value is 60 literals or less."
MaxLiteralCountForCompile := InitializationOptions at: #MaxLiteralCountForCompile ifAbsent: [60].
"we special-case 0, 1 & 2 argument sends, N is numArgs >= 3"
NumSendTrampolines := 4.
"Currently not even the ceImplicitReceiverTrampoline contains object references."
NumObjRefsInRuntime := 0.
"6 is a fine number for the max number of PCI entries. 8 is too large."
MaxCPICCases := 6.
"One variable defines whether in a block and whether in a vanilla or full block."
InVanillaBlock := 1.
InFullBlock := 2.
NSCSelectorIndex := (NSSendCache instVarNames indexOf: #selector) - 1.
NSCNumArgsIndex := (NSSendCache instVarNames indexOf: #numArgs) - 1.
NSCClassTagIndex := (NSSendCache instVarNames indexOf: #classTag) - 1.
NSCEnclosingObjectIndex := (NSSendCache instVarNames indexOf: #enclosingObject) - 1.
NSCTargetIndex := (NSSendCache instVarNames indexOf: #target) - 1.
NumOopsPerNSC := NSSendCache instVarNames size.
"Max size to alloca when compiling.
Mac OS X 10.6.8 segfaults approaching 8Mb.
Linux 2.6.9 segfaults above 11Mb.
WIndows XP segfaults approaching 2Mb."
MaxStackAllocSize := 1024 * 1024 * 3 / 2 !
Item was changed:
----- Method: Cogit>>handleABICallOrJumpSimulationTrap:evaluable: (in category 'simulation only') -----
handleABICallOrJumpSimulationTrap: aProcessorSimulationTrap evaluable: evaluable
<doNotGenerate>
+ self assert: aProcessorSimulationTrap type = #controlTransfer.
- self assert: aProcessorSimulationTrap type = #call.
processor
+ simulateBuildFrameIn: coInterpreter memory for: evaluable.
- simulateLeafCallOf: aProcessorSimulationTrap address
- nextpc: aProcessorSimulationTrap nextpc
- memory: coInterpreter memory.
self recordInstruction: {'(simulated call of '. aProcessorSimulationTrap address. '/'. evaluable selector. ')'}.
clickConfirm ifTrue:
[(self confirm: 'skip run-time call?') ifFalse:
[clickConfirm := false. self halt]].
evaluable valueWithArguments: (processor
postCallArgumentsNumArgs: evaluable numArgs
in: coInterpreter memory).
self recordInstruction: {'(simulated return to '. processor retpcIn: coInterpreter memory. ')'}.
processor
smashABICallerSavedRegistersWithValuesFrom: 16r80000000 by: objectMemory wordSize;
+ simulateReturnIn: coInterpreter memory!
- simulateLeafReturnIn: coInterpreter memory!
Branch: refs/heads/Cog
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: 9f789851c9b9cc8eaf9b51797b04bf3b249becf8
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/9f789851c9b9cc8eaf…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2020-05-31 (Sun, 31 May 2020)
Changed paths:
M nsspur64src/vm/cogit.h
M nsspur64src/vm/cogitX64SysV.c
M nsspur64src/vm/cogitX64WIN64.c
M nsspur64src/vm/cointerp.c
M nsspur64src/vm/cointerp.h
M nsspur64src/vm/gcc3x-cointerp.c
M nsspursrc/vm/cogit.h
M nsspursrc/vm/cogitARMv5.c
M nsspursrc/vm/cogitIA32.c
M nsspursrc/vm/cogitMIPSEL.c
M nsspursrc/vm/cointerp.c
M nsspursrc/vm/cointerp.h
M nsspursrc/vm/gcc3x-cointerp.c
M nsspurstacksrc/vm/gcc3x-interp.c
M nsspurstacksrc/vm/interp.c
M spur64src/vm/cogit.h
M spur64src/vm/cogitX64SysV.c
M spur64src/vm/cogitX64WIN64.c
M spur64src/vm/cointerp.c
M spur64src/vm/cointerp.h
M spur64src/vm/cointerpmt.c
M spur64src/vm/cointerpmt.h
M spur64src/vm/gcc3x-cointerp.c
M spur64src/vm/gcc3x-cointerpmt.c
M spursista64src/vm/cogit.h
M spursista64src/vm/cogitX64SysV.c
M spursista64src/vm/cogitX64WIN64.c
M spursista64src/vm/cointerp.c
M spursista64src/vm/cointerp.h
M spursista64src/vm/gcc3x-cointerp.c
M spursistasrc/vm/cogit.h
M spursistasrc/vm/cogitARMv5.c
M spursistasrc/vm/cogitIA32.c
M spursistasrc/vm/cogitMIPSEL.c
M spursistasrc/vm/cointerp.c
M spursistasrc/vm/cointerp.h
M spursistasrc/vm/gcc3x-cointerp.c
M spursrc/vm/cogit.h
M spursrc/vm/cogitARMv5.c
M spursrc/vm/cogitIA32.c
M spursrc/vm/cogitMIPSEL.c
M spursrc/vm/cointerp.c
M spursrc/vm/cointerp.h
M spursrc/vm/cointerpmt.c
M spursrc/vm/cointerpmt.h
M spursrc/vm/gcc3x-cointerp.c
M spursrc/vm/gcc3x-cointerpmt.c
M spurstack64src/vm/gcc3x-interp.c
M spurstack64src/vm/interp.c
M spurstack64src/vm/validImage.c
M spurstacksrc/vm/gcc3x-interp.c
M spurstacksrc/vm/interp.c
M spurstacksrc/vm/validImage.c
M src/plugins/Float64ArrayPlugin/Float64ArrayPlugin.c
M src/plugins/FloatArrayPlugin/FloatArrayPlugin.c
M src/plugins/SqueakFFIPrims/ARM32FFIPlugin.c
M src/plugins/SqueakFFIPrims/ARM64FFIPlugin.c
M src/plugins/SqueakFFIPrims/IA32FFIPlugin.c
M src/plugins/SqueakFFIPrims/X64SysVFFIPlugin.c
M src/plugins/SqueakFFIPrims/X64Win64FFIPlugin.c
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.2759
Spur:
Make sure prim fail codes in primitiveConstantFillSpur are correct.
ThreadedFFIPlugin:
Add ThreadedFFIPlugin>>primitiveStructureElementAlignment.
FloatArrayPlugins: Generate them with an official version stamp.
Commit: e4f17ad309450ccebccbab4f98cb0ef5cebdce0d
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/e4f17ad309450ccebc…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2020-05-31 (Sun, 31 May 2020)
Changed paths:
M platforms/win32/plugins/CameraPlugin/winCameraOps.cpp
M platforms/win32/plugins/CroquetPlugin/sqWin32CroquetPlugin.c
M platforms/win32/plugins/FT2Plugin/ft2build.h
M platforms/win32/plugins/FilePlugin/sqWin32File.h
M platforms/win32/plugins/FloatMathPlugin/Makefile
M platforms/win32/plugins/FloatMathPlugin/Makefile.plugin
M platforms/win32/plugins/FloatMathPlugin/Makefile.win32
M platforms/win32/plugins/FontPlugin/sqWin32FontPlugin.c
M platforms/win32/plugins/HostWindowPlugin/sqWin32HostWindowPlugin.c
M platforms/win32/plugins/LocalePlugin/sqWin32Locale.c
M platforms/win32/plugins/SqueakSSL/sqWin32SSL.c
M platforms/win32/vm/config.h
M platforms/win32/vm/sqWin32Directory.c
M platforms/win32/vm/sqWin32DnsInfo.c
M platforms/win32/vm/sqWin32HandleTable.h
M platforms/win32/vm/version.c
Log Message:
-----------
Merge branch 'Cog' of https://github.com/OpenSmalltalk/opensmalltalk-vm into Cog
Compare: https://github.com/OpenSmalltalk/opensmalltalk-vm/compare/60973ef04730...e4…