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/25 19:58:57 UTC

svn commit: r1697749 - in /commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6: Constants.java classfile/ConstantPool.java classfile/Utility.java util/CodeHTML.java

Author: sebb
Date: Tue Aug 25 17:58:57 2015
New Revision: 1697749

URL: http://svn.apache.org/r1697749
Log:
Prepare for eventual privatisation of other array constants

Modified:
    commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/Constants.java
    commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/ConstantPool.java
    commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/Utility.java
    commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/util/CodeHTML.java

Modified: commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/Constants.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/Constants.java?rev=1697749&r1=1697748&r2=1697749&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/Constants.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/Constants.java Tue Aug 25 17:58:57 2015
@@ -1528,7 +1528,10 @@ public final class Constants {
    * How the byte code operands are to be interpreted for each opcode.
    * Indexed by opcode.  TYPE_OF_OPERANDS[ILOAD] = an array of shorts
    * describing the data types for the instruction.
+   * @deprecated Do not use; will be made private.
+   * Use getOperandType(int, int) instead
    */
+  @Deprecated
   public static final short[][] TYPE_OF_OPERANDS = {
     {}/*nop*/, {}/*aconst_null*/, {}/*iconst_m1*/, {}/*iconst_0*/,
     {}/*iconst_1*/, {}/*iconst_2*/, {}/*iconst_3*/, {}/*iconst_4*/,
@@ -1594,6 +1597,20 @@ public final class Constants {
   };
 
   /**
+   * @since 6.0
+   */
+  public static short getOperandType(int opcode, int index) {
+      return TYPE_OF_OPERANDS[opcode][index];
+  }
+
+  /**
+   * @since 6.0
+   */
+  public static long getOperandTypeCount(int opcode) {
+      return TYPE_OF_OPERANDS[opcode].length;
+  }
+
+  /**
    * Names of opcodes.  Indexed by opcode.  OPCODE_NAMES[ALOAD] = "aload".
    * @deprecated Do not use; will be made private . Use getOpcodeName(int) instead
    */
@@ -1863,11 +1880,25 @@ public final class Constants {
   public static final byte REF_newInvokeSpecial = 8;
   public static final byte REF_invokeInterface  = 9;
   
-  /** The names of the referencd_kinds of a CONSTANT_MethodHandle_info. */
+  /**
+   * The names of the reference_kinds of a CONSTANT_MethodHandle_info.
+   * @deprecated Do not use; will be made private . Use getMethodHandleName(int) instead
+   */
+  @Deprecated
   public static final String[] METHODHANDLE_NAMES = {
       "", "getField", "getStatic", "putField", "putStatic", "invokeVirtual",
       "invokeStatic", "invokeSpecial", "newInvokeSpecial", "invokeInterface" };
 
+  /**
+   * 
+   * @param index
+   * @return
+   * @since 6.0
+   */
+  public static String getMethodHandleName(int index) {
+      return METHODHANDLE_NAMES[index];
+  }
+
   private Constants() { } // not instantiable
 
 }

Modified: commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/ConstantPool.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/ConstantPool.java?rev=1697749&r1=1697748&r2=1697749&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/ConstantPool.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/ConstantPool.java Tue Aug 25 17:58:57 2015
@@ -145,7 +145,7 @@ public class ConstantPool implements Clo
                 // Note that the ReferenceIndex may point to a Fieldref, Methodref or
                 // InterfaceMethodref - so we need to peek ahead to get the actual type.
                 ConstantMethodHandle cmh = (ConstantMethodHandle) c;
-                str = Constants.METHODHANDLE_NAMES[cmh.getReferenceKind()]
+                str = Constants.getMethodHandleName(cmh.getReferenceKind())
                         + " " + constantToString(cmh.getReferenceIndex(),
                         getConstant(cmh.getReferenceIndex()).getTag());
                 break;            

Modified: commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/Utility.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/Utility.java?rev=1697749&r1=1697748&r2=1697749&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/Utility.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/classfile/Utility.java Tue Aug 25 17:58:57 2015
@@ -429,9 +429,9 @@ public abstract class Utility {
                 break;
             default:
                 if (Constants.NO_OF_OPERANDS[opcode] > 0) {
-                    for (int i = 0; i < Constants.TYPE_OF_OPERANDS[opcode].length; i++) {
+                    for (int i = 0; i < Constants.getOperandTypeCount(opcode); i++) {
                         buf.append("\t\t");
-                        switch (Constants.TYPE_OF_OPERANDS[opcode][i]) {
+                        switch (Constants.getOperandType(opcode, i)) {
                             case Constants.T_BYTE:
                                 buf.append(bytes.readByte());
                                 break;

Modified: commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/util/CodeHTML.java
URL: http://svn.apache.org/viewvc/commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/util/CodeHTML.java?rev=1697749&r1=1697748&r2=1697749&view=diff
==============================================================================
--- commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/util/CodeHTML.java (original)
+++ commons/proper/bcel/trunk/src/main/java/org/apache/commons/bcel6/util/CodeHTML.java Tue Aug 25 17:58:57 2015
@@ -355,8 +355,8 @@ final class CodeHTML {
                 break;
             default:
                 if (Constants.NO_OF_OPERANDS[opcode] > 0) {
-                    for (int i = 0; i < Constants.TYPE_OF_OPERANDS[opcode].length; i++) {
-                        switch (Constants.TYPE_OF_OPERANDS[opcode][i]) {
+                    for (int i = 0; i < Constants.getOperandTypeCount(opcode); i++) {
+                        switch (Constants.getOperandType(opcode, i)) {
                             case Constants.T_BYTE:
                                 buf.append(bytes.readUnsignedByte());
                                 break;
@@ -368,7 +368,7 @@ final class CodeHTML {
                                 break;
                             default: // Never reached
                                 throw new IllegalStateException(
-                                    "Unreachable default case reached! "+Constants.TYPE_OF_OPERANDS[opcode][i]);
+                                    "Unreachable default case reached! "+Constants.getOperandType(opcode, i));
                         }
                         buf.append("&nbsp;");
                     }