Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8150635

j.l.i.MethodHandles.loop(...) throws IndexOutOfBoundsException

XMLWordPrintable

      Calling j.l.i.MethodHandles.loop(j.l.i.MethodHandle[][]) method fails with IndexOutOfBoundsException.

      Passing specific (probably wrong) combination of method handles (see examples, they are slightly differs) leads to failure. Received exception is not specified in api spec:

      Exception in thread "main" java.lang.IndexOutOfBoundsException: toIndex = 4
      at java.util.ArrayList.subListRangeCheck(ArrayList.java:1052)
      at java.util.ArrayList.subList(ArrayList.java:1044)
      at java.lang.invoke.MethodHandles.lambda$checkLoop2$11(MethodHandles.java:4040)
      at java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
      at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
      at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
      at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
      at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1422)
      at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:591)
      at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:272)
      at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
      at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
      at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:500)
      at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:486)
      at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
      at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
      at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
      at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
      at java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:461)
      at java.lang.invoke.MethodHandles.checkLoop2(MethodHandles.java:4040)
      at java.lang.invoke.MethodHandles.loop(MethodHandles.java:3393)
      at tests.invoke.loop.LoopExampleTest0.call(LoopExampleTest0.java:27)
      at tests.invoke.loop.LoopExampleTest0.main(LoopExampleTest0.java:13)



      Tests are under development, tck_red label will be added after development completion. Was found on jdk9b95/jdk9b106.

        1. LoopExampleTest0.java
          2 kB
        2. LoopExampleTest0a.java
          3 kB
        3. LoopExampleTest1.java
          2 kB
        4. LoopExampleTest1.java
          2 kB
        5. src.zip
          1 kB

            mhaupt Michael Haupt
            asolodkaya Anastasiya Solodkaya (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: