jdk/src/share/classes/sun/reflect/ConstantPool.java
author martin
Mon, 10 Mar 2008 15:07:09 -0700
changeset 51 6fe31bc95bbc
parent 2 90ce3da70b43
child 5506 202f599c92aa
permissions -rw-r--r--
6600143: Remove another 450 unnecessary casts Reviewed-by: alanb, iris, lmalvent, bristor, peterjones, darcy, wetmore
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     1
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
     2
 * Copyright 2003-2004 Sun Microsystems, Inc.  All Rights Reserved.
90ce3da70b43 Initial load
duke
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
90ce3da70b43 Initial load
duke
parents:
diff changeset
     4
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
90ce3da70b43 Initial load
duke
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
90ce3da70b43 Initial load
duke
parents:
diff changeset
     7
 * published by the Free Software Foundation.  Sun designates this
90ce3da70b43 Initial load
duke
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
90ce3da70b43 Initial load
duke
parents:
diff changeset
     9
 * by Sun in the LICENSE file that accompanied this code.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    10
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
90ce3da70b43 Initial load
duke
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
90ce3da70b43 Initial load
duke
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
90ce3da70b43 Initial load
duke
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
90ce3da70b43 Initial load
duke
parents:
diff changeset
    15
 * accompanied this code).
90ce3da70b43 Initial load
duke
parents:
diff changeset
    16
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
90ce3da70b43 Initial load
duke
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    20
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    21
 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    22
 * CA 95054 USA or visit www.sun.com if you need additional information or
90ce3da70b43 Initial load
duke
parents:
diff changeset
    23
 * have any questions.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    24
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    25
90ce3da70b43 Initial load
duke
parents:
diff changeset
    26
package sun.reflect;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    27
90ce3da70b43 Initial load
duke
parents:
diff changeset
    28
import java.lang.reflect.*;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    29
90ce3da70b43 Initial load
duke
parents:
diff changeset
    30
/** Provides reflective access to the constant pools of classes.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    31
    Currently this is needed to provide reflective access to annotations
90ce3da70b43 Initial load
duke
parents:
diff changeset
    32
    but may be used by other internal subsystems in the future. */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    33
90ce3da70b43 Initial load
duke
parents:
diff changeset
    34
public class ConstantPool {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    35
  // Number of entries in this constant pool (= maximum valid constant pool index)
90ce3da70b43 Initial load
duke
parents:
diff changeset
    36
  public int      getSize()                      { return getSize0            (constantPoolOop);        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    37
  public Class    getClassAt         (int index) { return getClassAt0         (constantPoolOop, index); }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    38
  public Class    getClassAtIfLoaded (int index) { return getClassAtIfLoaded0 (constantPoolOop, index); }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    39
  // Returns either a Method or Constructor.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    40
  // Static initializers are returned as Method objects.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    41
  public Member   getMethodAt        (int index) { return getMethodAt0        (constantPoolOop, index); }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    42
  public Member   getMethodAtIfLoaded(int index) { return getMethodAtIfLoaded0(constantPoolOop, index); }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    43
  public Field    getFieldAt         (int index) { return getFieldAt0         (constantPoolOop, index); }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    44
  public Field    getFieldAtIfLoaded (int index) { return getFieldAtIfLoaded0 (constantPoolOop, index); }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    45
  // Fetches the class name, member (field, method or interface
90ce3da70b43 Initial load
duke
parents:
diff changeset
    46
  // method) name, and type descriptor as an array of three Strings
90ce3da70b43 Initial load
duke
parents:
diff changeset
    47
  public String[] getMemberRefInfoAt (int index) { return getMemberRefInfoAt0 (constantPoolOop, index); }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    48
  public int      getIntAt           (int index) { return getIntAt0           (constantPoolOop, index); }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    49
  public long     getLongAt          (int index) { return getLongAt0          (constantPoolOop, index); }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    50
  public float    getFloatAt         (int index) { return getFloatAt0         (constantPoolOop, index); }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    51
  public double   getDoubleAt        (int index) { return getDoubleAt0        (constantPoolOop, index); }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    52
  public String   getStringAt        (int index) { return getStringAt0        (constantPoolOop, index); }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    53
  public String   getUTF8At          (int index) { return getUTF8At0          (constantPoolOop, index); }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    54
90ce3da70b43 Initial load
duke
parents:
diff changeset
    55
  //---------------------------------------------------------------------------
90ce3da70b43 Initial load
duke
parents:
diff changeset
    56
  // Internals only below this point
90ce3da70b43 Initial load
duke
parents:
diff changeset
    57
  //
90ce3da70b43 Initial load
duke
parents:
diff changeset
    58
90ce3da70b43 Initial load
duke
parents:
diff changeset
    59
  static {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
      Reflection.registerFieldsToFilter(ConstantPool.class, new String[] { "constantPoolOop" });
90ce3da70b43 Initial load
duke
parents:
diff changeset
    61
  }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    62
90ce3da70b43 Initial load
duke
parents:
diff changeset
    63
  // HotSpot-internal constant pool object (set by the VM, name known to the VM)
90ce3da70b43 Initial load
duke
parents:
diff changeset
    64
  private Object constantPoolOop;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    65
90ce3da70b43 Initial load
duke
parents:
diff changeset
    66
  private native int      getSize0            (Object constantPoolOop);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    67
  private native Class    getClassAt0         (Object constantPoolOop, int index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    68
  private native Class    getClassAtIfLoaded0 (Object constantPoolOop, int index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    69
  private native Member   getMethodAt0        (Object constantPoolOop, int index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    70
  private native Member   getMethodAtIfLoaded0(Object constantPoolOop, int index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    71
  private native Field    getFieldAt0         (Object constantPoolOop, int index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    72
  private native Field    getFieldAtIfLoaded0 (Object constantPoolOop, int index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    73
  private native String[] getMemberRefInfoAt0 (Object constantPoolOop, int index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    74
  private native int      getIntAt0           (Object constantPoolOop, int index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    75
  private native long     getLongAt0          (Object constantPoolOop, int index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    76
  private native float    getFloatAt0         (Object constantPoolOop, int index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    77
  private native double   getDoubleAt0        (Object constantPoolOop, int index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    78
  private native String   getStringAt0        (Object constantPoolOop, int index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    79
  private native String   getUTF8At0          (Object constantPoolOop, int index);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    80
}