The 9 doubles are 1.000000 2.000000 3.000000 4.000000 5.000000 6.000000 7.000000 8.000000 9.000000
when running the FFI unit tests and:
The 9 doubles are 1.000000 1.000000 1.000000 4.000000 5.000000 6.000000 7.000000 8.000000 9.000000
This looks like the marshaller is accessing the wrong initial arguments. It looks like the object accessed for args 1 & 2 is the same as for arg 0, right? The question is why. I have no clue.
Is there a compiler/runtime/parser change?
No. In the Workspace there is invocation via withArgs:executeMethod:, primitive 188. But I find it hard to believe this is the issue. This code is correct and I don't see there can be any issue with it and have as much of tech system work as you do. In all cases there is only one source to bytecode compiler doing the compiler, best doits, method compilation, image segment load evaluation, etc, etc.
FFIPluginTests>>testGenericDoubleCall2 "Test using generic FFI spec" | result | result := FFITestLibrary ffiTestDoubles9: 1.0 d: 2.0 d: 3.0 d: 4.0 d: 5.0 d: 6.0 d: 7.0 d: 8.0 d: 9.0. self assert: result = 45.0