1048 return obj != NULL && is_subclass(obj->klass()); |
1048 return obj != NULL && is_subclass(obj->klass()); |
1049 } |
1049 } |
1050 |
1050 |
1051 // Relevant integer codes (keep these in synch. with MethodHandleNatives.Constants): |
1051 // Relevant integer codes (keep these in synch. with MethodHandleNatives.Constants): |
1052 enum { |
1052 enum { |
1053 MN_IS_METHOD = 0x00010000, // method (not constructor) |
1053 MN_IS_METHOD = 0x00010000, // method (not constructor) |
1054 MN_IS_CONSTRUCTOR = 0x00020000, // constructor |
1054 MN_IS_CONSTRUCTOR = 0x00020000, // constructor |
1055 MN_IS_FIELD = 0x00040000, // field |
1055 MN_IS_FIELD = 0x00040000, // field |
1056 MN_IS_TYPE = 0x00080000, // nested type |
1056 MN_IS_TYPE = 0x00080000, // nested type |
|
1057 MN_CALLER_SENSITIVE = 0x00100000, // @CallerSensitive annotation detected |
1057 MN_REFERENCE_KIND_SHIFT = 24, // refKind |
1058 MN_REFERENCE_KIND_SHIFT = 24, // refKind |
1058 MN_REFERENCE_KIND_MASK = 0x0F000000 >> MN_REFERENCE_KIND_SHIFT, |
1059 MN_REFERENCE_KIND_MASK = 0x0F000000 >> MN_REFERENCE_KIND_SHIFT, |
1059 // The SEARCH_* bits are not for MN.flags but for the matchFlags argument of MHN.getMembers: |
1060 // The SEARCH_* bits are not for MN.flags but for the matchFlags argument of MHN.getMembers: |
1060 MN_SEARCH_SUPERCLASSES = 0x00100000, // walk super classes |
1061 MN_SEARCH_SUPERCLASSES = 0x00100000, // walk super classes |
1061 MN_SEARCH_INTERFACES = 0x00200000 // walk implemented interfaces |
1062 MN_SEARCH_INTERFACES = 0x00200000 // walk implemented interfaces |
1062 }; |
1063 }; |
1063 |
1064 |
1064 // Accessors for code generation: |
1065 // Accessors for code generation: |
1065 static int clazz_offset_in_bytes() { return _clazz_offset; } |
1066 static int clazz_offset_in_bytes() { return _clazz_offset; } |
1066 static int type_offset_in_bytes() { return _type_offset; } |
1067 static int type_offset_in_bytes() { return _type_offset; } |