Closed fab1an closed 7 years ago
Reduced to bare minimum Testcase:
WARNING: Uninstrumented whole methods ('**') or single calls ('!!') detected:
at co.paralleluniverse.common.util.ExtendedStackTrace.here() (ExtendedStackTrace.java:44 bci: 8)
at co.paralleluniverse.fibers.Fiber.checkInstrumentation() (Fiber.java:1669 bci: 0)
at co.paralleluniverse.fibers.Fiber.verifySuspend(co.paralleluniverse.fibers.Fiber) (Fiber.java:1642 bci: 6)
at co.paralleluniverse.fibers.Fiber.verifySuspend() (Fiber.java:1637 bci: 3)
at co.paralleluniverse.fibers.Fiber.park(java.lang.Object,co.paralleluniverse.fibers.Fiber$ParkAction,long,java.util.concurrent.TimeUnit) (Fiber.java:621 bci: 0)
at co.paralleluniverse.fibers.Fiber.park(java.lang.Object) (Fiber.java:633 bci: 4)
at co.paralleluniverse.strands.Strand.park(java.lang.Object) (Strand.java:536 bci: 78)
at co.paralleluniverse.strands.ConditionSynchronizer.await(int) (ConditionSynchronizer.java:54 bci: 255)
at co.paralleluniverse.strands.channels.QueueChannel.onQueueFull(int,boolean,long) (QueueChannel.java:261 bci: 349)
at co.paralleluniverse.strands.channels.QueueChannel.send0(java.lang.Object,boolean,boolean,long) (QueueChannel.java:229 bci: 390)
at co.paralleluniverse.strands.channels.QueueChannel.send(java.lang.Object) (QueueChannel.java:176 bci: 5) (optimized)
at co.paralleluniverse.strands.channels.QueueIntChannel.send(int) (QueueIntChannel.java:72 bci: 133) !! (instrumented suspendable calls at: lines [72], calls [co.paralleluniverse.strands.channels.QueuePrimitiveChannel.send(java.lang.Object)])
at at.fab1an.quasarxml.TestSender2.run() (Main.kt:36 bci: 87)
at co.paralleluniverse.fibers.Fiber.run() (Fiber.java:1073 bci: 11)
at co.paralleluniverse.fibers.Fiber.run1() (Fiber.java:1068 bci: 1)
If it's of any help I can paste bytecode or something.
I've set up a test-case: https://github.com/fab1an/quasar-kotlin-test
Use ./gradlew run
to start it. It uses a 0.7.8 jar built yesterday, which lies in the root-directory.
This is raw Kotlin, without the quasar-helper.
The generated Kotlin-ByteCode as shown by IntellIJs Viewer:
// ================at/fab1an/quasar/TestSender2.class =================
// class version 52.0 (52)
// access flags 0x31
// signature Ljava/lang/Object;Lco/paralleluniverse/strands/SuspendableCallable<Ljava/lang/Object;>;
// declaration: at/fab1an/quasar/TestSender2 implements co.paralleluniverse.strands.SuspendableCallable<java.lang.Object>
public final class at/fab1an/quasar/TestSender2 implements co/paralleluniverse/strands/SuspendableCallable {
// access flags 0x1
public run()Ljava/lang/Object; throws co/paralleluniverse/fibers/SuspendExecution
@Lorg/jetbrains/annotations/Nullable;() // invisible
L0
LINENUMBER 34 L0
ALOAD 0
GETFIELD at/fab1an/quasar/TestSender2.channel : Lco/paralleluniverse/strands/channels/IntChannel;
ICONST_1
INVOKEINTERFACE co/paralleluniverse/strands/channels/IntChannel.send (I)V
L1
LINENUMBER 35 L1
ACONST_NULL
ARETURN
L2
LOCALVARIABLE this Lat/fab1an/quasar/TestSender2; L0 L2 0
MAXSTACK = 2
MAXLOCALS = 1
// access flags 0x12
private final Lco/paralleluniverse/strands/channels/IntChannel; channel
@Lorg/jetbrains/annotations/NotNull;() // invisible
// access flags 0x11
public final getChannel()Lco/paralleluniverse/strands/channels/IntChannel;
@Lorg/jetbrains/annotations/NotNull;() // invisible
L0
LINENUMBER 31 L0
ALOAD 0
GETFIELD at/fab1an/quasar/TestSender2.channel : Lco/paralleluniverse/strands/channels/IntChannel;
ARETURN
L1
LOCALVARIABLE this Lat/fab1an/quasar/TestSender2; L0 L1 0
MAXSTACK = 1
MAXLOCALS = 1
// access flags 0x1
public <init>(Lco/paralleluniverse/strands/channels/IntChannel;)V
@Lorg/jetbrains/annotations/NotNull;() // invisible, parameter 0
L0
ALOAD 1
LDC "channel"
INVOKESTATIC kotlin/jvm/internal/Intrinsics.checkParameterIsNotNull (Ljava/lang/Object;Ljava/lang/String;)V
L1
LINENUMBER 31 L1
ALOAD 0
INVOKESPECIAL java/lang/Object.<init> ()V
ALOAD 0
ALOAD 1
PUTFIELD at/fab1an/quasar/TestSender2.channel : Lco/paralleluniverse/strands/channels/IntChannel;
RETURN
L2
LOCALVARIABLE this Lat/fab1an/quasar/TestSender2; L0 L2 0
LOCALVARIABLE channel Lco/paralleluniverse/strands/channels/IntChannel; L0 L2 1
MAXSTACK = 2
MAXLOCALS = 2
@Lkotlin/Metadata;(mv={1, 1, 5}, bv={1, 0, 1}, k=1, d1={"\u0000\u0016\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0018\u0002\n\u0002\u0008\u0005\u0018\u00002\n\u0012\u0006\u0012\u0004\u0018\u00010\u00020\u0001B\r\u0012\u0006\u0010\u0003\u001a\u00020\u0004\u00a2\u0006\u0002\u0010\u0005J\n\u0010\u0008\u001a\u0004\u0018\u00010\u0002H\u0017R\u0011\u0010\u0003\u001a\u00020\u0004\u00a2\u0006\u0008\n\u0000\u001a\u0004\u0008\u0006\u0010\u0007\u00a8\u0006\u0009"}, d2={"Lat/fab1an/quasar/TestSender2;", "Lco/paralleluniverse/strands/SuspendableCallable;", "", "channel", "Lco/paralleluniverse/strands/channels/IntChannel;", "(Lco/paralleluniverse/strands/channels/IntChannel;)V", "getChannel", "()Lco/paralleluniverse/strands/channels/IntChannel;", "run", "production sources for module quasar-kotlin-test"})
// compiled from: Main.kt
}
// ================at/fab1an/quasar/MainKt.class =================
// class version 52.0 (52)
// access flags 0x31
public final class at/fab1an/quasar/MainKt {
// access flags 0x19
public final static main([Ljava/lang/String;)V throws co/paralleluniverse/fibers/SuspendExecution
@Lorg/jetbrains/annotations/NotNull;() // invisible, parameter 0
L0
ALOAD 0
LDC "args"
INVOKESTATIC kotlin/jvm/internal/Intrinsics.checkParameterIsNotNull (Ljava/lang/Object;Ljava/lang/String;)V
L1
LINENUMBER 12 L1
L2
LINENUMBER 26 L2
L3
LINENUMBER 12 L3
L4
LINENUMBER 26 L4
L5
LINENUMBER 12 L5
NEW co/paralleluniverse/fibers/Fiber
DUP
GETSTATIC at/fab1an/quasar/MainKt$main$1.INSTANCE : Lat/fab1an/quasar/MainKt$main$1;
CHECKCAST co/paralleluniverse/strands/SuspendableCallable
INVOKESPECIAL co/paralleluniverse/fibers/Fiber.<init> (Lco/paralleluniverse/strands/SuspendableCallable;)V
L6
LINENUMBER 26 L6
INVOKEVIRTUAL co/paralleluniverse/fibers/Fiber.start ()Lco/paralleluniverse/fibers/Fiber;
INVOKEVIRTUAL co/paralleluniverse/fibers/Fiber.join ()V
L7
LINENUMBER 27 L7
RETURN
L8
LOCALVARIABLE args [Ljava/lang/String; L0 L8 0
MAXSTACK = 3
MAXLOCALS = 1
@Lkotlin/Metadata;(mv={1, 1, 5}, bv={1, 0, 1}, k=2, d1={"\u0000\u0014\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\u0011\n\u0002\u0010\u000e\n\u0002\u0008\u0002\u001a\u001b\u0010\u0000\u001a\u00020\u00012\u000c\u0010\u0002\u001a\u0008\u0012\u0004\u0012\u00020\u00040\u0003H\u0007\u00a2\u0006\u0002\u0010\u0005\u00a8\u0006\u0006"}, d2={"main", "", "args", "", "", "([Ljava/lang/String;)V", "production sources for module quasar-kotlin-test"})
// access flags 0x18
final static INNERCLASS at/fab1an/quasar/MainKt$main$1 null null
// compiled from: Main.kt
}
// ================at/fab1an/quasar/MainKt$main$1.class =================
// class version 52.0 (52)
// access flags 0x30
// signature <V:Ljava/lang/Object;>Ljava/lang/Object;Lco/paralleluniverse/strands/SuspendableCallable<Lkotlin/Unit;>;
// declaration: at/fab1an/quasar/MainKt$main$1<V> implements co.paralleluniverse.strands.SuspendableCallable<kotlin.Unit>
final class at/fab1an/quasar/MainKt$main$1 implements co/paralleluniverse/strands/SuspendableCallable {
// access flags 0x1041
public synthetic bridge run()Ljava/lang/Object;
ALOAD 0
INVOKEVIRTUAL at/fab1an/quasar/MainKt$main$1.invoke ()V
GETSTATIC kotlin/Unit.INSTANCE : Lkotlin/Unit;
ARETURN
MAXSTACK = 1
MAXLOCALS = 1
// access flags 0x11
public final invoke()V throws co/paralleluniverse/fibers/SuspendExecution
L0
LINENUMBER 13 L0
BIPUSH 10
INVOKESTATIC co/paralleluniverse/strands/channels/Channels.newIntChannel (I)Lco/paralleluniverse/strands/channels/IntChannel;
DUP
LDC "Channels.newIntChannel(10)"
INVOKESTATIC kotlin/jvm/internal/Intrinsics.checkExpressionValueIsNotNull (Ljava/lang/Object;Ljava/lang/String;)V
ASTORE 1
L1
LINENUMBER 15 L1
ICONST_0
NEW kotlin/ranges/IntRange
DUP_X1
SWAP
SIPUSH 1000
INVOKESPECIAL kotlin/ranges/IntRange.<init> (II)V
CHECKCAST java/lang/Iterable
ASTORE 2
L2
LINENUMBER 38 L2
ALOAD 2
INVOKEINTERFACE java/lang/Iterable.iterator ()Ljava/util/Iterator;
ASTORE 3
L3
ALOAD 3
INVOKEINTERFACE java/util/Iterator.hasNext ()Z
IFEQ L4
ALOAD 3
CHECKCAST kotlin/collections/IntIterator
INVOKEVIRTUAL kotlin/collections/IntIterator.nextInt ()I
ISTORE 4
L5
ILOAD 4
ISTORE 5
L6
LINENUMBER 16 L6
NEW co/paralleluniverse/fibers/Fiber
DUP
NEW at/fab1an/quasar/TestSender2
DUP
ALOAD 1
INVOKESPECIAL at/fab1an/quasar/TestSender2.<init> (Lco/paralleluniverse/strands/channels/IntChannel;)V
CHECKCAST co/paralleluniverse/strands/SuspendableCallable
INVOKESPECIAL co/paralleluniverse/fibers/Fiber.<init> (Lco/paralleluniverse/strands/SuspendableCallable;)V
INVOKEVIRTUAL co/paralleluniverse/fibers/Fiber.start ()Lco/paralleluniverse/fibers/Fiber;
POP
L7
LINENUMBER 17 L7
L8
L9
GOTO L3
L4
LINENUMBER 39 L4
L10
L11
LINENUMBER 19 L11
ICONST_0
ISTORE 2
L12
LINENUMBER 21 L12
L13
ILOAD 2
BIPUSH 100
IF_ICMPGE L14
L15
LINENUMBER 22 L15
ALOAD 1
INVOKEINTERFACE co/paralleluniverse/strands/channels/IntChannel.receive ()Ljava/lang/Object;
POP
L16
LINENUMBER 23 L16
IINC 2 1
L17
LINENUMBER 24 L17
LDC "received"
ASTORE 3
L18
GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
ALOAD 3
INVOKEVIRTUAL java/io/PrintStream.println (Ljava/lang/Object;)V
L19
L20
L21
LINENUMBER 21 L21
GOTO L13
L14
LINENUMBER 25 L14
L22
LINENUMBER 26 L22
RETURN
L23
LOCALVARIABLE it I L6 L8 5
LOCALVARIABLE $i$a$1$forEach I L6 L8 6
LOCALVARIABLE element$iv I L5 L9 4
LOCALVARIABLE $receiver$iv Ljava/lang/Iterable; L2 L10 2
LOCALVARIABLE $i$f$forEach I L2 L10 7
LOCALVARIABLE i I L12 L14 2
LOCALVARIABLE test Lco/paralleluniverse/strands/channels/IntChannel; L1 L14 1
LOCALVARIABLE this Lat/fab1an/quasar/MainKt$main$1; L0 L23 0
MAXSTACK = 5
MAXLOCALS = 8
// access flags 0x0
<init>()V
ALOAD 0
INVOKESPECIAL java/lang/Object.<init> ()V
RETURN
MAXSTACK = 1
MAXLOCALS = 1
// access flags 0x19
public final static Lat/fab1an/quasar/MainKt$main$1; INSTANCE
// access flags 0x8
static <clinit>()V
NEW at/fab1an/quasar/MainKt$main$1
DUP
INVOKESPECIAL at/fab1an/quasar/MainKt$main$1.<init> ()V
PUTSTATIC at/fab1an/quasar/MainKt$main$1.INSTANCE : Lat/fab1an/quasar/MainKt$main$1;
RETURN
MAXSTACK = 2
MAXLOCALS = 0
@Lkotlin/Metadata;(mv={1, 1, 5}, bv={1, 0, 1}, k=3, d1={"\u0000\u0008\n\u0000\n\u0002\u0010\u0002\n\u0000\u0010\u0000\u001a\u00020\u0001H\u000b\u00a2\u0006\u0002\u0008\u0002"}, d2={"<anonymous>", "", "invoke"})
OUTERCLASS at/fab1an/quasar/MainKt main ([Ljava/lang/String;)V
// access flags 0x18
final static INNERCLASS at/fab1an/quasar/MainKt$main$1 null null
// compiled from: Main.kt
// debug info: SMAP
Main.kt
Kotlin
*S Kotlin
*F
+ 1 Main.kt
at/fab1an/quasar/MainKt$main$1
+ 2 _Collections.kt
kotlin/collections/CollectionsKt___CollectionsKt
*L
1#1,37:1
1477#2,2:38
*E
*S KotlinDebug
*F
+ 1 Main.kt
at/fab1an/quasar/MainKt$main$1
*L
15#1,2:38
*E
}
// ================META-INF/production sources for module quasar-kotlin-test.kotlin_module =================
at.fab1an.quasarMainKt
Duplicate of #255
Hi, I'm using Kotlin 1.1 and I'm getting a weird message. Anything I can do about this?