Branch: refs/heads/Cog Home: https://github.com/OpenSmalltalk/opensmalltalk-vm Commit: 27d2d9f0c76b5805ff43578272e809aeb665a498 https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/27d2d9f0c76b5805ff4... Author: Eliot Miranda eliot.miranda@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)