When OpenJ9 is used during ForgeGradle's decompile process, additional parameter casts are generated when calling System#arrayCopy(Object, int, Object, int, int) in the produced source code.
For HotSpot builds, the following code may be produced:
System.arraycopy(arr1, 0, arr2, 0, arr2.length);
When using OpenJ9 builds, the following code will instead be generated:
This can lead to issues such as MinecraftForge/ForgeGradle#597, where patches expecting there to be no additional cast fail.
The only difference that can be seen between the OpenJ9 and HotSpot builds for this method is that OpenJ9 includes a private reference implementation alongside it. I suspect this is the reason the cast is produced, as two methods exist with different parameter types.
When OpenJ9 is used during ForgeGradle's decompile process, additional parameter casts are generated when calling
System#arrayCopy(Object, int, Object, int, int)
in the produced source code.For HotSpot builds, the following code may be produced:
When using OpenJ9 builds, the following code will instead be generated:
This can lead to issues such as MinecraftForge/ForgeGradle#597, where patches expecting there to be no additional cast fail.
The only difference that can be seen between the OpenJ9 and HotSpot builds for this method is that OpenJ9 includes a private reference implementation alongside it. I suspect this is the reason the cast is produced, as two methods exist with different parameter types.