You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The by-value native ABI for System.Numerics.Decimal32, Decimal64, and Decimal128 is not yet implemented in the JIT, mirroring the situation for Int128/UInt128 tracked by #74209.
Known issues:
Decimal128 is a 16-byte, 16-byte-aligned type and hits the same unimplemented register-pair/stack-alignment paths as Int128 on Arm64 and Unix x64 (both enregistered and when spilled to the stack).
Decimal32/Decimal64 are 4/8-byte scalars, but the JIT has no decimal floating-point calling convention. To the JIT they are struct{uint}/struct{ulong} passed in integer registers, which does not match a platform _Decimal32/_Decimal64 (SSE class on the System V ABI).
Until this is implemented, by-value marshaling of these types (and structs containing them) is blocked, and the field layout for Decimal128 is given a 16-byte alignment to match the native ABI (the same treatment as Int128/UInt128).
When this is fixed, re-enable the by-value scenarios in $(XunitTestBinBase)/Interop/PInvoke/Decimal128/.
The by-value native ABI for
System.Numerics.Decimal32,Decimal64, andDecimal128is not yet implemented in the JIT, mirroring the situation forInt128/UInt128tracked by #74209.Known issues:
Decimal128is a 16-byte, 16-byte-aligned type and hits the same unimplemented register-pair/stack-alignment paths asInt128on Arm64 and Unix x64 (both enregistered and when spilled to the stack).Decimal32/Decimal64are 4/8-byte scalars, but the JIT has no decimal floating-point calling convention. To the JIT they arestruct{uint}/struct{ulong}passed in integer registers, which does not match a platform_Decimal32/_Decimal64(SSE class on the System V ABI).Until this is implemented, by-value marshaling of these types (and structs containing them) is blocked, and the field layout for
Decimal128is given a 16-byte alignment to match the native ABI (the same treatment asInt128/UInt128).When this is fixed, re-enable the by-value scenarios in
$(XunitTestBinBase)/Interop/PInvoke/Decimal128/.category:correctness
theme:calling-convention
skill-level:expert
Note
This issue was drafted with the assistance of GitHub Copilot.