BUG: SystemABI C_LONG and C_LONGLONG are the same
Ty Young
youngty1997 at gmail.com
Thu May 14 23:15:34 UTC 2020
Currently with the newest builds SystemABI C_LONG and C_LONGLONG are the
same:
System.out.println(SystemABI.C_LONG.equals(SystemABI.C_LONGLONG));
prints true.
Since C_LONG can be 32-bit, it should, IMO, be decoupled from
C_LONGLONG. This also breaks my abstraction layer as if ladders like
this hit C_LONG always on Linux:
public static <T extends Number, E extends AbstractNativeNumber<T>> E
fromLayout(ValueLayout layout)
{
if(layout.equals(SystemABI.C_CHAR))
return (E)new NativeByte();
else if(layout.equals(SystemABI.C_SHORT))
return (E)new NativeShort();
else if(layout.equals(SystemABI.C_INT))
return (E)new NativeInteger();
else if(layout.equals(SystemABI.C_FLOAT))
return (E)new NativeFloat();
else if(layout.equals(SystemABI.C_DOUBLE))
return (E)new NativeDouble();
else if(layout.equals(SystemABI.C_LONG))
return (E)new NativeLong();
else if(layout.equals(SystemABI.C_LONGLONG))
return (E)new NativeLongLong();
throw new UnsupportedOperationException();
}
More information about the panama-dev
mailing list