[foreign] RFR : Move array-like methods from Pointer to Array
Jorn Vernee
jbvernee at xs4all.nl
Mon Nov 19 18:20:24 UTC 2018
Update webrev:
http://cr.openjdk.java.net/~jvernee/panama/webrevs/arrays/webrev.04/
Added 2 `iterate` methods to Pointer, one that takes a predicate, and
one that takes a pointer. Should I also add tests for these? (elements()
was not being tested previously it seems).
Thanks,
Jorn
Maurizio Cimadamore schreef op 2018-11-19 16:27:
> <snip>
>>>
>>> Stream<Pointer<T>> elements(Predicate<? super Predicate<T>> hasNext)
>>
>> Yes, this is a nice idea. Maybe we'd also want to have an overload
>> that just takes a `Pointer<T>` as an argument, and iterations will be
>> up until that pointer.
> Sure, the pointer-end overload sounds like a nice idea!
>>
>>> And this would generally applicable to both arrays and pointers. No
>>> guesswork involved, users iterating on pointers will have to provide
>>> an explicit termination condition; if they get it wrong, they will
>>> get
>>> some exception when dereferencing the wrong memory location.
>>
>> Well, for native-allocated pointers this will invoke undefined
>> behavior or possibly crash the VM (or enable access to VM internals?
>> I'm not sure what security is in place there currently).
>
> A possibility there would be to avoid using EVERYTHING as a backing
> region. That is, the binder could, in principle, generate regions that
> are small enough only to contain the region that we actually want to
> access (e.g. starts at base address , ends at base address + pointee
> layout size). If the client is not happy with that and knows that the
> pointer is a pointer to some kind of a buffer, perhaps an (unsafe?)
> operation could be provided to relax the memory region boundaries
> beneath the pointer.
>
> But overall I think we should strive for the 'no VM crashes if you are
> only using the safe API' (although we don't have to get there in one
> step).
>
> <snip>
>
>>
>>
>>> As a final point, I think we should implement elements() using
>>> Stream.iterate (and possibly document it in the API).
>>
>> Agreed. Maybe we should also rename Pointer::elements to
>> Pointer::iterate ?
>
> I like that.
>
> Cheers
> Maurizio
>
>>
>> Jorn
More information about the panama-dev
mailing list