50 * a non-NULL ClassFileStream* // the classfile bytestream
51 * a non-NULL Symbol* // the name of the class
52 * a non-NULL ClassLoaderData* // the metaspace allocator
53 * (no pending exceptions)
54 *
55 * Returns:
56 * if the returned value is non-NULL, that value is an indirection (pointer/handle)
57 * to a Klass. The caller will not have a pending exception.
58 *
59 * On broken invariants and/or runtime errors the returned value will be
60 * NULL (or a NULL handle) and the caller *might* now have a pending exception.
61 *
62 */
63
64 class KlassFactory : AllStatic {
65
66 // approved clients
67 friend class ClassLoader;
68 friend class ClassLoaderExt;
69 friend class SystemDictionary;
70
71 private:
72 static InstanceKlass* create_from_stream(ClassFileStream* stream,
73 Symbol* name,
74 ClassLoaderData* loader_data,
75 const ClassLoadInfo& cl_info,
76 TRAPS);
77 public:
78 static InstanceKlass* check_shared_class_file_load_hook(
79 InstanceKlass* ik,
80 Symbol* class_name,
81 Handle class_loader,
82 Handle protection_domain,
83 const ClassFileStream *cfs,
84 TRAPS);
85 };
86
87 #endif // SHARE_CLASSFILE_KLASSFACTORY_HPP
|
50 * a non-NULL ClassFileStream* // the classfile bytestream
51 * a non-NULL Symbol* // the name of the class
52 * a non-NULL ClassLoaderData* // the metaspace allocator
53 * (no pending exceptions)
54 *
55 * Returns:
56 * if the returned value is non-NULL, that value is an indirection (pointer/handle)
57 * to a Klass. The caller will not have a pending exception.
58 *
59 * On broken invariants and/or runtime errors the returned value will be
60 * NULL (or a NULL handle) and the caller *might* now have a pending exception.
61 *
62 */
63
64 class KlassFactory : AllStatic {
65
66 // approved clients
67 friend class ClassLoader;
68 friend class ClassLoaderExt;
69 friend class SystemDictionary;
70 friend class MetaspaceShared;
71
72 private:
73 static InstanceKlass* create_from_stream(ClassFileStream* stream,
74 Symbol* name,
75 ClassLoaderData* loader_data,
76 const ClassLoadInfo& cl_info,
77 TRAPS);
78 public:
79 static InstanceKlass* check_shared_class_file_load_hook(
80 InstanceKlass* ik,
81 Symbol* class_name,
82 Handle class_loader,
83 Handle protection_domain,
84 const ClassFileStream *cfs,
85 TRAPS);
86 };
87
88 #endif // SHARE_CLASSFILE_KLASSFACTORY_HPP
|