[foreign-abi] Test for wrong memory address value

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Fri Dec 20 21:44:52 UTC 2019


We typically create new issues, unless it's really an accident (e.g. a 
typo discovered too late, or a file that was not properly 'hg added').

Create an issue, Fix Version "repo-panama", tools/jextract (even though 
it doesn't have to do with it :-) ) and, most importantly, add a label 
with name of the branch it refers to

Maurizio

On 20/12/2019 21:41, Paul Sandoz wrote:
> Thanks.
>
> What’s the policy with commits and issues, just push, append on to an 
> existing and related issue, or create new ones?
>
> Paul.
>
>> On Dec 20, 2019, at 1:40 PM, Maurizio Cimadamore 
>> <maurizio.cimadamore at oracle.com 
>> <mailto:maurizio.cimadamore at oracle.com>> wrote:
>>
>> Looks good - and yes, foreign-abi is downstream of foreign-memaccess
>>
>> Many thanks for adding these!
>>
>> Maurizio
>>
>> On 20/12/2019 17:19, Paul Sandoz wrote:
>>> This is an addition to the change proposed in [1] adding tests 
>>> accessing a memory address value with the wrong type.
>>>
>>> I think I am correct in assuming the foreign-abi branch is 
>>> downstream from the foreign-memaccess branch.
>>>
>>> Paul.
>>>
>>> [1]https://mail.openjdk.java.net/pipermail/panama-dev/2019-December/006899.html<https://mail.openjdk.java.net/pipermail/panama-dev/2019-December/006899.html>
>>>
>>> diff -r ae09f6996e74 test/jdk/java/foreign/TestTypeAccess.java
>>> --- a/test/jdk/java/foreign/TestTypeAccess.java Fri Dec 20 09:13:20 
>>> 2019 -0800
>>> +++ b/test/jdk/java/foreign/TestTypeAccess.java Fri Dec 20 09:13:26 
>>> 2019 -0800
>>> @@ -27,17 +27,22 @@
>>>   * @run testng TestTypeAccess
>>>   */
>>>  +import jdk.incubator.foreign.MemoryAddress;
>>> +import jdk.incubator.foreign.MemoryHandles;
>>>  import jdk.incubator.foreign.MemorySegment;
>>>  import jdk.incubator.foreign.MemoryLayouts;
>>>  import org.testng.annotations.*;
>>>    import java.lang.invoke.VarHandle;
>>>  import java.lang.invoke.WrongMethodTypeException;
>>> +import java.nio.ByteOrder;
>>>    public class TestTypeAccess {
>>>        static final VarHandle INT_HANDLE = 
>>> MemoryLayouts.JAVA_INT.varHandle(int.class);
>>>  +    static final VarHandle ADDR_HANDLE = 
>>> MemoryHandles.varHandle(MemoryAddress .class, ByteOrder.nativeOrder());
>>> +
>>>      @Test(expectedExceptions=ClassCastException.class)
>>>      public void testMemoryAddressCoordinateAsString() {
>>>          try (MemorySegment s = MemorySegment.allocateNative(8)) {
>>> @@ -51,4 +56,33 @@
>>>              int v = (int)INT_HANDLE.get(1);
>>>          }
>>>      }
>>> +
>>> +    @Test(expectedExceptions=ClassCastException.class)
>>> +    public void testMemoryAddressValueGetAsString() {
>>> +        try (MemorySegment s = MemorySegment.allocateNative(8)) {
>>> +            String address = (String)ADDR_HANDLE.get(s.baseAddress());
>>> +        }
>>> +    }
>>> +
>>> +    @Test(expectedExceptions=ClassCastException.class)
>>> +    public void testMemoryAddressValueSetAsString() {
>>> +        try (MemorySegment s = MemorySegment.allocateNative(8)) {
>>> +            ADDR_HANDLE.set(s.baseAddress(), "string");
>>> +        }
>>> +    }
>>> +
>>> +    @Test(expectedExceptions=ClassCastException.class)
>>> +    public void testMemoryAddressValueGetAsPrimitive() {
>>> +        try (MemorySegment s = MemorySegment.allocateNative(8)) {
>>> +            int address = (int)ADDR_HANDLE.get(s.baseAddress());
>>> +        }
>>> +    }
>>> +
>>> +    @Test(expectedExceptions=ClassCastException.class)
>>> +    public void testMemoryAddressValueSetAsPrimitive() {
>>> +        try (MemorySegment s = MemorySegment.allocateNative(8)) {
>>> +            ADDR_HANDLE.set(s.baseAddress(), 1);
>>> +        }
>>> +    }
>>> +
>>>  }
>


More information about the panama-dev mailing list