Author: dbrosius
Date: Sun Feb 13 16:55:57 2005
New Revision: 153687

URL: http://svn.apache.org/viewcvs?view=rev&rev=153687
Log:
Update BCELifier to handle the new method access flags (ACC_BRIDGE, ACC_VARARGS)

Modified:
    jakarta/bcel/trunk/src/java/org/apache/bcel/util/BCELifier.java

Modified: jakarta/bcel/trunk/src/java/org/apache/bcel/util/BCELifier.java
URL: 
http://svn.apache.org/viewcvs/jakarta/bcel/trunk/src/java/org/apache/bcel/util/BCELifier.java?view=diff&r1=153686&r2=153687
==============================================================================
--- jakarta/bcel/trunk/src/java/org/apache/bcel/util/BCELifier.java (original)
+++ jakarta/bcel/trunk/src/java/org/apache/bcel/util/BCELifier.java Sun Feb 13 
16:55:57 2005
@@ -33,6 +33,10 @@
  * @author <A HREF="mailto:[EMAIL PROTECTED]">M. Dahm</A> 
  */
 public class BCELifier extends org.apache.bcel.classfile.EmptyVisitor {
+  private static final int FLAG_FOR_UNKNOWN = -1;
+  private static final int FLAG_FOR_CLASS = 0;
+  private static final int FLAG_FOR_METHOD = 1;
+  
   private JavaClass         _clazz;
   private PrintWriter       _out;
   private ConstantPoolGen   _cp;
@@ -83,7 +87,7 @@
                  package_name + "." + class_name) +
                 "\", \"" + super_name + "\", " +
                 "\"" + clazz.getSourceFileName() + "\", " +
-                printFlags(clazz.getAccessFlags(), true) + ", " +
+                printFlags(clazz.getAccessFlags(), FLAG_FOR_CLASS) + ", " +
                 "new String[] { " + inter + " });");
     _out.println();
     
@@ -177,7 +181,7 @@
 
     _out.println("    InstructionList il = new InstructionList();");
     _out.println("    MethodGen method = new MethodGen(" +
-                printFlags(method.getAccessFlags()) +
+                printFlags(method.getAccessFlags(), FLAG_FOR_METHOD) +
                 ", " + printType(result_type) +
                 ", " + printArgumentTypes(arg_types) + ", " +
                 "new String[] { " +
@@ -196,20 +200,24 @@
   }
 
   static String printFlags(int flags) {
-    return printFlags(flags, false);
+    return printFlags(flags, FLAG_FOR_UNKNOWN);
   }
 
-  static String printFlags(int flags, boolean for_class) {
+  static String printFlags(int flags, int reason) {
     if(flags == 0)
       return "0";
 
     StringBuffer buf = new StringBuffer();
     for(int i=0, pow=1; i <= Constants.MAX_ACC_FLAG; i++) {
       if((flags & pow) != 0) {
-       if((pow == Constants.ACC_SYNCHRONIZED) && for_class)
-         buf.append("ACC_SUPER | ");
-       else
-         buf.append("ACC_" + Constants.ACCESS_NAMES[i].toUpperCase() + " | ");
+           if((pow == Constants.ACC_SYNCHRONIZED) && (reason == 
FLAG_FOR_CLASS))
+             buf.append("ACC_SUPER | ");
+           else if ((pow == Constants.ACC_VOLATILE) && (reason == 
FLAG_FOR_METHOD))
+                 buf.append("ACC_BRIDGE | ");
+           else if ((pow == Constants.ACC_TRANSIENT) && (reason == 
FLAG_FOR_METHOD))
+             buf.append("ACC_VARARGS | ");
+           else
+             buf.append("ACC_" + Constants.ACCESS_NAMES[i].toUpperCase() + " | 
");
       }
 
       pow <<= 1;



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to