[Vm-dev] VM Maker: VMMaker.oscog-eem.3204.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Jun 30 20:57:57 UTC 2022
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.3204.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.3204
Author: eem
Time: 30 June 2022, 1:57:44.171763 pm
UUID: 1462ee1d-3247-4917-b6b6-a7c90517dd20
Ancestors: VMMaker.oscog-eem.3203
ARMv8 Cogit. The + 1 in CogARMv8Compiler>>#flushICacheFrom:to: is erroneous cuz the endAddress is always past the last address needing flushing. We're seeing occasional segfaults from sys_icache_invalidate on M1 macs; the plus one looks like the cause.
=============== Diff against VMMaker.oscog-eem.3203 ===============
Item was changed:
----- Method: CogARMv8Compiler>>flushICacheFrom:to: (in category 'inline cacheing') -----
flushICacheFrom: startAddress "<Integer>" to: endAddress "<Integer>"
"Flush the instruction cache from (startAddress to endAddress].
If there is a dual mapped code zone (the normal zone but marked with read/execute, and a
read/write zone codeToDataDelta bytes away) then also flush the data cache for the corresp-
onding range in the read/write zone and invalidate the data cache for the read/execute zone.
If using the Apple MAP_JIT/pthread_jit_write_protect_np: also flush the data cache. Use Apple's
implementations for both; they are simple and effective."
<inline: #always>
cogit ensureExecutableCodeZone.
self cCode:
[self cppIf: #__APPLE__ & #__MACH__
+ ifTrue: [cogit sys_dcache_flush: (self cCoerce: startAddress to: #'void *') _: endAddress - startAddress;
+ sys_icache_invalidate: (self cCoerce: startAddress to: #'void *') _: endAddress - startAddress]
- ifTrue: [cogit sys_dcache_flush: (self cCoerce: startAddress to: #'void *') _: endAddress - startAddress + 1;
- sys_icache_invalidate: (self cCoerce: startAddress to: #'void *') _: endAddress - startAddress + 1]
ifFalse: [cogit ceFlushICache: startAddress _: endAddress]]
inSmalltalk: [cogit simulateCeFlushICacheFrom: startAddress to: endAddress]!
More information about the Vm-dev
mailing list