Ability to extend a MemorySegment
Ty Young
youngty1997 at gmail.com
Tue Jan 21 17:46:04 UTC 2020
On 1/21/20 11:31 AM, Maurizio Cimadamore wrote:
>
>
> I took a look at your code - and I noticed an endianness mismatch
> between NumberField and Union:
Apparently that was the issue. Thanks.
>
>
> Maurizio
>
>
>
> On 21/01/2020 17:03, Ty Young wrote:
>> Yes.
>>
>>
>> Union<Long> union = Union.ofLayouts(MemoryLayouts.JAVA_BYTE,
>> MemoryLayouts.JAVA_LONG, MemoryLayouts.JAVA_INT);
>>
>> Field<Long> field = union.getField(1);
>>
>> field.setValue(Long.MAX_VALUE);
>>
>> System.out.println(field.getValue()); // GOOD
>>
>> union.setValue(Long.MIN_VALUE);
>>
>> System.out.println(field.getValue()); // BAD
>>
>> field.setValue(Long.MAX_VALUE);
>>
>> System.out.println(union.getValue()); // BAD
>>
>> System.out.println(field.getValue()); // GOOD
>>
>>
>> Union class can be found here:
>> https://github.com/BlueGoliath/Crosspoint/blob/master/src/main/java/org/goliath/crosspoint/unions/BasicUnion.java
>>
>>
>>
>> On 1/21/20 10:39 AM, Maurizio Cimadamore wrote:
>>> Not aware of anything deliberate here - do you have an example?
>>>
>>> Maurizio
>>>
>>> On 21/01/2020 16:31, Ty Young wrote:
>>>> I've noticed some weirdness with Unions in Memory Access as well -
>>>> creating a slice that is the exact size of the Union's
>>>> MemoryAddress(long for example) and applying a value results in the
>>>> Union's base MemoryAddress being made invalid(despite being the
>>>> same size). Maybe that's intentional.
More information about the panama-dev
mailing list