An example of substituability test that is recursive
Remi Forax
forax at univ-mlv.fr
Thu Jan 31 16:53:43 UTC 2019
Thinking a little more about this example,
i think it will be more common if we retrofit lambdas to be value type because a series of composition of lambdas is a kind of linked list in term of data structure in memory.
For the composition of lambdas, a stack overflow is unlikely because otherwise calling the lambda will stack overflow too but it means that == will be slow (because it does a recursive comparison).
Rémi
----- Mail original -----
> De: "Remi Forax" <forax at univ-mlv.fr>
> À: "Karen Kinnear" <karen.kinnear at oracle.com>
> Cc: "valhalla-spec-experts" <valhalla-spec-experts at openjdk.java.net>
> Envoyé: Jeudi 31 Janvier 2019 12:19:32
> Objet: An example of substituability test that is recursive
> Hi Karen,
> here is an example that recurse to its death with the current prototype
>
> import java.lang.invoke.ValueBootstrapMethods;
> import java.util.stream.IntStream;
>
> public class Substituable {
> static value class Link {
> private final int value;
> private final Object next;
>
> public Link(int value, Object next) {
> this.value = value;
> this.next = next;
> }
>
> static Object times(int count) {
> return IntStream.range(0, count).boxed().reduce(null, (acc, index) -> new
> Link(index, acc), (l1, l2) -> { throw null; });
> }
> }
>
>
> public static void main(String[] args) {
> var l = Link.times(1_000);
>
> //System.out.println(l == l);
> System.out.println(ValueBootstrapMethods.isSubstitutable(l, l));
> }
> }
>
>
> Rémi
More information about the valhalla-spec-observers
mailing list