[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