Skip to content

Commit 2cd1799

Browse files
authored
InvokerHelperVisitor visit the frame (#225)
* fix frame visit * force build * make static
1 parent 1c859cd commit 2cd1799

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

src/main/java/com/cleanroommc/groovyscript/core/visitors/InvokerHelperVisitor.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,28 @@ public void visitMethodInsn(int opcode, String owner, String name, String desc,
5252
}
5353
super.visitMethodInsn(opcode, owner, name, desc, itf);
5454
}
55+
56+
@Override
57+
public void visitFrame(int type, int nLocal, Object[] local, int nStack, Object[] stack) {
58+
super.visitFrame(type, nLocal, remapEntries(nLocal, local), nStack, remapEntries(nStack, stack));
59+
}
60+
61+
private static Object[] remapEntries(int n, Object[] entries) {
62+
for (int i = 0; i < n; i++) {
63+
if (entries[i] instanceof String) {
64+
Object[] newEntries = new Object[n];
65+
if (i > 0) {
66+
System.arraycopy(entries, 0, newEntries, 0, i);
67+
}
68+
do {
69+
Object t = entries[i];
70+
if (LINKED_HASH_MAP_TYPE.equals(t)) t = FAST_UTIL_MAP_TYPE;
71+
newEntries[i++] = t;
72+
} while (i < n);
73+
return newEntries;
74+
}
75+
}
76+
return entries;
77+
}
5578
}
5679
}

0 commit comments

Comments
 (0)