Fixed #1936 AS3 Direct editation - slots increment, decrement

This commit is contained in:
Jindra Petřík
2023-01-14 14:39:06 +01:00
parent d55f9dcf3e
commit 0aaef75927
9 changed files with 60 additions and 2 deletions

View File

@@ -1839,6 +1839,9 @@ public class AVM2Code implements Cloneable {
GraphTargetItem value = null;
if (item instanceof SetSlotAVM2Item) {
SetSlotAVM2Item ss = (SetSlotAVM2Item) item;
if (ss.slotName == null) {
break;
}
propNameStr = ss.slotName.getName(abc.constants, new ArrayList<>(), true, true);
value = ss.value;
} else if (item instanceof SetPropertyAVM2Item) {

View File

@@ -352,7 +352,6 @@ public class NameAVM2Item extends AssignableAVM2Item {
}
}
return toSourceMerge(localData, generator,
slotNumber > -1 ? ins(AVM2Instructions.GetScopeObject, slotScope) : null,
//Start get original
generateGetLoc(regNumber), generateGetSlot(slotScope, slotNumber),
//End get original
@@ -363,7 +362,11 @@ public class NameAVM2Item extends AssignableAVM2Item {
(post) ? (decrement ? ins(isInteger ? AVM2Instructions.DecrementI : AVM2Instructions.Decrement) : ins(isInteger ? AVM2Instructions.IncrementI : AVM2Instructions.Increment)) : null,
generateCoerce(localData, generator, returnType()),
generateSetLoc(regNumber),
slotNumber > -1 ? ins(AVM2Instructions.SetSlot, slotNumber) : null
slotNumber > -1 ? Arrays.asList(
ins(AVM2Instructions.GetScopeObject, slotScope),
ins(AVM2Instructions.Swap),
ins(AVM2Instructions.SetSlot, slotNumber)
) : null
);
}