You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2015/08/13 23:43:49 UTC

svn commit: r1695784 - in /commons/proper/bcel/trunk/src: changes/ main/java/org/apache/commons/bcel6/classfile/ main/java/org/apache/commons/bcel6/generic/ main/java/org/apache/commons/bcel6/util/

Author: sebb
Date: Thu Aug 13 21:43:49 2015
New Revision: 1695784

URL: http://svn.apache.org/r1695784
Log:
BCEL-201 modify several toString methods to make output similar to "javap"

Modified:
    commons/proper/bcel/trunk/src/changes/changes.xml
    commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/InnerClass.java
    commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/InnerClasses.java
    commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/LocalVariable.java
    commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/LocalVariableTypeTable.java
    commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/generic/BranchInstruction.java
    commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/util/BCELifier.java

Modified: commons/proper/bcel/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/changes/changes.xml?rev=1695784&r1=1695783&r2=1695784&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/changes/changes.xml (original)
+++ commons/proper/bcel/trunk/src/changes/changes.xml Thu Aug 13 21:43:49 2015
@@ -63,6 +63,7 @@ The <action> type attribute can be add,u
 
   <body>
     <release version="6.0" date="TBA" description="Major release with Java 7 and 8 support">
+      <action issue="BCEL-201" type="update">modify several toString methods to make output similar to "javap"</action>
       <action issue="BCEL-205" type="update">add javadoc comments to LineNumber.java and LineNumberTable.java</action>
       <action issue="BCEL-208" type="fix">Need to check for an empty InstructionList</action>
       <action issue="BCEL-212" type="update">Inconsistent toString() results</action>

Modified: commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/InnerClass.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/InnerClass.java?rev=1695784&r1=1695783&r2=1695784&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/InnerClass.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/InnerClass.java Thu Aug 13 21:43:49 2015
@@ -155,20 +155,19 @@ public final class InnerClass implements
         if (outer_class_index != 0) {
             outer_class_name = constant_pool.getConstantString(outer_class_index,
                     Constants.CONSTANT_Class);
-            outer_class_name = Utility.compactClassName(outer_class_name);
+            outer_class_name = " of class " + Utility.compactClassName(outer_class_name);
         } else {
-            outer_class_name = "<not a member>";
+            outer_class_name = "";
         }
         if (inner_name_index != 0) {
             inner_name = ((ConstantUtf8) constant_pool.getConstant(inner_name_index,
                     Constants.CONSTANT_Utf8)).getBytes();
         } else {
-            inner_name = "<anonymous>";
+            inner_name = "(anonymous)";
         }
         access = Utility.accessToString(inner_access_flags, true);
         access = access.equals("") ? "" : (access + " ");
-        return "InnerClass:" + access + inner_class_name + "(\"" + outer_class_name + "\", \""
-                + inner_name + "\")";
+        return "  " + access + inner_name + "=class " + inner_class_name + outer_class_name;
     }
 
 

Modified: commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/InnerClasses.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/InnerClasses.java?rev=1695784&r1=1695783&r2=1695784&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/InnerClasses.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/InnerClasses.java Thu Aug 13 21:43:49 2015
@@ -123,6 +123,9 @@ public final class InnerClasses extends
     @Override
     public final String toString() {
         StringBuilder buf = new StringBuilder();
+        buf.append("InnerClasses(");
+        buf.append(inner_classes.length);
+        buf.append("):\n");
         for (InnerClass inner_class : inner_classes) {
             buf.append(inner_class.toString(super.getConstantPool())).append("\n");
         }

Modified: commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/LocalVariable.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/LocalVariable.java?rev=1695784&r1=1695783&r2=1695784&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/LocalVariable.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/LocalVariable.java Thu Aug 13 21:43:49 2015
@@ -179,14 +179,23 @@ public final class LocalVariable impleme
     }
 
 
+    /*
+     * Helper method shared with LocalVariableTypeTable
+     */
+    final String toStringShared( boolean typeTable ) {
+        String name = getName(), signature = Utility.signatureToString(getSignature(), false);
+        String label = "LocalVariable" + (typeTable ? "Types" : "" );
+        return label + "(start_pc = " + start_pc + ", length = " + length + ", index = "
+                + index + ":" + signature + " " + name + ")";
+    }
+
+
     /**
      * @return string representation.
      */
     @Override
     public final String toString() {
-        String name = getName(), signature = Utility.signatureToString(getSignature());
-        return "LocalVariable(start_pc = " + start_pc + ", length = " + length + ", index = "
-                + index + ":" + signature + " " + name + ")";
+        return toStringShared(false);
     }
 
 

Modified: commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/LocalVariableTypeTable.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/LocalVariableTypeTable.java?rev=1695784&r1=1695783&r2=1695784&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/LocalVariableTypeTable.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/LocalVariableTypeTable.java Thu Aug 13 21:43:49 2015
@@ -116,7 +116,7 @@ public class LocalVariableTypeTable exte
         StringBuilder buf = new StringBuilder();
 
         for (int i = 0; i < local_variable_type_table.length; i++) {
-            buf.append(local_variable_type_table[i].toString());
+            buf.append(local_variable_type_table[i].toStringShared(true));
 
             if (i < local_variable_type_table.length - 1) {
                 buf.append('\n');

Modified: commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/generic/BranchInstruction.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/generic/BranchInstruction.java?rev=1695784&r1=1695783&r2=1695784&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/generic/BranchInstruction.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/generic/BranchInstruction.java Thu Aug 13 21:43:49 2015
@@ -135,13 +135,18 @@ public abstract class BranchInstruction
                 } else if (target.getInstruction() == null) {
                     t = "<null instruction!!!?>";
                 } else {
-                    t = target.getInstruction().toString(false); // Avoid circles
+                    // I'm more interested in the address of the target then
+                    // the instruction located there.
+                    //t = target.getInstruction().toString(false); // Avoid circles
+                    t = "" + target.getPosition();
                 }
             }
         } else {
             if (target != null) {
-                index = getTargetOffset();
-                t = "" + (index + position);
+                index = target.getPosition();
+                // index = getTargetOffset();  crashes if positions haven't been set
+                // t = "" + (index + position);
+                t = "" + index;
             }
         }
         return s + " -> " + t;

Modified: commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/util/BCELifier.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/util/BCELifier.java?rev=1695784&r1=1695783&r2=1695784&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/util/BCELifier.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/util/BCELifier.java Thu Aug 13 21:43:49 2015
@@ -191,7 +191,7 @@ public class BCELifier extends org.apach
     }
 
 
-    static String printFlags( int flags, int reason ) {
+    public static String printFlags( int flags, int reason ) {
         if (flags == 0) {
             return "0";
         }
@@ -205,9 +205,10 @@ public class BCELifier extends org.apach
                 } else if ((pow == Constants.ACC_TRANSIENT) && (reason == FLAG_FOR_METHOD)) {
                     buf.append("ACC_VARARGS | ");
                 } else {
-                    buf.append("ACC_")
-                            .append(Constants.ACCESS_NAMES[i].toUpperCase(Locale.ENGLISH)).append(
-                                    " | ");
+                    if (i < Constants.ACCESS_NAMES.length)
+                        buf.append("ACC_").append(Constants.ACCESS_NAMES[i].toUpperCase(Locale.ENGLISH)).append( " | ");
+                    else
+                        buf.append(String.format ("ACC_BIT %x | ", pow));
                 }
             }
             pow <<= 1;