svn commit: r153687 - jakarta/bcel/trunk/src/java/org/apache/bcel/util/BCELifier.java
[email protected] Mon, 14 Feb 2005 00:55:58 -0000
Newsgroups
gmane.comp.jakarta.bcel.devel
Message-ID
<[email protected] >
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;