[squeak-dev] FFI: FFI-Pools-mt.16.mcz

commits at source.squeak.org commits at source.squeak.org
Thu May 28 07:20:49 UTC 2020


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

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

Name: FFI-Pools-mt.16
Author: mt
Time: 28 May 2020, 9:20:47.243479 am
UUID: ff3070e5-d241-6346-95a1-3b809f56a4bd
Ancestors: FFI-Pools-mt.15

Moves interpretation of <ffiExternalSharedPool> pragma to the definition class where all other pragmas are interpreted and documented already.

Adds simple way to explore pool definitions by calling the method that holds the definition pragmas:

MyExternalPool class >> #win32ExamplePool
  <ffiExternalSharedPool>
  <ffiPlatformName: 'Win32'>
  ^ self poolDefinition

=============== Diff against FFI-Pools-mt.15 ===============

Item was changed:
  ----- Method: FFIExternalSharedPool class>>definitions (in category 'accessing') -----
  definitions
- 	| definitions |
  
+ 	| definitions |
  	definitions := OrderedCollection with: self defaultDefinition.
  
  	self class methodsDo: [:each |
+ 		(self definitionClass fromMethod: each) ifNotNil: [:poolDefinition |
+ 			definitions add: poolDefinition]].
- 		(each pragmaAt: #ffiExternalSharedPool)
- 			ifNotNil: [
- 				definitions addLast:
- 					(self definitionClass fromMethod: each)]].
  
+ 	^ definitions!
- 	^ definitions asArray.!

Item was added:
+ ----- Method: FFIExternalSharedPool class>>poolDefinition (in category 'accessing') -----
+ poolDefinition
+ 	"For convenience. Answer the result of this call in definition methods to support debugging."
+ 	
+ 	thisContext sender method ifNotNil: [:poolDefinitionMethod |
+ 		(self definitionClass fromMethod: poolDefinitionMethod)
+ 			ifNotNil: [:poolDefinition | ^ poolDefinition]].
+ 	
+ 	self error: 'Sender is no valid pool definition!!'.!

Item was changed:
  ----- Method: FFIExternalSharedPoolDefinition class>>fromMethod: (in category 'instance creation') -----
  fromMethod: aCompiledMethod
  	| definition |
  
+ 	(aCompiledMethod pragmaAt: #ffiExternalSharedPool)
+ 		ifNil: [^ nil].
+ 		
  	definition := self name: aCompiledMethod selector.
  
  	"Squeak does not have #pragmasDo:"
  	aCompiledMethod pragmas do: [:each |
  		(self whichCategoryIncludesSelector: each keyword) == #'pragmas'
  			ifTrue: [
  				definition
  					perform: each keyword
  					withArguments: each arguments]].
  
  	^ definition.!



More information about the Squeak-dev mailing list