[Vm-dev] nested structures with FFI?

Esteban Lorenzano estebanlm at gmail.com
Thu Aug 20 15:51:43 UTC 2015


Hi,

I’m doing some tests with nested structures (to handle the conversion of NativeBoost-FFI to regular FFI) and I’m having some problems when accessing fields in the nested structure. 
For example, this tests: 

FFITestNestingStructure class>>#fieldsDesc 
	^ #(
		byte one;
		FFITestStructure nested;
		)

FFITestStructure class>>#fieldsDesc
	^ #(
		byte byte;
		short short;
		long long;
		float float;
		double double;
		int64 int64;
		)

(definition is NB-compatible, so do not take the differences with regular FFI into account)

testNestedStructure
	| s1 |
	
	s1 := FFITestNestingStructure new.
	s1 nested byte: 42.	
	self assert: s1 nested byte = 42

testExternallyAllocatedNestedStructure
	| s1 |
	
	s1 := FFITestNestingStructure externalNew.
	self assert: s1 getHandle class = ExternalAddress.
	s1 nested byte: 42.	
	self assert: s1 nested byte = 42


fails always because 

s1 nested byte = 0. 

(which is obviously bad). 

I remember Eliot saying that structures with FFI was not being optimal, and I wonder (before start digging more in deep) if this could have something to do?

cheers, 
Esteban


More information about the Vm-dev mailing list