--- old/jdk/src/java.base/share/classes/java/lang/invoke/MemberName.java 2015-04-07 22:01:58.000000000 +0200 +++ new/jdk/src/java.base/share/classes/java/lang/invoke/MemberName.java 2015-04-07 22:01:58.000000000 +0200 @@ -78,6 +78,24 @@ //@Injected int vmindex; private Object resolution; // if null, this guy is resolved + + // The JVM uses values of -2 and above for vtable indexes. + // Field values are simple positive offsets. + // Ref: src/share/vm/oops/methodOop.hpp + // This value is negative enough to avoid such numbers, + // but not too negative. + static final int + MN_IS_METHOD = 0x00010000, // method (not constructor) + MN_IS_CONSTRUCTOR = 0x00020000, // constructor + MN_IS_FIELD = 0x00040000, // field + MN_IS_TYPE = 0x00080000, // nested type + MN_CALLER_SENSITIVE = 0x00100000, // @CallerSensitive annotation detected + MN_REFERENCE_KIND_SHIFT = 24, // refKind + MN_REFERENCE_KIND_MASK = 0x0F000000 >> MN_REFERENCE_KIND_SHIFT, + // The SEARCH_* bits are not for MN.flags but for the matchFlags argument of MHN.getMembers: + MN_SEARCH_SUPERCLASSES = 0x00100000, + MN_SEARCH_INTERFACES = 0x00200000; + /** Return the declaring class of this member. * In the case of a bare name and type, the declaring class will be null. */