Branch: refs/heads/Cog
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: 2699c0d545911e36ea9066f1f4c9d777e49faf34
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/2699c0d545911e36ea…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2022-12-04 (Sun, 04 Dec 2022)
Changed paths:
M building/win32x86/common/Makefile
M building/win32x86/common/Makefile.msvc
M building/win64x64/common/Makefile
M building/win64x64/common/Makefile.msvc
Log Message:
-----------
Fix dependency for sqNamedPrims.h on windows; path for sqNamedPrims.c was wrong
Commit: 76da8d4bf5bd4c8d22498b42d682c729edb3ac94
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/76da8d4bf5bd4c8d22…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2022-12-15 (Thu, 15 Dec 2022)
Changed paths:
M platforms/Cross/vm/sqMemoryAccess.h
M platforms/Mac OS/vm/sqMacMemory.c
M platforms/iOS/vm/Common/sqMacV2Memory.c
M platforms/minheadless/windows/sqWin32SpurAlloc.c
M platforms/unix/vm/sqUnixSpurMemory.c
M platforms/win32/vm/sqWin32SpurAlloc.c
R src/plugins/MP4MediaFilePlugin
M src/spur32.cog.lowcode/cogit.h
M src/spur32.cog.lowcode/cogitARMv5.c
M src/spur32.cog.lowcode/cogitIA32.c
M src/spur32.cog.lowcode/cointerp.c
M src/spur32.cog.lowcode/cointerp.h
M src/spur32.cog.lowcode/gcc3x-cointerp.c
M src/spur32.cog/cogit.h
M src/spur32.cog/cogitARMv5.c
M src/spur32.cog/cogitIA32.c
M src/spur32.cog/cointerp.c
M src/spur32.cog/cointerp.h
M src/spur32.cog/cointerpmt.c
M src/spur32.cog/cointerpmt.h
M src/spur32.cog/gcc3x-cointerp.c
M src/spur32.cog/gcc3x-cointerpmt.c
M src/spur32.sista/cogit.h
M src/spur32.sista/cogitARMv5.c
M src/spur32.sista/cogitIA32.c
M src/spur32.sista/cointerp.c
M src/spur32.sista/cointerp.h
M src/spur32.sista/gcc3x-cointerp.c
M src/spur32.stack.lowcode/gcc3x-interp.c
M src/spur32.stack.lowcode/interp.c
M src/spur32.stack/gcc3x-interp.c
M src/spur32.stack/interp.c
M src/spur64.cog.lowcode/cogit.h
M src/spur64.cog.lowcode/cogitARMv8.c
M src/spur64.cog.lowcode/cogitX64SysV.c
M src/spur64.cog.lowcode/cogitX64WIN64.c
M src/spur64.cog.lowcode/cointerp.c
M src/spur64.cog.lowcode/cointerp.h
M src/spur64.cog.lowcode/gcc3x-cointerp.c
M src/spur64.cog.newspeak/cogitARMv8.c
M src/spur64.cog.newspeak/cogitX64SysV.c
M src/spur64.cog.newspeak/cogitX64WIN64.c
M src/spur64.cog.newspeak/cointerp.c
M src/spur64.cog.newspeak/gcc3x-cointerp.c
M src/spur64.cog/cogit.h
M src/spur64.cog/cogitARMv8.c
M src/spur64.cog/cogitX64SysV.c
M src/spur64.cog/cogitX64WIN64.c
M src/spur64.cog/cointerp.c
M src/spur64.cog/cointerp.h
M src/spur64.cog/cointerpmt.c
M src/spur64.cog/cointerpmt.h
M src/spur64.cog/gcc3x-cointerp.c
M src/spur64.cog/gcc3x-cointerpmt.c
M src/spur64.sista/cogit.h
M src/spur64.sista/cogitARMv8.c
M src/spur64.sista/cogitX64SysV.c
M src/spur64.sista/cogitX64WIN64.c
M src/spur64.sista/cointerp.c
M src/spur64.sista/cointerp.h
M src/spur64.sista/gcc3x-cointerp.c
M src/spur64.stack.lowcode/gcc3x-interp.c
M src/spur64.stack.lowcode/interp.c
M src/spur64.stack/gcc3x-interp.c
M src/spur64.stack/interp.c
M src/v3.cog/cogit.h
M src/v3.cog/cogitARMv5.c
M src/v3.cog/cogitIA32.c
M src/v3.cog/cointerp.c
M src/v3.cog/cointerp.h
M src/v3.cog/gcc3x-cointerp.c
M src/v3.stack/gcc3x-interp.c
M src/v3.stack/interp.c
Log Message:
-----------
Merge branch 'Cog' of github.com:OpenSmalltalk/opensmalltalk-vm into Cog
Commit: 547723dd1821df84a160d368f7940ee680ba8d2a
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/547723dd1821df84a1…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2022-12-15 (Thu, 15 Dec 2022)
Changed paths:
M building/win32x86/newspeak.cog.spur/plugins.ext
M building/win32x86/newspeak.cog.spur/plugins.int
M building/win32x86/newspeak.stack.spur/plugins.ext
M building/win32x86/newspeak.stack.spur/plugins.int
M building/win32x86/pharo.cog.spur/plugins.ext
M building/win32x86/pharo.cog.spur/plugins.int
M building/win32x86/pharo.sista.spur/plugins.ext
M building/win32x86/pharo.sista.spur/plugins.int
M building/win32x86/pharo.stack.spur/plugins.ext
M building/win32x86/pharo.stack.spur/plugins.int
M building/win32x86/squeak.cog.spur.lowcode/plugins.ext
M building/win32x86/squeak.cog.spur.lowcode/plugins.int
M building/win32x86/squeak.cog.spur/plugins.ext
M building/win32x86/squeak.cog.spur/plugins.int
M building/win32x86/squeak.cog.v3/plugins.ext
M building/win32x86/squeak.cog.v3/plugins.int
M building/win32x86/squeak.sista.spur/plugins.ext
M building/win32x86/squeak.sista.spur/plugins.int
M building/win32x86/squeak.stack.spur/plugins.ext
M building/win32x86/squeak.stack.spur/plugins.int
M building/win32x86/squeak.stack.v3/plugins.ext
M building/win32x86/squeak.stack.v3/plugins.int
M building/win64x64/squeak.cog.spur/plugins.ext
M building/win64x64/squeak.cog.spur/plugins.int
M building/win64x64/squeak.stack.spur/plugins.ext
M building/win64x64/squeak.stack.spur/plugins.int
Log Message:
-----------
Make sure ClipboardExtendedPlugin is internal to all Squeak spur VMs.
Make sure all plugins.int/.ext files are in unix format
Compare: https://github.com/OpenSmalltalk/opensmalltalk-vm/compare/9aebec0fabb2...54…
Branch: refs/heads/virtend
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: 6f21cbc8f65f522bc7aa87195e7a3890a8ca9755
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/6f21cbc8f65f522bc7…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2022-12-13 (Tue, 13 Dec 2022)
Changed paths:
M src/spur32.cog.lowcode/cogit.h
M src/spur32.cog.lowcode/cogitARMv5.c
M src/spur32.cog.lowcode/cogitIA32.c
M src/spur32.cog/cogit.h
M src/spur32.cog/cogitARMv5.c
M src/spur32.cog/cogitIA32.c
M src/spur32.sista/cogit.h
M src/spur32.sista/cogitARMv5.c
M src/spur32.sista/cogitIA32.c
M src/spur64.cog.lowcode/cogit.h
M src/spur64.cog.lowcode/cogitARMv8.c
M src/spur64.cog.lowcode/cogitX64SysV.c
M src/spur64.cog.lowcode/cogitX64WIN64.c
M src/spur64.cog/cogit.h
M src/spur64.cog/cogitARMv8.c
M src/spur64.cog/cogitX64SysV.c
M src/spur64.cog/cogitX64WIN64.c
M src/spur64.sista/cogit.h
M src/spur64.sista/cogitARMv8.c
M src/spur64.sista/cogitX64SysV.c
M src/spur64.sista/cogitX64WIN64.c
M src/v3.cog/cogit.h
M src/v3.cog/cogitARMv5.c
M src/v3.cog/cogitIA32.c
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.3282
Check the argument count of the target method in the jitted perform primitive.
Thanks to Boris Shingarov and Juan Vuletich for finding this.
Commit: b3451ed511c7b11ba667b547ac34fde37d503c47
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/b3451ed511c7b11ba6…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2022-12-13 (Tue, 13 Dec 2022)
Changed paths:
M platforms/Cross/vm/sqMemoryAccess.h
M platforms/Mac OS/vm/sqMacMemory.c
M platforms/iOS/vm/Common/sqMacV2Memory.c
M platforms/minheadless/windows/sqWin32SpurAlloc.c
M platforms/unix/vm/sqUnixSpurMemory.c
M platforms/win32/vm/sqWin32SpurAlloc.c
Log Message:
-----------
Change the type of sqAllocateMemorySegmentOfSizeAboveAllocatedSizeInto to get
sqMacV2Memory.c to compile on 32-bit MacOS. It should have taken usqInts in the
first place. Implement allocateJITMemory for sqMacV2Memory.c/V3 macOS.
Commit: c5c526cc08453e4f0a0703776e93681a80f740cb
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/c5c526cc08453e4f0a…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2022-12-13 (Tue, 13 Dec 2022)
Changed paths:
M src/spur32.cog.lowcode/cogit.h
M src/spur32.cog.lowcode/cogitARMv5.c
M src/spur32.cog.lowcode/cogitIA32.c
M src/spur32.cog/cogit.h
M src/spur32.cog/cogitARMv5.c
M src/spur32.cog/cogitIA32.c
M src/spur32.sista/cogit.h
M src/spur32.sista/cogitARMv5.c
M src/spur32.sista/cogitIA32.c
M src/spur64.cog.lowcode/cogit.h
M src/spur64.cog.lowcode/cogitARMv8.c
M src/spur64.cog.lowcode/cogitX64SysV.c
M src/spur64.cog.lowcode/cogitX64WIN64.c
M src/spur64.cog/cogit.h
M src/spur64.cog/cogitARMv8.c
M src/spur64.cog/cogitX64SysV.c
M src/spur64.cog/cogitX64WIN64.c
M src/spur64.sista/cogit.h
M src/spur64.sista/cogitARMv8.c
M src/spur64.sista/cogitX64SysV.c
M src/spur64.sista/cogitX64WIN64.c
M src/v3.cog/cogit.h
M src/v3.cog/cogitARMv5.c
M src/v3.cog/cogitIA32.c
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.3283
Implement a machine code primitive for 84 perform:withArguments:.
It is about 5x faster, and some applications make heavy use of it.
Have genLoadcmNumArgsOf:into: deal with the optional zero-extension byte read
convention.
Fix slips in CogARMv8Compiler>>isImmNImmSImmREncodableBitmask:ifTrue:ifFalse:/
decodeN:imms:immr:
Compare: https://github.com/OpenSmalltalk/opensmalltalk-vm/compare/1a7f4f3c818f...c5…
Branch: refs/heads/Cog
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: 9aebec0fabb2482baebbc263032b44c9a4b42b95
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/9aebec0fabb2482bae…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2022-12-13 (Tue, 13 Dec 2022)
Changed paths:
M src/spur32.cog.lowcode/cogit.h
M src/spur32.cog.lowcode/cogitARMv5.c
M src/spur32.cog.lowcode/cogitIA32.c
M src/spur32.cog/cogit.h
M src/spur32.cog/cogitARMv5.c
M src/spur32.cog/cogitIA32.c
M src/spur32.sista/cogit.h
M src/spur32.sista/cogitARMv5.c
M src/spur32.sista/cogitIA32.c
M src/spur64.cog.lowcode/cogit.h
M src/spur64.cog.lowcode/cogitARMv8.c
M src/spur64.cog.lowcode/cogitX64SysV.c
M src/spur64.cog.lowcode/cogitX64WIN64.c
M src/spur64.cog/cogit.h
M src/spur64.cog/cogitARMv8.c
M src/spur64.cog/cogitX64SysV.c
M src/spur64.cog/cogitX64WIN64.c
M src/spur64.sista/cogit.h
M src/spur64.sista/cogitARMv8.c
M src/spur64.sista/cogitX64SysV.c
M src/spur64.sista/cogitX64WIN64.c
M src/v3.cog/cogit.h
M src/v3.cog/cogitARMv5.c
M src/v3.cog/cogitIA32.c
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.3283
Implement a machine code primitive for 84 perform:withArguments:.
It is about 5x faster, and some applications make heavy use of it.
Have genLoadcmNumArgsOf:into: deal with the optional zero-extension byte read
convention.
Fix slips in CogARMv8Compiler>>isImmNImmSImmREncodableBitmask:ifTrue:ifFalse:/
decodeN:imms:immr:
Branch: refs/heads/Cog
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: b0558b43c6598198f870834f00def6b85f8ab5d6
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/b0558b43c6598198f8…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2022-12-13 (Tue, 13 Dec 2022)
Changed paths:
M platforms/Cross/vm/sqMemoryAccess.h
M platforms/Mac OS/vm/sqMacMemory.c
M platforms/iOS/vm/Common/sqMacV2Memory.c
M platforms/minheadless/windows/sqWin32SpurAlloc.c
M platforms/unix/vm/sqUnixSpurMemory.c
M platforms/win32/vm/sqWin32SpurAlloc.c
Log Message:
-----------
Change the type of sqAllocateMemorySegmentOfSizeAboveAllocatedSizeInto to get
sqMacV2Memory.c to compile on 32-bit MacOS. It should have taken usqInts in the
first place. Implement allocateJITMemory for sqMacV2Memory.c/V3 macOS.
Branch: refs/heads/Cog
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: 58e4e939ecf0b0bba5f99f060628b678c4c5ffbf
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/58e4e939ecf0b0bba5…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2022-12-12 (Mon, 12 Dec 2022)
Changed paths:
M src/spur32.cog.lowcode/cogit.h
M src/spur32.cog.lowcode/cogitARMv5.c
M src/spur32.cog.lowcode/cogitIA32.c
M src/spur32.cog/cogit.h
M src/spur32.cog/cogitARMv5.c
M src/spur32.cog/cogitIA32.c
M src/spur32.sista/cogit.h
M src/spur32.sista/cogitARMv5.c
M src/spur32.sista/cogitIA32.c
M src/spur64.cog.lowcode/cogit.h
M src/spur64.cog.lowcode/cogitARMv8.c
M src/spur64.cog.lowcode/cogitX64SysV.c
M src/spur64.cog.lowcode/cogitX64WIN64.c
M src/spur64.cog/cogit.h
M src/spur64.cog/cogitARMv8.c
M src/spur64.cog/cogitX64SysV.c
M src/spur64.cog/cogitX64WIN64.c
M src/spur64.sista/cogit.h
M src/spur64.sista/cogitARMv8.c
M src/spur64.sista/cogitX64SysV.c
M src/spur64.sista/cogitX64WIN64.c
M src/v3.cog/cogit.h
M src/v3.cog/cogitARMv5.c
M src/v3.cog/cogitIA32.c
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.3282
Check the argument count of the target method in the jitted perform primitive.
Thanks to Boris Shingarov and Juan Vuletich for finding this.
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.3282.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.3282
Author: eem
Time: 12 December 2022, 9:23:01.283007 am
UUID: c6ec4e7f-ae4d-4ead-a0d1-4be83e94848a
Ancestors: VMMaker.oscog-eem.3281
Check the argument count of the target method in the jitted perform primitive. Thanks to Boris Shingarov and Juan Vuletich for finding this.
=============== Diff against VMMaker.oscog-eem.3281 ===============
Item was added:
+ ----- Method: SimpleStackBasedCogit>>genLoadcmNumArgsOf:into: (in category 'primitive generators') -----
+ genLoadcmNumArgsOf: cogMethodReg into: targetReg
+ "Currently cmNumArgs is the first byte following the objectHeader."
+ <inline: true>
+ self MoveMb: objectRepresentation wordSize r: cogMethodReg R: targetReg!
Item was changed:
----- Method: SimpleStackBasedCogit>>genLookupForPerformNumArgs: (in category 'primitive generators') -----
genLookupForPerformNumArgs: numArgs
"Compile the code for a probe of the first-level method cache for a perform primitive.
The selector is assumed to be in Arg0Reg. Defer to adjustArgumentsForPerform: to
adjust the arguments before the jump to the method."
+ | jumpSelectorMiss jumpClassMiss jumpInterpret jumpBadNumArgs itsAHit cacheBaseReg |
- | jumpSelectorMiss jumpClassMiss jumpInterpret itsAHit cacheBaseReg |
- <var: #jumpSelectorMiss type: #'AbstractInstruction *'>
- <var: #jumpClassMiss type: #'AbstractInstruction *'>
- <var: #jumpInterpret type: #'AbstractInstruction *'>
- <var: #itsAHit type: #'AbstractInstruction *'>
"N.B. Can't assume TempReg already contains the tag because a method can
of course be invoked via the unchecked entry-point, e.g. as does perform:."
objectRepresentation genGetInlineCacheClassTagFrom: ReceiverResultReg into: SendNumArgsReg forEntry: false.
self flag: #lookupInMethodCacheSel:classTag:. "so this method shows up as a sender of lookupInMethodCacheSel:class:"
cacheBaseReg := NoReg.
(backEnd isWithinMwOffsetRange: coInterpreter methodCacheAddress) ifFalse:
[self MoveCq: coInterpreter methodCacheAddress R: (cacheBaseReg := Extra0Reg)].
"Do first of three probes. See CoInterpreter>>lookupInMethodCacheSel:classTag:"
jumpSelectorMiss := self compilePerformMethodCacheProbeFor: Arg0Reg withShift: 0 baseRegOrNone: cacheBaseReg.
jumpClassMiss := self JumpNonZero: 0.
"Fetch the method, and check if it is cogged."
itsAHit := self MoveMw: (cacheBaseReg = NoReg
ifTrue: [coInterpreter methodCacheAddress + (MethodCacheMethod << objectMemory shiftForWord)]
ifFalse: [MethodCacheMethod << objectMemory shiftForWord])
r: ClassReg
R: SendNumArgsReg.
"If the method is not compiled fall back on the interpreter primitive."
objectRepresentation genLoadSlot: HeaderIndex sourceReg: SendNumArgsReg destReg: ClassReg.
jumpInterpret := objectRepresentation genJumpImmediate: ClassReg.
+ "check the argument count; if it's wrong fall back on the interpreter primitive."
+ self genLoadcmNumArgsOf: ClassReg into: SendNumArgsReg.
+ self CmpCq: numArgs R: SendNumArgsReg.
+ jumpBadNumArgs := self JumpNonZero: 0.
+
"Adjust arguments and jump to the method's unchecked entry-point."
self AddCq: cmNoCheckEntryOffset R: ClassReg.
self adjustArgumentsForPerform: numArgs.
self JumpR: ClassReg.
"First probe missed. Do second of three probes. Shift hash right one and retry."
jumpSelectorMiss jmpTarget: (jumpClassMiss jmpTarget: self Label).
jumpSelectorMiss := self compilePerformMethodCacheProbeFor: Arg0Reg withShift: 1 baseRegOrNone: cacheBaseReg.
self JumpZero: itsAHit.
"Second probe missed. Do last probe. Shift hash right two and retry."
jumpSelectorMiss jmpTarget: self Label.
jumpSelectorMiss := self compilePerformMethodCacheProbeFor: Arg0Reg withShift: 2 baseRegOrNone: cacheBaseReg.
self JumpZero: itsAHit.
+ "Last probe missed/not jitted/bad num args. Caller will generate the call to fall back on the interpreter primitive."
- "Last probe missed. Caller will generate the call to fall back on the interpreter primitive."
jumpSelectorMiss jmpTarget:
+ (jumpInterpret jmpTarget:
+ (jumpBadNumArgs jmpTarget: self Label)).
- (jumpInterpret jmpTarget: self Label).
^0!