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

commits at source.squeak.org commits at source.squeak.org
Thu May 6 16:08:39 UTC 2021


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

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

Name: FFI-Kernel-mt.135
Author: mt
Time: 6 May 2021, 6:08:39.437981 pm
UUID: 7983191d-5e85-ca45-8d1a-b2fa02060f31
Ancestors: FFI-Kernel-mt.134

Bugfixes:
- out-of-bounds check in byte-array read-writer (still under construction, though)
- !! access to signed bytes through external address !!

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

Item was changed:
  ----- Method: ByteArrayReadWriter>>doesNotUnderstand: (in category 'system primitives') -----
  doesNotUnderstand: aMessage
  
  	| selector args |
  	selector := aMessage selector.
  	args := aMessage arguments.
  	args size caseOf: {
  		[ 1 ] -> [ (selector endsWith: 'At:') ifTrue: [ args at: 1 put: args first  + byteOffset ] ].
  		[ 2 ] -> [ (selector endsWith: 'length:')
  			ifTrue: [
  				args at: 1 put: args first + byteOffset.
+ 				(args first + args second - 1) > (byteOffset + byteSize)
+ 					ifTrue: [self errorSubscriptBounds: args first + args second - 1] ]
- 				(args first + args second - 1) > byteSize
- 					ifTrue: [self errorSubscriptBounds: args first + args second] ]
  			ifFalse: [(selector endsWith: 'put:') ifTrue: [
  				args at: 1 put: args first + byteOffset	]] ].
  		[ 3 ] -> [ (selector endsWith: 'length:')
  			ifTrue: [
  				args at: 1 put: args first + byteOffset.
+ 				(args first + args third - 1) > (byteSize + byteSize)
+ 					ifTrue: [self errorSubscriptBounds: args first + args third - 1]]] 
- 				(args first + args third - 1) > byteSize
- 					ifTrue: [self errorSubscriptBounds: args first + args third]]] 
  		} otherwise: []. 				
  	^ aMessage sendTo: byteArray!

Item was changed:
  ----- Method: ExternalAddress>>byteAt: (in category 'accessing') -----
  byteAt: byteOffset
+ 	"Overwritten to to through a different primitive since the receiver describes data in the outside world."
+ 	
+ 	^ self integerAt: byteOffset size: 1 signed: false!
- 	"Go through a different primitive since the receiver describes data in the outside world"
- 	^self unsignedByteAt: byteOffset!

Item was changed:
  ----- Method: ExternalAddress>>byteAt:put: (in category 'accessing') -----
  byteAt: byteOffset put: value
+ 	"Overwritten to go through a different primitive since the receiver describes data in the outside world."
+ 	
+ 	^ self integerAt: byteOffset put: value size: 1 signed: false!
- 	"Go through a different primitive since the receiver describes data in the outside world"
- 	^self unsignedByteAt: byteOffset put: value!

Item was added:
+ ----- Method: ExternalAddress>>signedByteAt: (in category 'accessing') -----
+ signedByteAt: byteOffset
+ 	"Overwritten to go through a different primitive since the receiver describes data in the outside world."
+ 
+ 	^ self integerAt: byteOffset size: 1 signed: true!

Item was added:
+ ----- Method: ExternalAddress>>signedByteAt:put: (in category 'accessing') -----
+ signedByteAt: byteOffset put: value
+ 	"Overwritten to go through a different primitive since the receiver describes data in the outside world."
+ 
+ 	^ self integerAt: byteOffset put: value size: 1 signed: true!



More information about the Squeak-dev mailing list