<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Probably related: a few other classes which are being transformed with the new method call are failing due to stack size calculation problems, like this:</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">java.lang.IllegalArgumentException: Stack size mismatch at bytecode offset 204 of method discoverSources()<br>  - max stack: 65535<br>    max locals: 65535<br>    attributes: []<br>    //stack map frame @0: {locals: [io/smallrye/config/SmallRyeConfigBuilder], stack: []}<br>    0: {opcode: NEW, type: java/util/ArrayList}<br>    3: {opcode: DUP}<br>    4: {opcode: INVOKESPECIAL, owner: java/util/ArrayList, method name: <init>, method type: ()V}<br>    7: {opcode: ASTORE_1, slot: 1}<br>    8: {opcode: LDC, constant value: 'ClassDesc[ConfigSource]'}<br>    10: {opcode: ALOAD_0, slot: 0}<br>    11: {opcode: GETFIELD, owner: io/smallrye/config/SmallRyeConfigBuilder, field name: classLoader, field type: Ljava/lang/ClassLoader;}<br>    14: {opcode: INVOKESTATIC, owner: io/github/dmlloyd/modules/ModuleServiceLoader, method name: load, method type: (Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/util/ServiceLoader;}<br>    17: {opcode: ASTORE_2, slot: 2}<br>    18: {opcode: ALOAD_2, slot: 2}<br>    19: {opcode: INVOKEVIRTUAL, owner: java/util/ServiceLoader, method name: iterator, method type: ()Ljava/util/Iterator;}<br>    22: {opcode: ASTORE_3, slot: 3}<br>    23: {opcode: ALOAD_3, slot: 3}<br>    24: {opcode: INVOKEINTERFACE, owner: java/util/Iterator, method name: hasNext, method type: ()Z}<br>    29: {opcode: IFEQ, target: 55}<br>    32: {opcode: ALOAD_3, slot: 3}<br>    33: {opcode: INVOKEINTERFACE, owner: java/util/Iterator, method name: next, method type: ()Ljava/lang/Object;}<br>    38: {opcode: CHECKCAST, type: org/eclipse/microprofile/config/spi/ConfigSource}<br>    41: {opcode: ASTORE, slot: 4}<br>    43: {opcode: ALOAD_1, slot: 1}<br>    44: {opcode: ALOAD, slot: 4}<br>    46: {opcode: INVOKEINTERFACE, owner: java/util/List, method name: add, method type: (Ljava/lang/Object;)Z}<br>    51: {opcode: POP}<br>    52: {opcode: GOTO, target: 23}<br>    55: {opcode: LDC, constant value: 'ClassDesc[ConfigSourceProvider]'}<br>    57: {opcode: ALOAD_0, slot: 0}<br>    58: {opcode: GETFIELD, owner: io/smallrye/config/SmallRyeConfigBuilder, field name: classLoader, field type: Ljava/lang/ClassLoader;}<br>    61: {opcode: INVOKESTATIC, owner: io/github/dmlloyd/modules/ModuleServiceLoader, method name: load, method type: (Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/util/ServiceLoader;}<br>    64: {opcode: ASTORE_3, slot: 3}<br>    65: {opcode: ALOAD_3, slot: 3}<br>    66: {opcode: INVOKEVIRTUAL, owner: java/util/ServiceLoader, method name: iterator, method type: ()Ljava/util/Iterator;}<br>    69: {opcode: ASTORE, slot: 4}<br>    71: {opcode: ALOAD, slot: 4}<br>    73: {opcode: INVOKEINTERFACE, owner: java/util/Iterator, method name: hasNext, method type: ()Z}<br>    78: {opcode: IFEQ, target: 148}<br>    81: {opcode: ALOAD, slot: 4}<br>    83: {opcode: INVOKEINTERFACE, owner: java/util/Iterator, method name: next, method type: ()Ljava/lang/Object;}<br>    88: {opcode: CHECKCAST, type: org/eclipse/microprofile/config/spi/ConfigSourceProvider}<br>    91: {opcode: ASTORE, slot: 5}<br>    93: {opcode: ALOAD, slot: 5}<br>    95: {opcode: ALOAD_0, slot: 0}<br>    96: {opcode: GETFIELD, owner: io/smallrye/config/SmallRyeConfigBuilder, field name: classLoader, field type: Ljava/lang/ClassLoader;}<br>    99: {opcode: INVOKEINTERFACE, owner: org/eclipse/microprofile/config/spi/ConfigSourceProvider, method name: getConfigSources, method type: (Ljava/lang/ClassLoader;)Ljava/lang/Iterable;}<br>    104: {opcode: INVOKEINTERFACE, owner: java/lang/Iterable, method name: iterator, method type: ()Ljava/util/Iterator;}<br>    109: {opcode: ASTORE, slot: 6}<br>    111: {opcode: ALOAD, slot: 6}<br>    113: {opcode: INVOKEINTERFACE, owner: java/util/Iterator, method name: hasNext, method type: ()Z}<br>    118: {opcode: IFEQ, target: 145}<br>    121: {opcode: ALOAD, slot: 6}<br>    123: {opcode: INVOKEINTERFACE, owner: java/util/Iterator, method name: next, method type: ()Ljava/lang/Object;}<br>    128: {opcode: CHECKCAST, type: org/eclipse/microprofile/config/spi/ConfigSource}<br>    131: {opcode: ASTORE, slot: 7}<br>    133: {opcode: ALOAD_1, slot: 1}<br>    134: {opcode: ALOAD, slot: 7}<br>    136: {opcode: INVOKEINTERFACE, owner: java/util/List, method name: add, method type: (Ljava/lang/Object;)Z}<br>    141: {opcode: POP}<br>    142: {opcode: GOTO, target: 111}<br>    145: {opcode: GOTO, target: 71}<br>    148: {opcode: LDC, constant value: 'ClassDesc[ConfigSourceFactory]'}<br>    150: {opcode: ALOAD_0, slot: 0}<br>    151: {opcode: GETFIELD, owner: io/smallrye/config/SmallRyeConfigBuilder, field name: classLoader, field type: Ljava/lang/ClassLoader;}<br>    154: {opcode: INVOKESTATIC, owner: io/github/dmlloyd/modules/ModuleServiceLoader, method name: load, method type: (Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/util/ServiceLoader;}<br>    157: {opcode: ASTORE, slot: 4}<br>    159: {opcode: ALOAD, slot: 4}<br>    161: {opcode: INVOKEVIRTUAL, owner: java/util/ServiceLoader, method name: iterator, method type: ()Ljava/util/Iterator;}<br>    164: {opcode: ASTORE, slot: 5}<br>    166: {opcode: ALOAD, slot: 5}<br>    168: {opcode: INVOKEINTERFACE, owner: java/util/Iterator, method name: hasNext, method type: ()Z}<br>    173: {opcode: IFEQ, target: 207}<br>    176: {opcode: ALOAD, slot: 5}<br>    178: {opcode: INVOKEINTERFACE, owner: java/util/Iterator, method name: next, method type: ()Ljava/lang/Object;}<br>    183: {opcode: CHECKCAST, type: io/smallrye/config/ConfigSourceFactory}<br>    186: {opcode: ASTORE, slot: 6}<br>    188: {opcode: ALOAD_1, slot: 1}<br>    189: {opcode: NEW, type: io/smallrye/config/ConfigurableConfigSource}<br>    192: {opcode: DUP}<br>    193: {opcode: ALOAD, slot: 6}<br>    195: {opcode: INVOKESPECIAL, owner: io/smallrye/config/ConfigurableConfigSource, method name: <init>, method type: (Lio/smallrye/config/ConfigSourceFactory;)V}<br>    198: {opcode: INVOKEINTERFACE, owner: java/util/List, method name: add, method type: (Ljava/lang/Object;)Z}<br>    203: {opcode: POP}<br>    204: {opcode: GOTO, target: 166}<br>    207: {opcode: ALOAD_1, slot: 1}<br>    208: {opcode: ARETURN}</div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Thu, Dec 12, 2024 at 11:11 AM David Lloyd <<a href="mailto:david.lloyd@redhat.com">david.lloyd@redhat.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Initial disclaimer: I'm using my backport [1] of this API, so it's possible that I've introduced a bug that is not found upstream, or somehow missed a backport patch. I don't have a good way to test this with upstream directly at the moment.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">I'm seeing a case where I'm transforming a class, and only changing calls to two overloads of `ServiceLoader.load()` to an equivalent on another class, for a test. But, the rewritten class triggers a `VerifyError` because one of the stack maps got a superfluous `int` added to it. This looks similar to a previously reported bug.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">I've narrowed it down to when I change the owner type of the method being called. If I keep the original owner, then things pass through just fine - this might be because of some optimization where it doesn't detect a change, or maybe it is because I end up growing the constant pool by one?</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Here's my transformation code (it's a little redundant in places but I was trying to rule out possible problems):</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">            ClassFile cf = ClassFile.of();<br>            ClassModel old = cf.parse(bytes);<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">            // then later...</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">            newBytes = cf.transformClass(old, old.thisClass(), ClassTransform.transformingMethodBodies(<br>                (cb, ce) -> {<br>                    if (ce instanceof InvokeInstruction ii<br>                        && ii.opcode() == Opcode.INVOKESTATIC<br>                        && ii.owner().name().equalsString("java/util/ServiceLoader")<br>                        && <a href="http://ii.name" target="_blank">ii.name</a>().equalsString("load")<br>                    ) {<br>                        switch (ii.type().stringValue()) {<br>                            case "(Ljava/lang/Class;)Ljava/util/ServiceLoader;",<br>                                 "(Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/util/ServiceLoader;" -><br>                                cb.invokestatic(ModuleServiceLoader.class.describeConstable().orElseThrow(), <a href="http://ii.name" target="_blank">ii.name</a>().stringValue(), ii.typeSymbol(), ii.isInterface());<br>                            default -><br>                                cb.invokestatic(ii.owner().asSymbol(), <a href="http://ii.name" target="_blank">ii.name</a>().stringValue(), ii.typeSymbol(), ii.isInterface());<br>                        }<br>                    } else {<br>                        cb.with(ce);<br>                    }<br>                }<br>            ));<br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Here's the original with a correct stack map:</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">  Stackmap Frame:<br>    bci: @61<br>    flags: { }<br>    locals: { 'java/util/ServiceLoader', 'java/util/Iterator' }<br>    stack: { integer }<br>  Bytecode:<br>    0000000: 1259 b800 5ab3 003b 125b b802 314b 2ab6<br>    0000010: 0040 4c2b b900 4101 0099 0021 2bb9 0042<br>    0000020: 0100 c000 5b4d 2cb9 005c 0100 125d b800<br>    0000030: 30c0 005e b800 09a7 0006 b800 5fb8 0060<br>    0000040: b800 61b2 0047 b300 2db2 0050 b300 4c11<br>    0000050: 0080 b300 0510 20b3 0006 1101 00b3 0007<br>    0000060: b1                                     <br>              - {start: 28, line number: 45}<br>              - {start: 38, line number: 46}<br>              - {start: 55, line number: 47}<br>              - {start: 58, line number: 48}<br>              - {start: 61, line number: 51}<br>              - {start: 64, line number: 53}<br>              - {start: 67, line number: 63}<br>              - {start: 73, line number: 65}<br>              - {start: 79, line number: 67}<br>              - {start: 85, line number: 69}<br>              - {start: 90, line number: 70}<br>            local variables: <br>              - {start: 38, end: 55, slot: 2, name: next, type: Lio/smallrye/mutiny/infrastructure/ExecutorConfiguration;}<br>              - {start: 14, end: 67, slot: 0, name: executorLoader, type: Ljava/util/ServiceLoader;}<br>              - {start: 19, end: 67, slot: 1, name: iterator, type: Ljava/util/Iterator;}<br>            local variable types: <br>              - {start: 14, end: 67, slot: 0, name: executorLoader, signature: Ljava/util/ServiceLoader<Lio/smallrye/mutiny/infrastructure/ExecutorConfiguration;>;}<br>              - {start: 19, end: 67, slot: 1, name: iterator, signature: Ljava/util/Iterator<Lio/smallrye/mutiny/infrastructure/ExecutorConfiguration;>;}<br>            stack map frames: <br>                58: {locals: [java/util/ServiceLoader, java/util/Iterator], stack: []}<br>                61: {locals: [java/util/ServiceLoader, java/util/Iterator], stack: []}<br>            //stack map frame @0: {locals: [], stack: []}<br>            0: {opcode: LDC, constant value: mutiny.disableCallBackDecorators}<br>            2: {opcode: INVOKESTATIC, owner: java/lang/Boolean, method name: getBoolean, method type: (Ljava/lang/String;)Z}<br>            5: {opcode: PUTSTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, field name: DISABLE_CALLBACK_DECORATORS, field type: Z}<br>            8: {opcode: LDC, constant value: 'ClassDesc[ExecutorConfiguration]'}<br>            10: {opcode: INVOKESTATIC, owner: java/util/ServiceLoader, method name: load, method type: (Ljava/lang/Class;)Ljava/util/ServiceLoader;}<br>            13: {opcode: ASTORE_0, slot: 0}<br>            14: {opcode: ALOAD_0, slot: 0, type: Ljava/util/ServiceLoader;, variable name: executorLoader}<br>            15: {opcode: INVOKEVIRTUAL, owner: java/util/ServiceLoader, method name: iterator, method type: ()Ljava/util/Iterator;}<br>            18: {opcode: ASTORE_1, slot: 1}<br>            19: {opcode: ALOAD_1, slot: 1, type: Ljava/util/Iterator;, variable name: iterator}<br>            20: {opcode: INVOKEINTERFACE, owner: java/util/Iterator, method name: hasNext, method type: ()Z}<br>            25: {opcode: IFEQ, target: 58}<br>            28: {opcode: ALOAD_1, slot: 1, type: Ljava/util/Iterator;, variable name: iterator}<br>            29: {opcode: INVOKEINTERFACE, owner: java/util/Iterator, method name: next, method type: ()Ljava/lang/Object;}<br>            34: {opcode: CHECKCAST, type: io/smallrye/mutiny/infrastructure/ExecutorConfiguration}<br>            37: {opcode: ASTORE_2, slot: 2}<br>            38: {opcode: ALOAD_2, slot: 2, type: Lio/smallrye/mutiny/infrastructure/ExecutorConfiguration;, variable name: next}<br>            39: {opcode: INVOKEINTERFACE, owner: io/smallrye/mutiny/infrastructure/ExecutorConfiguration, method name: getDefaultWorkerExecutor, method type: ()Ljava/util/concurrent/Executor;}<br>            44: {opcode: LDC, constant value: executor}<br>            46: {opcode: INVOKESTATIC, owner: io/smallrye/mutiny/helpers/ParameterValidation, method name: nonNull, method type: (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;}<br>            49: {opcode: CHECKCAST, type: java/util/concurrent/Executor}<br>            52: {opcode: INVOKESTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, method name: setDefaultExecutor, method type: (Ljava/util/concurrent/Executor;)V}<br>            55: {opcode: GOTO, target: 61}<br>            //stack map frame @58: {locals: [java/util/ServiceLoader, java/util/Iterator], stack: []}<br>            58: {opcode: INVOKESTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, method name: setDefaultExecutor, method type: ()V}<br>            //stack map frame @61: {locals: [java/util/ServiceLoader, java/util/Iterator], stack: []}<br>            61: {opcode: INVOKESTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, method name: reload, method type: ()V}<br>            64: {opcode: INVOKESTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, method name: resetCanCallerThreadBeBlockedSupplier, method type: ()V}<br>            67: {opcode: GETSTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure$PrintAndDumpThrowableConsumer, field name: INSTANCE, field type: Lio/smallrye/mutiny/infrastructure/Infrastructure$PrintAndDumpThrowableConsumer;}<br>            70: {opcode: PUTSTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, field name: droppedExceptionHandler, field type: Ljava/util/function/Consumer;}<br>            73: {opcode: GETSTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure$PrintOperatorEventOperatorLogger, field name: INSTANCE, field type: Lio/smallrye/mutiny/infrastructure/Infrastructure$PrintOperatorEventOperatorLogger;}<br>            76: {opcode: PUTSTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, field name: operatorLogger, field type: Lio/smallrye/mutiny/infrastructure/Infrastructure$OperatorLogger;}<br>            79: {opcode: SIPUSH, constant value: 128}<br>            82: {opcode: PUTSTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, field name: multiOverflowDefaultBufferSize, field type: I}<br>            85: {opcode: BIPUSH, constant value: 32}<br>            87: {opcode: PUTSTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, field name: bufferSizeXs, field type: I}<br>            90: {opcode: SIPUSH, constant value: 256}<br>            93: {opcode: PUTSTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, field name: bufferSizeS, field type: I}<br>            96: {opcode: RETURN}</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Here's the rewritten version with the wrong stack map:</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">  Current Frame:<br>    bci: @55<br>    flags: { }<br>    locals: { 'java/util/ServiceLoader', 'java/util/Iterator', 'io/smallrye/mutiny/infrastructure/ExecutorConfiguration' }<br>    stack: { }<br>  Stackmap Frame:<br>    bci: @61<br>    flags: { }<br>    locals: { 'java/util/ServiceLoader', 'java/util/Iterator' }<br>    stack: { integer }<br>  Bytecode:<br>    0000000: 1259 b800 5ab3 003b 125b b802 314b 2ab6<br>    0000010: 0040 4c2b b900 4101 0099 0021 2bb9 0042<br>    0000020: 0100 c000 5b4d 2cb9 005c 0100 125d b800<br>    0000030: 30c0 005e b800 09a7 0006 b800 5fb8 0060<br>    0000040: b800 61b2 0047 b300 2db2 0050 b300 4c11<br>    0000050: 0080 b300 0510 20b3 0006 1101 00b3 0007<br>    0000060: b1                                     <br>              - {start: 14, line number: 43}<br>              - {start: 19, line number: 44}<br>              - {start: 28, line number: 45}<br>              - {start: 38, line number: 46}<br>              - {start: 55, line number: 47}<br>              - {start: 58, line number: 48}<br>              - {start: 61, line number: 51}<br>              - {start: 64, line number: 53}<br>              - {start: 67, line number: 63}<br>              - {start: 73, line number: 65}<br>              - {start: 79, line number: 67}<br>              - {start: 85, line number: 69}<br>              - {start: 90, line number: 70}<br>            stack map frames: <br>                58: {locals: [java/util/ServiceLoader, java/util/Iterator], stack: []}<br>                61: {locals: [java/util/ServiceLoader, java/util/Iterator], stack: [int]}<br>            //stack map frame @0: {locals: [], stack: []}<br>            0: {opcode: LDC, constant value: mutiny.disableCallBackDecorators}<br>            2: {opcode: INVOKESTATIC, owner: java/lang/Boolean, method name: getBoolean, method type: (Ljava/lang/String;)Z}<br>            5: {opcode: PUTSTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, field name: DISABLE_CALLBACK_DECORATORS, field type: Z}<br>            8: {opcode: LDC, constant value: 'ClassDesc[ExecutorConfiguration]'}<br>            10: {opcode: INVOKESTATIC, owner: io/github/dmlloyd/modules/ModuleServiceLoader, method name: load, method type: (Ljava/lang/Class;)Ljava/util/ServiceLoader;}<br>            13: {opcode: ASTORE_0, slot: 0}<br>            14: {opcode: ALOAD_0, slot: 0, type: Ljava/util/ServiceLoader;, variable name: executorLoader}<br>            15: {opcode: INVOKEVIRTUAL, owner: java/util/ServiceLoader, method name: iterator, method type: ()Ljava/util/Iterator;}<br>            18: {opcode: ASTORE_1, slot: 1}<br>            19: {opcode: ALOAD_1, slot: 1, type: Ljava/util/Iterator;, variable name: iterator}<br>            20: {opcode: INVOKEINTERFACE, owner: java/util/Iterator, method name: hasNext, method type: ()Z}<br>            25: {opcode: IFEQ, target: 58}<br>            28: {opcode: ALOAD_1, slot: 1, type: Ljava/util/Iterator;, variable name: iterator}<br>            29: {opcode: INVOKEINTERFACE, owner: java/util/Iterator, method name: next, method type: ()Ljava/lang/Object;}<br>            34: {opcode: CHECKCAST, type: io/smallrye/mutiny/infrastructure/ExecutorConfiguration}<br>            37: {opcode: ASTORE_2, slot: 2}<br>            38: {opcode: ALOAD_2, slot: 2, type: Lio/smallrye/mutiny/infrastructure/ExecutorConfiguration;, variable name: next}<br>            39: {opcode: INVOKEINTERFACE, owner: io/smallrye/mutiny/infrastructure/ExecutorConfiguration, method name: getDefaultWorkerExecutor, method type: ()Ljava/util/concurrent/Executor;}<br>            44: {opcode: LDC, constant value: executor}<br>            46: {opcode: INVOKESTATIC, owner: io/smallrye/mutiny/helpers/ParameterValidation, method name: nonNull, method type: (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;}<br>            49: {opcode: CHECKCAST, type: java/util/concurrent/Executor}<br>            52: {opcode: INVOKESTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, method name: setDefaultExecutor, method type: (Ljava/util/concurrent/Executor;)V}<br>            55: {opcode: GOTO, target: 61}<br>            //stack map frame @58: {locals: [java/util/ServiceLoader, java/util/Iterator], stack: []}<br>            58: {opcode: INVOKESTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, method name: setDefaultExecutor, method type: ()V}<br>            //stack map frame @61: {locals: [java/util/ServiceLoader, java/util/Iterator], stack: [int]}<br>            61: {opcode: INVOKESTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, method name: reload, method type: ()V}<br>            64: {opcode: INVOKESTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, method name: resetCanCallerThreadBeBlockedSupplier, method type: ()V}<br>            67: {opcode: GETSTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure$PrintAndDumpThrowableConsumer, field name: INSTANCE, field type: Lio/smallrye/mutiny/infrastructure/Infrastructure$PrintAndD<br>umpThrowableConsumer;}<br>            70: {opcode: PUTSTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, field name: droppedExceptionHandler, field type: Ljava/util/function/Consumer;}<br>            73: {opcode: GETSTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure$PrintOperatorEventOperatorLogger, field name: INSTANCE, field type: Lio/smallrye/mutiny/infrastructure/Infrastructure$PrintOperatorEventOperatorLogger;}<br>            76: {opcode: PUTSTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, field name: operatorLogger, field type: Lio/smallrye/mutiny/infrastructure/Infrastructure$OperatorLogger;}<br>            79: {opcode: SIPUSH, constant value: 128}<br>            82: {opcode: PUTSTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, field name: multiOverflowDefaultBufferSize, field type: I}<br>            85: {opcode: BIPUSH, constant value: 32}<br>            87: {opcode: PUTSTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, field name: bufferSizeXs, field type: I}<br>            90: {opcode: SIPUSH, constant value: 256}<br>            93: {opcode: PUTSTATIC, owner: io/smallrye/mutiny/infrastructure/Infrastructure, field name: bufferSizeS, field type: I}<br>            96: {opcode: RETURN}<br></div><br clear="all"></div><div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">[1] <a href="https://github.com/dmlloyd/jdk-classfile-backport" target="_blank">https://github.com/dmlloyd/jdk-classfile-backport</a></div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr">- DML • he/him<br></div></div></div>
</blockquote></div><div><br clear="all"></div><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr">- DML • he/him<br></div></div>