mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-09-25 12:21:04 +00:00
faster AVM2 constant pool when adding a lot of items to it.
This commit is contained in:
@@ -456,9 +456,9 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<ABC
|
||||
}
|
||||
List<MultinameUsage> usages = abc.findMultinameDefinition(multinameIndex);
|
||||
|
||||
Multiname m = abc.constants.constant_multiname.get(multinameIndex);
|
||||
Multiname m = abc.constants.getMultiname(multinameIndex);
|
||||
//search other ABC tags if this is not private multiname
|
||||
if (m.namespace_index > 0 && abc.constants.constant_namespace.get(m.namespace_index).kind != Namespace.KIND_PRIVATE) {
|
||||
if (m.namespace_index > 0 && abc.constants.getNamespace(m.namespace_index).kind != Namespace.KIND_PRIVATE) {
|
||||
for (ABCContainerTag at : getAbcList()) {
|
||||
ABC a = at.getABC();
|
||||
if (a == abc) {
|
||||
@@ -496,9 +496,9 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<ABC
|
||||
if (multinameIndex > -1) {
|
||||
List<MultinameUsage> usages = abc.findMultinameDefinition(multinameIndex);
|
||||
|
||||
Multiname m = abc.constants.constant_multiname.get(multinameIndex);
|
||||
Multiname m = abc.constants.getMultiname(multinameIndex);
|
||||
//search other ABC tags if this is not private multiname
|
||||
if (m.namespace_index > 0 && abc.constants.constant_namespace.get(m.namespace_index).kind != Namespace.KIND_PRIVATE) {
|
||||
if (m.namespace_index > 0 && abc.constants.getNamespace(m.namespace_index).kind != Namespace.KIND_PRIVATE) {
|
||||
for (ABCContainerTag at : getAbcList()) {
|
||||
ABC a = at.getABC();
|
||||
if (a == abc) {
|
||||
@@ -787,7 +787,7 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener<ABC
|
||||
nskind = newTraitDialog.getNamespaceKind();
|
||||
name = newTraitDialog.getTraitName();
|
||||
isStatic = newTraitDialog.getStatic();
|
||||
m = new Multiname(Multiname.QNAME, abc.constants.getStringId(name, true), abc.constants.getNamespaceId(nskind, "", 0, true), 0, 0, new ArrayList<>());
|
||||
m = new Multiname(Multiname.QNAME, abc.constants.getStringId(name, true), abc.constants.getNamespaceId(nskind, "", 0, true), 0);
|
||||
int mid = abc.constants.getMultinameId(m, false);
|
||||
if (mid <= 0) {
|
||||
break;
|
||||
|
||||
@@ -465,8 +465,8 @@ public class DecompiledEditorPane extends LineMarkedEditorPane implements CaretL
|
||||
switch (sh.getProperties().subtype) {
|
||||
case TYPE_NAME:
|
||||
String typeName = sh.getProperties().specialValue;
|
||||
for (int i = 1; i < abc.constants.constant_multiname.size(); i++) {
|
||||
Multiname m = abc.constants.constant_multiname.get(i);
|
||||
for (int i = 1; i < abc.constants.getMultinameCount(); i++) {
|
||||
Multiname m = abc.constants.getMultiname(i);
|
||||
if (m != null) {
|
||||
if (typeName.equals(m.getNameWithNamespace(abc.constants).toString())) {
|
||||
return i;
|
||||
|
||||
@@ -59,8 +59,8 @@ public class UsageFrame extends AppDialog implements MouseListener {
|
||||
super(abcPanel.getMainPanel().getMainFrame().getWindow());
|
||||
this.abcPanel = abcPanel;
|
||||
List<MultinameUsage> usages = definitions ? abc.findMultinameDefinition(multinameIndex) : abc.findMultinameUsage(multinameIndex);
|
||||
Multiname m = abc.constants.constant_multiname.get(multinameIndex);
|
||||
if (m.namespace_index > 0 && abc.constants.constant_namespace.get(m.namespace_index).kind != Namespace.KIND_PRIVATE) {
|
||||
Multiname m = abc.constants.getMultiname(multinameIndex);
|
||||
if (m.namespace_index > 0 && abc.constants.getNamespace(m.namespace_index).kind != Namespace.KIND_PRIVATE) {
|
||||
for (ABCContainerTag at : abc.getAbcTags()) {
|
||||
ABC a = at.getABC();
|
||||
if (a == abc) {
|
||||
|
||||
@@ -94,8 +94,8 @@ public class DebuggerTools {
|
||||
if (dsp.abc == a) { //do not replace Loader in debugger itself
|
||||
continue;
|
||||
}
|
||||
for (int i = 1; i < a.constants.constant_multiname.size(); i++) {
|
||||
Multiname m = a.constants.constant_multiname.get(i);
|
||||
for (int i = 1; i < a.constants.getMultinameCount(); i++) {
|
||||
Multiname m = a.constants.getMultiname(i);
|
||||
if ("flash.display.Loader".equals(m.getNameWithNamespace(a.constants).toRawString())) {
|
||||
m.namespace_index = a.constants.getNamespaceId(Namespace.KIND_PACKAGE, debuggerPkg, 0, true);
|
||||
m.name_index = a.constants.getStringId("DebugLoader", true);
|
||||
@@ -112,8 +112,8 @@ public class DebuggerTools {
|
||||
//change trace to fname
|
||||
for (ABCContainerTag ct : swf.getAbcList()) {
|
||||
ABC a = ct.getABC();
|
||||
for (int i = 1; i < a.constants.constant_multiname.size(); i++) {
|
||||
Multiname m = a.constants.constant_multiname.get(i);
|
||||
for (int i = 1; i < a.constants.getMultinameCount(); i++) {
|
||||
Multiname m = a.constants.getMultiname(i);
|
||||
if ("trace".equals(m.getNameWithNamespace(a.constants).toRawString())) {
|
||||
m.namespace_index = a.constants.getNamespaceId(Namespace.KIND_PACKAGE, debuggerPkg, 0, true);
|
||||
m.name_index = a.constants.getStringId(fname, true);
|
||||
@@ -135,8 +135,8 @@ public class DebuggerTools {
|
||||
//Change all debugger calls to normal trace / Loader
|
||||
for (ABCContainerTag ct : swf.getAbcList()) {
|
||||
ABC a = ct.getABC();
|
||||
for (int i = 1; i < a.constants.constant_multiname.size(); i++) {
|
||||
Multiname m = a.constants.constant_multiname.get(i);
|
||||
for (int i = 1; i < a.constants.getMultinameCount(); i++) {
|
||||
Multiname m = a.constants.getMultiname(i);
|
||||
String packageStr = m.getNameWithNamespace(a.constants).toString();
|
||||
if (isDebuggerClass(packageStr, "debugTrace")
|
||||
|| isDebuggerClass(packageStr, "debugAlert")
|
||||
@@ -175,15 +175,15 @@ public class DebuggerTools {
|
||||
for (ABCContainerTag ds : debugSWF.getAbcList()) {
|
||||
ABC a = ds.getABC();
|
||||
//Append random hex to Debugger package name
|
||||
for (int i = 1; i < a.constants.constant_namespace.size(); i++) {
|
||||
if (a.constants.constant_namespace.get(i).hasName(DEBUGGER_PACKAGE, a.constants)) {
|
||||
a.constants.constant_namespace.get(i).name_index = a.constants.getStringId(newdebuggerpkg, true);
|
||||
for (int i = 1; i < a.constants.getNamespaceCount(); i++) {
|
||||
if (a.constants.getNamespace(i).hasName(DEBUGGER_PACKAGE, a.constants)) {
|
||||
a.constants.getNamespace(i).name_index = a.constants.getStringId(newdebuggerpkg, true);
|
||||
}
|
||||
}
|
||||
//Set debugger port to actually set port
|
||||
for (int i = 0; i < a.constants.constant_int.size(); i++) {
|
||||
if (a.constants.constant_int.get(i) == 123456L) {
|
||||
a.constants.constant_int.set(i, (long) port);
|
||||
for (int i = 0; i < a.constants.getIntCount(); i++) {
|
||||
if (a.constants.getInt(i) == 123456L) {
|
||||
a.constants.setInt(i, (long) port);
|
||||
}
|
||||
}
|
||||
//Add to target SWF
|
||||
|
||||
Reference in New Issue
Block a user