[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] 0ca286: CogVM source as per VMMaker.oscog-eem.3216
Eliot Miranda
noreply at github.com
Tue Jul 19 05:17:55 UTC 2022
Branch: refs/heads/Cog
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: 0ca286139d26bfad7eb6d65979a33c19a29721f3
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/0ca286139d26bfad7eb6d65979a33c19a29721f3
Author: Eliot Miranda <eliot.miranda at gmail.com>
Date: 2022-07-18 (Mon, 18 Jul 2022)
Changed paths:
M src/plugins/AsynchFilePlugin/AsynchFilePlugin.c
M src/plugins/BochsIA32Plugin/BochsIA32Plugin.c
M src/plugins/BochsX64Plugin/BochsX64Plugin.c
M src/plugins/ClipboardExtendedPlugin/ClipboardExtendedPlugin.c
M src/plugins/FileAttributesPlugin/FileAttributesPlugin.c
M src/plugins/FileCopyPlugin/FileCopyPlugin.c
M src/plugins/FilePlugin/FilePlugin.c
M src/plugins/GdbARMPlugin/GdbARMPlugin.c
M src/plugins/GdbARMv8Plugin/GdbARMv8Plugin.c
M src/plugins/HostWindowPlugin/HostWindowPlugin.c
M src/plugins/InternetConfigPlugin/InternetConfigPlugin.c
M src/plugins/JPEGReadWriter2Plugin/JPEGReadWriter2Plugin.c
M src/plugins/MIDIPlugin/MIDIPlugin.c
A src/plugins/MP4MediaFilePlugin
M src/plugins/MacMenubarPlugin/MacMenubarPlugin.c
M src/plugins/Mpeg3Plugin/Mpeg3Plugin.c
M src/plugins/SerialPlugin/SerialPlugin.c
M src/plugins/SocketPlugin/SocketPlugin.c
M src/plugins/SoundPlugin/SoundPlugin.c
M src/plugins/SqueakFFIPrims/ARM32FFIPlugin.c
M src/plugins/SqueakFFIPrims/ARM64AppleFFIPlugin.c
M src/plugins/SqueakFFIPrims/ARM64FFIPlugin.c
M src/plugins/SqueakFFIPrims/IA32FFIPlugin.c
M src/plugins/SqueakFFIPrims/RiscV64FFIPlugin.c
M src/plugins/SqueakFFIPrims/X64SysVFFIPlugin.c
M src/plugins/SqueakFFIPrims/X64Win64FFIPlugin.c
Log Message:
-----------
CogVM source as per VMMaker.oscog-eem.3216
SmartSyntaxInterpreterPlugins:
A flaw of the rather lovely SmartSyntaxInterpreterPlugin framework is that when
simulating pointer type is determined by spec array (parameters: and/or
reciever: in primitive:parameters:[receiver:]), not by the type of the variable
assigned to. But this shouldn't be the case. The type of firstIndexableField:
is intentionally #'void *', which in C can freely be assigned to any pointer
type. Fix simulation so that the casts applied to firstIndexableField: reflect
the type of the target variable, only defaulting to the type specified by the
spec class if there is no declaration.
Hence significantly simplify the pointer API, removing
ccgLoad:expr:asCharPtrFrom:andThen: et al, and keeping only
ccgLoad:expr:asNullTerminatedCharPtrFrom:andThen:,
ccgLoad:expr:asPtrFrom:andThen:ccgLoad:expr:asOopPtrFrom:andThen:.
The consequence for the generated C is that firstIndexbaleField: is not cast to a pointer, simply assigned to a variable (whose type will not have changed).
More information about the Vm-dev
mailing list