mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-09-28 00:30:45 +00:00
do not copy big byte arrays, store only references (ByteArrayRange) e.g in image tags
This commit is contained in:
@@ -1712,17 +1712,16 @@ public class AVM2Code implements Cloneable {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
//undeclare registers at the end of the block?
|
||||
for(int reg:nowdeclaredRegs){
|
||||
declaredRegisters[reg] = false;
|
||||
}
|
||||
//undeclare registers at the end of the block?
|
||||
for(int reg:nowdeclaredRegs){
|
||||
declaredRegisters[reg] = false;
|
||||
}
|
||||
|
||||
for(Slot s:nowdeclaredSlots){
|
||||
declaredSlots.remove(s);
|
||||
}*/
|
||||
for(Slot s:nowdeclaredSlots){
|
||||
declaredSlots.remove(s);
|
||||
}*/
|
||||
}
|
||||
|
||||
public List<GraphTargetItem> toGraphTargetItems(String path, boolean isStatic, int scriptIndex, int classIndex, ABC abc, AVM2ConstantPool constants, List<MethodInfo> method_info, MethodBody body, HashMap<Integer, String> localRegNames, ScopeStack scopeStack, boolean isStaticInitializer, List<String> fullyQualifiedNames, Traits initTraits, int staticOperation, HashMap<Integer, Integer> localRegAssigmentIps, HashMap<Integer, List<Integer>> refs) throws InterruptedException {
|
||||
|
||||
@@ -667,7 +667,7 @@ public class AVM2Graph extends Graph {
|
||||
WhileItem w = (WhileItem) loopItem;
|
||||
|
||||
if ((!w.expression.isEmpty()) && (w.expression.get(w.expression.size() - 1) instanceof HasNextAVM2Item)) {
|
||||
HasNextAVM2Item hn=(HasNextAVM2Item)w.expression.get(w.expression.size() - 1);
|
||||
HasNextAVM2Item hn = (HasNextAVM2Item) w.expression.get(w.expression.size() - 1);
|
||||
if (((HasNextAVM2Item) w.expression.get(w.expression.size() - 1)).collection != null) {
|
||||
if (((HasNextAVM2Item) w.expression.get(w.expression.size() - 1)).collection.getNotCoerced().getThroughRegister() instanceof FilteredCheckAVM2Item) {
|
||||
//GraphTargetItem gti = ((HasNextAVM2Item) ((HasNextAVM2Item) w.expression.get(w.expression.size() - 1))).collection.getNotCoerced().getThroughRegister();
|
||||
@@ -704,7 +704,7 @@ public class AVM2Graph extends Graph {
|
||||
if (gti instanceof NextValueAVM2Item) {
|
||||
return new ForEachInAVM2Item(w.src, w.loop, new InAVM2Item(hn.instruction, sti.getObject(), ((HasNextAVM2Item) w.expression.get(w.expression.size() - 1)).collection), w.commands);
|
||||
} else if (gti instanceof NextNameAVM2Item) {
|
||||
return new ForInAVM2Item(w.src, w.loop, new InAVM2Item(hn.instruction,sti.getObject(), ((HasNextAVM2Item) w.expression.get(w.expression.size() - 1)).collection), w.commands);
|
||||
return new ForInAVM2Item(w.src, w.loop, new InAVM2Item(hn.instruction, sti.getObject(), ((HasNextAVM2Item) w.expression.get(w.expression.size() - 1)).collection), w.commands);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -41,10 +41,10 @@ public abstract class GetLocalTypeIns extends InstructionDefinition {
|
||||
|
||||
@Override
|
||||
public void translate(boolean isStatic, int scriptIndex, int classIndex, HashMap<Integer, GraphTargetItem> localRegs, TranslateStack stack, ScopeStack scopeStack, AVM2ConstantPool constants, AVM2Instruction ins, List<MethodInfo> method_info, List<GraphTargetItem> output, MethodBody body, ABC abc, HashMap<Integer, String> localRegNames, List<String> fullyQualifiedNames, String path, HashMap<Integer, Integer> regAssignCount, int ip, HashMap<Integer, List<Integer>> refs, AVM2Code code) {
|
||||
|
||||
|
||||
int regId = getRegisterId(ins);
|
||||
|
||||
if(regId == 0){
|
||||
|
||||
if (regId == 0) {
|
||||
if ((classIndex >= abc.instance_info.size()) || classIndex < 0) {
|
||||
stack.push(new ScriptAVM2Item(scriptIndex));
|
||||
return;
|
||||
@@ -56,7 +56,7 @@ public abstract class GetLocalTypeIns extends InstructionDefinition {
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
GraphTargetItem computedValue = localRegs.get(regId);
|
||||
int assignCount = 0;
|
||||
if (regAssignCount.containsKey(regId)) {
|
||||
|
||||
@@ -40,8 +40,8 @@ public abstract class AVM2Item extends GraphTargetItem {
|
||||
|
||||
public AVM2Item(GraphSourceItem instruction, int precedence) {
|
||||
super(instruction, precedence);
|
||||
if(instruction instanceof AVM2Instruction){
|
||||
this.instruction = (AVM2Instruction)instruction;
|
||||
if (instruction instanceof AVM2Instruction) {
|
||||
this.instruction = (AVM2Instruction) instruction;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,11 +81,11 @@ public abstract class AVM2Item extends GraphTargetItem {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (empty) {
|
||||
return propertyName.toString(writer, localData);
|
||||
}
|
||||
if (propertyName instanceof FullMultinameAVM2Item) {
|
||||
if (propertyName instanceof FullMultinameAVM2Item) {
|
||||
if (((FullMultinameAVM2Item) propertyName).name != null) {
|
||||
return propertyName.toString(writer, localData);
|
||||
} else {
|
||||
@@ -101,7 +101,7 @@ public abstract class AVM2Item extends GraphTargetItem {
|
||||
|
||||
public static String localRegName(HashMap<Integer, String> localRegNames, int reg) {
|
||||
if (localRegNames.containsKey(reg)) {
|
||||
return IdentifiersDeobfuscation.printIdentifier(true,localRegNames.get(reg));
|
||||
return IdentifiersDeobfuscation.printIdentifier(true, localRegNames.get(reg));
|
||||
} else {
|
||||
if (reg == 0) {
|
||||
return "this";
|
||||
|
||||
+4
-6
@@ -18,7 +18,6 @@ package com.jpexs.decompiler.flash.abc.avm2.model;
|
||||
|
||||
import com.jpexs.decompiler.flash.abc.avm2.AVM2ConstantPool;
|
||||
import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction;
|
||||
import com.jpexs.decompiler.flash.abc.types.Multiname;
|
||||
import com.jpexs.decompiler.flash.abc.types.Namespace;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
@@ -26,14 +25,13 @@ import com.jpexs.decompiler.graph.TypeItem;
|
||||
import com.jpexs.decompiler.graph.model.LocalData;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class FullMultinameAVM2Item extends AVM2Item {
|
||||
|
||||
public int multinameIndex;
|
||||
public GraphTargetItem name;
|
||||
public GraphTargetItem namespace;
|
||||
|
||||
|
||||
public FullMultinameAVM2Item(AVM2Instruction instruction, int multinameIndex, GraphTargetItem name) {
|
||||
super(instruction, PRECEDENCE_PRIMARY);
|
||||
this.multinameIndex = multinameIndex;
|
||||
@@ -155,10 +153,10 @@ public class FullMultinameAVM2Item extends AVM2Item {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public GraphTargetItem returnType() {
|
||||
public GraphTargetItem returnType() {
|
||||
return TypeItem.UNBOUNDED;
|
||||
}
|
||||
|
||||
|
||||
@@ -34,9 +34,9 @@ public class GetLexAVM2Item extends AVM2Item {
|
||||
|
||||
@Override
|
||||
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
|
||||
String localName = propertyName.getName(localData.constantsAvm2, localData.fullyQualifiedNames, false);
|
||||
srcData.put("localName",localName);
|
||||
|
||||
String localName = propertyName.getName(localData.constantsAvm2, localData.fullyQualifiedNames, false);
|
||||
srcData.put("localName", localName);
|
||||
return writer.append(propertyName.getName(localData.constantsAvm2, localData.fullyQualifiedNames, false));
|
||||
}
|
||||
|
||||
|
||||
@@ -40,21 +40,21 @@ public class GetSlotAVM2Item extends AVM2Item {
|
||||
return writer.append("/*UnknownSlot*/");
|
||||
}
|
||||
srcData.put("localName", getNameAsStr(localData));
|
||||
|
||||
|
||||
return writer.append(slotName.getName(localData.constantsAvm2, localData.fullyQualifiedNames, false));
|
||||
}
|
||||
|
||||
public String getNameAsStr(LocalData localData){
|
||||
public String getNameAsStr(LocalData localData) {
|
||||
return slotName.getName(localData.constantsAvm2, localData.fullyQualifiedNames, false);
|
||||
}
|
||||
|
||||
public GraphTextWriter getName(GraphTextWriter writer, LocalData localData) {
|
||||
|
||||
public GraphTextWriter getName(GraphTextWriter writer, LocalData localData) {
|
||||
if (slotName == null) {
|
||||
return writer.append("/*UnknownSlot*/");
|
||||
}
|
||||
return writer.append(slotName.getName(localData.constantsAvm2, localData.fullyQualifiedNames, false));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public GraphTargetItem returnType() {
|
||||
return TypeItem.UNBOUNDED;
|
||||
|
||||
+1
-1
@@ -55,7 +55,7 @@ public class LocalRegAVM2Item extends AVM2Item {
|
||||
computedResult = null;
|
||||
}
|
||||
}
|
||||
this.computedValue = computedValue;
|
||||
this.computedValue = computedValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-2
@@ -61,7 +61,7 @@ public class NewFunctionAVM2Item extends AVM2Item {
|
||||
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
|
||||
MethodBody body = abc.findBody(methodIndex);
|
||||
writer.append("function");
|
||||
writer.startMethod(methodIndex);
|
||||
writer.startMethod(methodIndex);
|
||||
writer.append((!functionName.isEmpty() ? " " + functionName : ""));
|
||||
writer.appendNoHilight("(");
|
||||
methodInfo.get(methodIndex).getParamStr(writer, constants, body, abc, fullyQualifiedNames);
|
||||
@@ -71,7 +71,7 @@ public class NewFunctionAVM2Item extends AVM2Item {
|
||||
writer.appendNoHilight(abc.findBodyIndex(methodIndex));
|
||||
writer.newLine();
|
||||
}
|
||||
methodInfo.get(methodIndex).getReturnTypeStr(writer, constants, fullyQualifiedNames);
|
||||
methodInfo.get(methodIndex).getReturnTypeStr(writer, constants, fullyQualifiedNames);
|
||||
writer.startBlock();
|
||||
if (body != null) {
|
||||
if (writer instanceof NulWriter) {
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ public class SetLocalAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assig
|
||||
public SetLocalAVM2Item(AVM2Instruction instruction, int regIndex, GraphTargetItem value) {
|
||||
super(instruction, PRECEDENCE_ASSIGMENT);
|
||||
this.regIndex = regIndex;
|
||||
this.value = value;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -35,7 +35,7 @@ public class SetSlotAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assign
|
||||
super(instruction, PRECEDENCE_ASSIGMENT);
|
||||
this.slotName = slotName;
|
||||
this.value = value;
|
||||
this.scope = scope;
|
||||
this.scope = scope;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -51,11 +51,11 @@ public class SetSlotAVM2Item extends AVM2Item implements SetTypeAVM2Item, Assign
|
||||
return value.toString(writer, localData);
|
||||
}
|
||||
|
||||
public String getNameAsStr(LocalData localData){
|
||||
public String getNameAsStr(LocalData localData) {
|
||||
return slotName.getName(localData.constantsAvm2, localData.fullyQualifiedNames, false);
|
||||
}
|
||||
|
||||
public GraphTextWriter getName(GraphTextWriter writer, LocalData localData) {
|
||||
|
||||
public GraphTextWriter getName(GraphTextWriter writer, LocalData localData) {
|
||||
if (slotName == null) {
|
||||
return writer.append("/*UnknownSlot*/");
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ public class ThisAVM2Item extends AVM2Item {
|
||||
|
||||
public Multiname className;
|
||||
|
||||
public ThisAVM2Item(GraphSourceItem instruction,Multiname className) {
|
||||
public ThisAVM2Item(GraphSourceItem instruction, Multiname className) {
|
||||
super(instruction, PRECEDENCE_PRIMARY);
|
||||
this.className = className;
|
||||
srcData.put("localName", "this");
|
||||
@@ -45,7 +45,7 @@ public class ThisAVM2Item extends AVM2Item {
|
||||
}
|
||||
|
||||
@Override
|
||||
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) {
|
||||
return writer.append("this");
|
||||
}
|
||||
|
||||
|
||||
+20
-24
@@ -16,7 +16,6 @@
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.abc.avm2.model.clauses;
|
||||
|
||||
import com.jpexs.decompiler.flash.abc.ABC;
|
||||
import com.jpexs.decompiler.flash.abc.avm2.model.AVM2Item;
|
||||
import com.jpexs.decompiler.flash.abc.avm2.model.CoerceAVM2Item;
|
||||
import com.jpexs.decompiler.flash.abc.avm2.model.ConvertAVM2Item;
|
||||
@@ -24,13 +23,10 @@ import com.jpexs.decompiler.flash.abc.avm2.model.GetSlotAVM2Item;
|
||||
import com.jpexs.decompiler.flash.abc.avm2.model.LocalRegAVM2Item;
|
||||
import com.jpexs.decompiler.flash.abc.avm2.model.SetLocalAVM2Item;
|
||||
import com.jpexs.decompiler.flash.abc.avm2.model.SetSlotAVM2Item;
|
||||
import com.jpexs.decompiler.flash.abc.types.InstanceInfo;
|
||||
import com.jpexs.decompiler.flash.abc.types.Multiname;
|
||||
import com.jpexs.decompiler.flash.helpers.GraphTextWriter;
|
||||
import com.jpexs.decompiler.graph.GraphTargetItem;
|
||||
import com.jpexs.decompiler.graph.TypeItem;
|
||||
import com.jpexs.decompiler.graph.model.LocalData;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -49,38 +45,38 @@ public class DeclarationAVM2Item extends AVM2Item {
|
||||
|
||||
public DeclarationAVM2Item(GraphTargetItem assignment) {
|
||||
this(assignment, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
|
||||
|
||||
if(assignment instanceof LocalRegAVM2Item){ //for..in
|
||||
LocalRegAVM2Item lti=(LocalRegAVM2Item)assignment;
|
||||
public GraphTextWriter appendTo(GraphTextWriter writer, LocalData localData) throws InterruptedException {
|
||||
|
||||
if (assignment instanceof LocalRegAVM2Item) { //for..in
|
||||
LocalRegAVM2Item lti = (LocalRegAVM2Item) assignment;
|
||||
String localName = localRegName(localData.localRegNames, lti.regIndex);
|
||||
srcData.put("localName",localName);
|
||||
srcData.put("localName", localName);
|
||||
srcData.put("declaration", "true");
|
||||
srcData.put("declaredType", "*");
|
||||
writer.append("var ");
|
||||
writer.append(localName);
|
||||
return writer;
|
||||
}
|
||||
|
||||
if(assignment instanceof GetSlotAVM2Item){ //for..in
|
||||
GetSlotAVM2Item sti=(GetSlotAVM2Item)assignment;
|
||||
srcData.put("localName",sti.getNameAsStr(localData));
|
||||
|
||||
if (assignment instanceof GetSlotAVM2Item) { //for..in
|
||||
GetSlotAVM2Item sti = (GetSlotAVM2Item) assignment;
|
||||
srcData.put("localName", sti.getNameAsStr(localData));
|
||||
srcData.put("declaration", "true");
|
||||
srcData.put("declaredType", "*");
|
||||
writer.append("var ");
|
||||
sti.getName(writer, localData);
|
||||
return writer;
|
||||
}
|
||||
|
||||
if (assignment instanceof SetLocalAVM2Item) {
|
||||
|
||||
if (assignment instanceof SetLocalAVM2Item) {
|
||||
SetLocalAVM2Item lti = (SetLocalAVM2Item) assignment;
|
||||
String localName = localRegName(localData.localRegNames, lti.regIndex);
|
||||
srcData.put("localName",localName);
|
||||
srcData.put("localName", localName);
|
||||
srcData.put("declaration", "true");
|
||||
|
||||
|
||||
GraphTargetItem coerType = TypeItem.UNBOUNDED;
|
||||
if (lti.value instanceof CoerceAVM2Item) {
|
||||
coerType = ((CoerceAVM2Item) lti.value).typeObj;
|
||||
@@ -88,23 +84,23 @@ public class DeclarationAVM2Item extends AVM2Item {
|
||||
if (lti.value instanceof ConvertAVM2Item) {
|
||||
coerType = ((ConvertAVM2Item) lti.value).type;
|
||||
}
|
||||
srcData.put("declaredType", (coerType instanceof TypeItem)?((TypeItem)coerType).fullTypeName:"*");
|
||||
srcData.put("declaredType", (coerType instanceof TypeItem) ? ((TypeItem) coerType).fullTypeName : "*");
|
||||
writer.append("var ");
|
||||
writer.append(localName);
|
||||
writer.append(":");
|
||||
writer.append(":");
|
||||
coerType.appendTo(writer, localData);
|
||||
writer.append(" = ");
|
||||
return lti.value.toString(writer, localData);
|
||||
}
|
||||
if (assignment instanceof SetSlotAVM2Item) {
|
||||
SetSlotAVM2Item ssti = (SetSlotAVM2Item) assignment;
|
||||
srcData.put("localName",ssti.getNameAsStr(localData));
|
||||
srcData.put("localName", ssti.getNameAsStr(localData));
|
||||
srcData.put("declaration", "true");
|
||||
srcData.put("declaredType", (type instanceof TypeItem)?((TypeItem)type).fullTypeName:"*");
|
||||
srcData.put("declaredType", (type instanceof TypeItem) ? ((TypeItem) type).fullTypeName : "*");
|
||||
writer.append("var ");
|
||||
ssti.getName(writer, localData);
|
||||
writer.append(":");
|
||||
|
||||
writer.append(":");
|
||||
|
||||
type.appendTo(writer, localData);
|
||||
writer.append(" = ");
|
||||
return ssti.value.toString(writer, localData);
|
||||
|
||||
+7
-7
@@ -79,16 +79,16 @@ public class TryAVM2Item extends AVM2Item implements Block {
|
||||
writer.newLine();
|
||||
writer.append("catch(");
|
||||
String localName = catchExceptions.get(e).getVarName(localData.constantsAvm2, localData.fullyQualifiedNames);
|
||||
Map<String,String> data=new HashMap<>();
|
||||
Map<String, String> data = new HashMap<>();
|
||||
data.put("localName", localName);
|
||||
data.put("declaration", "true");
|
||||
|
||||
int eti= catchExceptions.get(e).type_index;
|
||||
|
||||
data.put("declaredType", eti<=0?"*":localData.constantsAvm2.constant_multiname.get(eti).getNameWithNamespace(localData.constantsAvm2, true));
|
||||
writer.hilightSpecial(localName, "try.name",e,data);
|
||||
|
||||
int eti = catchExceptions.get(e).type_index;
|
||||
|
||||
data.put("declaredType", eti <= 0 ? "*" : localData.constantsAvm2.constant_multiname.get(eti).getNameWithNamespace(localData.constantsAvm2, true));
|
||||
writer.hilightSpecial(localName, "try.name", e, data);
|
||||
writer.append(":");
|
||||
writer.hilightSpecial(catchExceptions.get(e).getTypeName(localData.constantsAvm2, localData.fullyQualifiedNames),"try.type",e);
|
||||
writer.hilightSpecial(catchExceptions.get(e).getTypeName(localData.constantsAvm2, localData.fullyQualifiedNames), "try.type", e);
|
||||
writer.append(")");
|
||||
writer.startBlock();
|
||||
List<GraphTargetItem> commands = catchCommands.get(e);
|
||||
|
||||
+2166
-1958
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -350,7 +350,7 @@ public class ActionScriptParser {
|
||||
name = null;
|
||||
}
|
||||
s = lex();
|
||||
}
|
||||
}
|
||||
|
||||
GraphTargetItem ret = null;
|
||||
if (name != null) {
|
||||
|
||||
@@ -53,11 +53,11 @@ public class InstanceInfo {
|
||||
return "name_index=" + abc.constants.getMultiname(name_index).toString(abc.constants, fullyQualifiedNames) + " super_index=" + supIndexStr + " flags=" + flags + " protectedNS=" + protectedNS + " interfaces=" + Helper.intArrToString(interfaces) + " method_index=" + iinit_index + "\r\n" + instance_traits.toString(abc, fullyQualifiedNames);
|
||||
}
|
||||
|
||||
public GraphTextWriter getClassHeaderStr(GraphTextWriter writer,ABC abc, List<String> fullyQualifiedNames, boolean allowPrivate) {
|
||||
public GraphTextWriter getClassHeaderStr(GraphTextWriter writer, ABC abc, List<String> fullyQualifiedNames, boolean allowPrivate) {
|
||||
String modifiers;
|
||||
Namespace ns = abc.constants.getMultiname(name_index).getNamespace(abc.constants);
|
||||
modifiers = ns.getPrefix(abc);
|
||||
if(!allowPrivate && modifiers.equals("private")){
|
||||
if (!allowPrivate && modifiers.equals("private")) {
|
||||
modifiers = "";
|
||||
}
|
||||
if (!modifiers.isEmpty()) {
|
||||
@@ -74,16 +74,14 @@ public class InstanceInfo {
|
||||
if (isInterface()) {
|
||||
objType = "interface ";
|
||||
}
|
||||
|
||||
|
||||
writer.appendNoHilight(modifiers + objType);
|
||||
writer.hilightSpecial(abc.constants.getMultiname(name_index).getName(abc.constants, new ArrayList<String>()/* No full names here*/, false),"classname");
|
||||
|
||||
|
||||
|
||||
writer.hilightSpecial(abc.constants.getMultiname(name_index).getName(abc.constants, new ArrayList<String>()/* No full names here*/, false), "classname");
|
||||
|
||||
if (super_index > 0) {
|
||||
String typeName = abc.constants.getMultiname(super_index).getNameWithNamespace(abc.constants, true);
|
||||
writer.appendNoHilight(" extends ");
|
||||
writer.hilightSpecial(abc.constants.getMultiname(super_index).getName(abc.constants, fullyQualifiedNames, false),"typename",typeName);
|
||||
writer.hilightSpecial(abc.constants.getMultiname(super_index).getName(abc.constants, fullyQualifiedNames, false), "typename", typeName);
|
||||
}
|
||||
if (interfaces.length > 0) {
|
||||
if (isInterface()) {
|
||||
@@ -96,10 +94,10 @@ public class InstanceInfo {
|
||||
writer.append(", ");
|
||||
}
|
||||
String typeName = abc.constants.getMultiname(interfaces[i]).getNameWithNamespace(abc.constants, true);
|
||||
writer.hilightSpecial(abc.constants.getMultiname(interfaces[i]).getName(abc.constants, fullyQualifiedNames, false),"typename",typeName);
|
||||
writer.hilightSpecial(abc.constants.getMultiname(interfaces[i]).getName(abc.constants, fullyQualifiedNames, false), "typename", typeName);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return writer;
|
||||
}
|
||||
|
||||
|
||||
@@ -269,33 +269,32 @@ public class MethodInfo {
|
||||
|
||||
public GraphTextWriter getParamStr(GraphTextWriter writer, AVM2ConstantPool constants, MethodBody body, ABC abc, List<String> fullyQualifiedNames) {
|
||||
Map<Integer, String> localRegNames = new HashMap<>();
|
||||
if (body != null && Configuration.getLocalNamesFromDebugInfo.get()) {
|
||||
localRegNames = body.getCode().getLocalRegNamesFromDebug(abc);
|
||||
if (body != null && Configuration.getLocalNamesFromDebugInfo.get()) {
|
||||
localRegNames = body.getCode().getLocalRegNamesFromDebug(abc);
|
||||
}
|
||||
Map<String,String> pdata;
|
||||
|
||||
Map<String, String> pdata;
|
||||
|
||||
for (int i = 0; i < param_types.length; i++) {
|
||||
if (i > 0) {
|
||||
writer.appendNoHilight(", ");
|
||||
}
|
||||
String ptype = "*";
|
||||
if (param_types[i] > 0) {
|
||||
ptype = constants.getMultiname(param_types[i]).getNameWithNamespace(constants,false);
|
||||
ptype = constants.getMultiname(param_types[i]).getNameWithNamespace(constants, false);
|
||||
}
|
||||
|
||||
|
||||
pdata=new HashMap<>();
|
||||
pdata.put("declaration", "true");
|
||||
|
||||
pdata = new HashMap<>();
|
||||
pdata.put("declaration", "true");
|
||||
pdata.put("declaredType", ptype);
|
||||
if (!localRegNames.isEmpty()) {
|
||||
pdata.put("localName", localRegNames.get(i + 1)); //assuming it is a slot
|
||||
writer.hilightSpecial(IdentifiersDeobfuscation.printIdentifier(true,localRegNames.get(i + 1)),"paramname",i,pdata);
|
||||
writer.hilightSpecial(IdentifiersDeobfuscation.printIdentifier(true, localRegNames.get(i + 1)), "paramname", i, pdata);
|
||||
} else if ((paramNames.length > i) && (paramNames[i] != 0) && Configuration.paramNamesEnable.get()) {
|
||||
pdata.put("localName", constants.getString(paramNames[i]));
|
||||
writer.hilightSpecial(IdentifiersDeobfuscation.printIdentifier(true,constants.getString(paramNames[i])),"paramname",i,pdata);
|
||||
pdata.put("localName", constants.getString(paramNames[i]));
|
||||
writer.hilightSpecial(IdentifiersDeobfuscation.printIdentifier(true, constants.getString(paramNames[i])), "paramname", i, pdata);
|
||||
} else {
|
||||
pdata.put("localName","param"+(i+1));
|
||||
writer.hilightSpecial("param" + (i + 1),"paramname",i,pdata);
|
||||
pdata.put("localName", "param" + (i + 1));
|
||||
writer.hilightSpecial("param" + (i + 1), "paramname", i, pdata);
|
||||
}
|
||||
writer.appendNoHilight(":");
|
||||
if (param_types[i] == 0) {
|
||||
@@ -323,21 +322,21 @@ public class MethodInfo {
|
||||
} else {
|
||||
restName = "rest";
|
||||
}
|
||||
pdata=new HashMap<>();
|
||||
pdata = new HashMap<>();
|
||||
pdata.put("declaration", "true");
|
||||
pdata.put("declaredType", "*");
|
||||
pdata.put("localName",restName);
|
||||
pdata.put("localName", restName);
|
||||
writer.append(restAdd);
|
||||
writer.hilightSpecial(restName, "flag.NEED_REST",0,pdata);
|
||||
writer.hilightSpecial(restName, "flag.NEED_REST", 0, pdata);
|
||||
}
|
||||
return writer;
|
||||
}
|
||||
|
||||
public GraphTextWriter getReturnTypeStr(GraphTextWriter writer, AVM2ConstantPool constants, List<String> fullyQualifiedNames) {
|
||||
String rname = "*";
|
||||
if(ret_type>0){
|
||||
rname = IdentifiersDeobfuscation.printIdentifier(true,constants.getMultiname(ret_type).getName(constants, fullyQualifiedNames, true),"void");
|
||||
}
|
||||
if (ret_type > 0) {
|
||||
rname = IdentifiersDeobfuscation.printIdentifier(true, constants.getMultiname(ret_type).getName(constants, fullyQualifiedNames, true), "void");
|
||||
}
|
||||
return writer.hilightSpecial(rname, "returns");
|
||||
}
|
||||
|
||||
|
||||
@@ -264,7 +264,7 @@ public class Multiname {
|
||||
if ((fullyQualifiedNames != null) && fullyQualifiedNames.contains(name)) {
|
||||
return getNameWithNamespace(constants, raw);
|
||||
}
|
||||
return (isAttribute() ? "@" : "") + (raw ? name : IdentifiersDeobfuscation.printIdentifier(true,name));
|
||||
return (isAttribute() ? "@" : "") + (raw ? name : IdentifiersDeobfuscation.printIdentifier(true, name));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ public class Namespace {
|
||||
if (raw) {
|
||||
return constants.getString(name_index);
|
||||
}
|
||||
return IdentifiersDeobfuscation.printNamespace(true,constants.getString(name_index));
|
||||
return IdentifiersDeobfuscation.printNamespace(true, constants.getString(name_index));
|
||||
}
|
||||
|
||||
public boolean hasName(String name, AVM2ConstantPool constants) {
|
||||
|
||||
@@ -348,7 +348,7 @@ public class TraitClass extends Trait implements TraitWithSlot {
|
||||
|
||||
@Override
|
||||
public GraphTextWriter toStringHeader(Trait parent, String path, List<ABCContainerTag> abcTags, ABC abc, boolean isStatic, ScriptExportMode exportMode, int scriptIndex, int classIndex, GraphTextWriter writer, List<String> fullyQualifiedNames, boolean parallel) {
|
||||
abc.instance_info.get(class_info).getClassHeaderStr(writer,abc, fullyQualifiedNames,false);
|
||||
abc.instance_info.get(class_info).getClassHeaderStr(writer, abc, fullyQualifiedNames, false);
|
||||
return writer;
|
||||
}
|
||||
|
||||
@@ -447,7 +447,7 @@ public class TraitClass extends Trait implements TraitWithSlot {
|
||||
}
|
||||
|
||||
//class header
|
||||
abc.instance_info.get(class_info).getClassHeaderStr(writer,abc, fullyQualifiedNames,false);
|
||||
abc.instance_info.get(class_info).getClassHeaderStr(writer, abc, fullyQualifiedNames, false);
|
||||
writer.startBlock();
|
||||
|
||||
int bodyIndex = abc.findBodyIndex(abc.class_info.get(class_info).cinit_index);
|
||||
|
||||
Reference in New Issue
Block a user