You are viewing a plain text version of this content. The canonical link for it is here.
Posted to bcel-dev@jakarta.apache.org by db...@apache.org on 2005/02/14 01:55:58 UTC

svn commit: r153687 - jakarta/bcel/trunk/src/java/org/apache/bcel/util/BCELifier.java

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:m.dahm@gmx.de">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: bcel-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: bcel-dev-help@jakarta.apache.org