[squeak-dev] FFI: FFI-Kernel-mt.199.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Aug 12 11:49:35 UTC 2021


Marcel Taeumel uploaded a new version of FFI-Kernel to project FFI:
http://source.squeak.org/FFI/FFI-Kernel-mt.199.mcz

==================== Summary ====================

Name: FFI-Kernel-mt.199
Author: mt
Time: 12 August 2021, 1:49:34.824908 pm
UUID: 87ed955e-5c3c-0f47-8924-03fe051d3b19
Ancestors: FFI-Kernel-mt.198

Fixes bug in ExternalData considering #byteSize for arrays of void* . Also fix VoidReadWriteSend to have 0 as #byteSize, just like 'ExternalType void' has.

=============== Diff against FFI-Kernel-mt.198 ===============

Item was changed:
  ----- Method: ExternalData>>byteSize (in category 'accessing') -----
  byteSize
  	"Answer how many bytes the receiver manages."
  
  	| ct myBytes |
  	self isNull ifTrue: [^ 0].
  	self size ifNil: [^ nil "We don't know"].
  	
  	myBytes := self size * (ct := self contentType) byteSize.
+ 
- 	
  	^ ct isPointerType
+ 		ifTrue: [
+ 			ct asNonPointerType isVoid ifTrue: [nil] ifFalse: [
+ 				"Locally managed pointers do not count. See ByteArray >> #isNull."
+ 				(handle isExternalAddress ifTrue: [myBytes] ifFalse: [0])
+ 					+ (self reader collect: [:each | each byteSize]) sum ]]
- 		ifTrue: [ "Locally managed pointers do not ocunt. See ByteArray >> #isNull."
- 			(handle isExternalAddress ifTrue: [myBytes] ifFalse: [0])
- 				+ (self reader collect: [:each | each byteSize]) sum ]
  		ifFalse: [ myBytes ]!

Item was changed:
  ----- Method: VoidReadWriteSend class>>fromType: (in category 'instance creation') -----
  fromType: type
  
  	^ {
+ 	(self receiver: nil selector: #voidAt:) byteSize: type byteSize; yourself.
+ 	(self receiver: nil selector: #voidAt:put:) byteSize: type byteSize; yourself}!
- 	self receiver: nil selector: #voidAt:.
- 	self receiver: nil selector: #voidAt:put:}!

Item was removed:
- ----- Method: VoidReadWriteSend>>handle:atIndex: (in category 'evaluating') -----
- handle: handle atIndex: byteOffset
- 	"no accessors for void"
- 	self shouldNotImplement.!

Item was removed:
- ----- Method: VoidReadWriteSend>>handle:atIndex:put: (in category 'evaluating') -----
- handle: handle atIndex: byteOffset put: value
- 	"no accessors for void"
- 	self shouldNotImplement.!

Item was changed:
  (PackageInfo named: 'FFI-Kernel') postscript: '"Reinitialize FFIAtomicReadWriteSend to use the new integer primitives"
+ ExternalType resetAllTypes...'!
- ExternalType resetAllAtomicTypes.'!



More information about the Squeak-dev mailing list