[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] 27d2d9: Cryptography Plugins as per CryptographyPlugins-mt...
Eliot Miranda
noreply at github.com
Mon Dec 13 20:25:23 UTC 2021
Branch: refs/heads/Cog
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: 27d2d9f0c76b5805ff43578272e809aeb665a498
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/27d2d9f0c76b5805ff43578272e809aeb665a498
Author: Eliot Miranda <eliot.miranda at gmail.com>
Date: 2021-12-13 (Mon, 13 Dec 2021)
Changed paths:
M src/plugins/DESPlugin/DESPlugin.c
M src/plugins/DSAPrims/DSAPrims.c
M src/plugins/MD5Plugin/MD5Plugin.c
M src/plugins/SHA2Plugin/SHA2Plugin.c
Log Message:
-----------
Cryptography Plugins as per CryptographyPlugins-mt.25/eem.27
Fix regressions in CryptographyPlugins-eem.23. Specifically alignment crashes in
DESPlugin>>#primitiveDESCookKey,
SHA2Plugin>>#primitiveSHA512ProcessBufferUpdatingHash,
SHA2Plugin>>#primitiveSHA256ProcessBufferUpdatingHash
with Clang on SSE x86_64, which requires 128-bit stack alignment.
Fix type-casting issue on Windows 64-bit systems. We must use "long long" if
we mean "double word".
Polish:
Now there is an API call (isLong64s:) to determine if something is double words,
use it.
There is no need to use stackObjectValue: if its result is tested via isBytes:,
isWords: et al. These methods check for immediates, so the check in
stackObjectValue: is redundant and expensive (it must set the failed flag which
should be tested later).
Don't bother assigning the result of firstIndexableField: to an intermediate
variable; its return type is void *, so it's perfect as an argument to memcpy:
et al.
Amalgamate tests using and: to have as few
^interpreterProxy primitiveFailFor: PrimErrBadArgument
clauses as possible (greater instruction cache density).
Use methodReturnReceiver (ditto)
More information about the Vm-dev
mailing list