Closed KorewaLidesu closed 1 year ago
Imagine you want to change instanceof result, but the original value you want to check is casted to wrong class xd P/s: Can this be decomplier issue? 🤔
So it was my fault to not check bytecode, the checkcast was after GETFIELD which causing issue
FRAME APPEND [T logisticspipes/pipes/basic/CoreUnroutedPipe]
ALOAD 3
GETFIELD logisticspipes/pipes/basic/LogisticsTileGenericPipe.pipe : Llogisticspipes/pipes/basic/CoreUnroutedPipe;
CHECKCAST logisticspipes/pipes/PipeLogisticsChassis
ALOAD 0
GETFIELD logisticspipes/network/abstractpackets/ModuleCoordinatesPacket.positionInt : I
ISTORE 6
ASTORE 5
ALOAD 0
ALOAD 5
ILOAD 6
INVOKEDYNAMIC call()Lcom/llamalad7/mixinextras/injector/wrapoperation/Operation; [
// handle kind 0x6 : INVOKESTATIC
java/lang/invoke/LambdaMetafactory.metafactory(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
// arguments:
([Ljava/lang/Object;)Ljava/lang/Object;,
// handle kind 0x6 : INVOKESTATIC
logisticspipes/network/abstractpackets/ModuleCoordinatesPacket.mixinextras$bridge$2$getSubModule([Ljava/lang/Object;)Llogisticspipes/modules/LogisticsModule;,
([Ljava/lang/Object;)Llogisticspipes/modules/LogisticsModule;
]
ALOAD 1
ALOAD 2
NEW com/llamalad7/mixinextras/sugar/impl/ref/LocalRefImpl
DUP
ALOAD 3
INVOKESPECIAL com/llamalad7/mixinextras/sugar/impl/ref/LocalRefImpl.<init> (Ljava/lang/Object;)V
ASTORE 7
ALOAD 7
INVOKEVIRTUAL logisticspipes/network/abstractpackets/ModuleCoordinatesPacket.wrapOperation$zzh000$testbridge_0_3_6_1_dev$redirectCmModule$mixinextras$bridge0 (Llogisticspipes/pipes/PipeLogisticsChassis;ILcom/llamalad7/mixinextras/injector/wrapoperation/Operation;Lnet/minecraft/entity/player/EntityPlayer;Ljava/lang/Class;Lcom/llamalad7/mixinextras/sugar/ref/LocalRef;)Llogisticspipes/modules/LogisticsModule;
ALOAD 7
INVOKEINTERFACE com/llamalad7/mixinextras/sugar/ref/LocalRef.get ()Ljava/lang/Object; (itf)
CHECKCAST logisticspipes/pipes/basic/LogisticsTileGenericPipe
ASTORE 3
ASTORE 4
Anyway to remove CHECKCAST after GETFIELD opcode?