Răsfoiți Sursa

+ support for detecting varargs functions -> mark their open array
parameters as const, since the callee cannot modify the array
itself in that case

git-svn-id: branches/jvmbackend@18678 -

Jonas Maebe 14 ani în urmă
părinte
comite
35cb8516ff

+ 2 - 1
utils/javapp/src/fpc/tools/javapp/JavapPrinter.java

@@ -295,6 +295,7 @@ public class JavapPrinter {
     	StringBuilder sigEnd;
     	sigStart.append(prefix);
     	String pascalName = method.getName();
+    	boolean varargs = (method.access & ACC_VARARGS) != 0;
         if(pascalName.equals("<init>")){
         	sigStart.append("constructor create");
         	sigEnd = new StringBuilder();
@@ -335,7 +336,7 @@ public class JavapPrinter {
             if (!cls.isInterface())
             	sigEnd.append(method.getModifiers());
         	String dynArrParas = method.getParameters(false,false);
-        	String openArrParas = method.getParameters(true,false);
+        	String openArrParas = method.getParameters(true,varargs);
         	out.print(sigStart+dynArrParas+sigEnd);
             printExceptions(method);
             out.println();

+ 2 - 0
utils/javapp/src/fpc/tools/javapp/RuntimeConstants.java

@@ -89,6 +89,8 @@ public interface RuntimeConstants {
     public static final int ACC_STATIC                   = 0x00000008;
     public static final int ACC_FINAL                    = 0x00000010;
     public static final int ACC_SYNCHRONIZED             = 0x00000020;
+    public static final int ACC_BRIDGE                   = 0x00000040;
+    public static final int ACC_VARARGS                  = 0x00000080;
     public static final int ACC_SUPER                        = 0x00000020;
     public static final int ACC_VOLATILE                 = 0x00000040;
     public static final int ACC_TRANSIENT                = 0x00000080;