Open aromaa opened 3 weeks ago
So having investigated this, this appears to be a result of a13f0c0db0be4f6ff691b78b498e928a6d7504bf which is intended to bring the ClassReader
flags in line with the flags used when classes are read for transformation in ModLauncher itself. However there are cases where EXPAND_FRAMES
yields slightly different results when generating Locals
, despite my best efforts to reduce those cases.
In this case, the two additional ItemStack
s are technically still in scope at the injection point, but have achieved "zombie" status because they have also been technically removed by a frame CHOP
which has taken them out of the frame from the JVM's point of view, even though they are still technically available in those frame positions.
For the moment, I've extended the capability of the new property mixin.tunable.classReaderExpandFrames
to also affect metadata class nodes, so enabling that option with the new snapshot should correct the issue here (at least it does in my testing), but it's probably worth considering whether the flag should default to the old value and the tunable's behaviour be inverted (so that for example Forge can deassert it).
Testing out the 0.8.7 snapshot on Sponge seems to cause some new failures on existing Mixins around the LocalVariable capture. The following Mixin here decompiles to:
but the LocalVariable print seems to mismatch on what's actually in the stack: