diff --git a/trunk/src/com/jpexs/asdec/Main.java b/trunk/src/com/jpexs/asdec/Main.java index 44674c46e..1c33d3ba2 100644 --- a/trunk/src/com/jpexs/asdec/Main.java +++ b/trunk/src/com/jpexs/asdec/Main.java @@ -70,6 +70,9 @@ public class Main { /** Turn off decompiling if needed */ public static final boolean DO_DECOMPILE=true; + //using parameter names in decompiling may cause problems because oficial programs like Flash CS 5.5 inserts wrong parameter names indices + public static final boolean PARAM_NAMES_ENABLE=false; + public static String getFileTitle() { if (maskURL != null) return maskURL; return file; diff --git a/trunk/src/com/jpexs/asdec/abc/gui/MethodInfoPanel.java b/trunk/src/com/jpexs/asdec/abc/gui/MethodInfoPanel.java index c8e539152..779f2411e 100644 --- a/trunk/src/com/jpexs/asdec/abc/gui/MethodInfoPanel.java +++ b/trunk/src/com/jpexs/asdec/abc/gui/MethodInfoPanel.java @@ -18,6 +18,7 @@ package com.jpexs.asdec.abc.gui; +import com.jpexs.asdec.Main; import com.jpexs.asdec.abc.ABC; import com.jpexs.asdec.abc.methodinfo_parser.MethodInfoParser; import com.jpexs.asdec.abc.methodinfo_parser.ParseException; @@ -66,7 +67,7 @@ public class MethodInfoPanel extends JPanel { if(p>0){ ret+=",\n"; } - if(methodInfo.flagHas_paramnames()) + if(methodInfo.flagHas_paramnames()&&Main.PARAM_NAMES_ENABLE) { ret=ret+abc.constants.constant_string[methodInfo.paramNames[p]]; }else{ diff --git a/trunk/src/com/jpexs/asdec/abc/methodinfo_parser/MethodInfoParser.java b/trunk/src/com/jpexs/asdec/abc/methodinfo_parser/MethodInfoParser.java index 83b6af2c3..5d5532970 100644 --- a/trunk/src/com/jpexs/asdec/abc/methodinfo_parser/MethodInfoParser.java +++ b/trunk/src/com/jpexs/asdec/abc/methodinfo_parser/MethodInfoParser.java @@ -17,6 +17,7 @@ */ package com.jpexs.asdec.abc.methodinfo_parser; +import com.jpexs.asdec.Main; import com.jpexs.asdec.abc.ABC; import com.jpexs.asdec.abc.types.MethodInfo; import com.jpexs.asdec.abc.types.ValueKind; @@ -202,6 +203,9 @@ public class MethodInfoParser { useParamNames=true; } } + if(!Main.PARAM_NAMES_ENABLE){ + useParamNames=false; + } if(useParamNames){ update.setFlagHas_paramnames(); update.paramNames=new int[paramNames.size()]; diff --git a/trunk/src/com/jpexs/asdec/abc/types/MethodBody.java b/trunk/src/com/jpexs/asdec/abc/types/MethodBody.java index 73ced1fd6..1256e270c 100644 --- a/trunk/src/com/jpexs/asdec/abc/types/MethodBody.java +++ b/trunk/src/com/jpexs/asdec/abc/types/MethodBody.java @@ -18,6 +18,7 @@ package com.jpexs.asdec.abc.types; +import com.jpexs.asdec.Main; import com.jpexs.asdec.abc.ABC; import com.jpexs.asdec.abc.avm2.AVM2Code; import com.jpexs.asdec.abc.avm2.ConstantPool; @@ -48,11 +49,15 @@ public class MethodBody implements Cloneable { private String replaceParams(String code, ABC abc) { for (int i = 1; i <= abc.method_info[this.method_info].param_types.length; i++) { String paramName="param"+i; - if(abc.method_info[this.method_info].flagHas_paramnames()){ + if(abc.method_info[this.method_info].flagHas_paramnames()&&Main.PARAM_NAMES_ENABLE){ paramName=abc.constants.constant_string[abc.method_info[this.method_info].paramNames[i-1]]; } code = code.replace(InstructionDefinition.localRegName(i), paramName); } + if(abc.method_info[this.method_info].flagNeed_rest()) + { + code = code.replace(InstructionDefinition.localRegName(abc.method_info[this.method_info].param_types.length+1), "rest"); + } return code; } diff --git a/trunk/src/com/jpexs/asdec/abc/types/MethodInfo.java b/trunk/src/com/jpexs/asdec/abc/types/MethodInfo.java index 8dfd05050..1c6b48202 100644 --- a/trunk/src/com/jpexs/asdec/abc/types/MethodInfo.java +++ b/trunk/src/com/jpexs/asdec/abc/types/MethodInfo.java @@ -18,6 +18,7 @@ package com.jpexs.asdec.abc.types; +import com.jpexs.asdec.Main; import com.jpexs.asdec.abc.avm2.ConstantPool; import com.jpexs.asdec.helpers.Helper; @@ -178,7 +179,7 @@ public class MethodInfo { if (i > 0) { paramStr += ", "; } - if ((paramNames.length > i) && (paramNames[i] != 0)) { + if ((paramNames.length > i) && (paramNames[i] != 0) && Main.PARAM_NAMES_ENABLE) { paramStr += constants.constant_string[paramNames[i]]; } else { paramStr += "param" + (i + 1); @@ -191,12 +192,13 @@ public class MethodInfo { } if (optional != null) { if (i >= param_types.length - optional.length) { - //System.out.println("param_types.length:"+param_types.length); - //System.out.println("optional.lengt:"+optional.length); paramStr += "=" + optional[i - (param_types.length - optional.length)].toString(constants); } } } + if(flagNeed_rest()){ + paramStr+=", ... rest"; + } return paramStr; }