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