176
177
178 InstanceKlass* KlassFactory::create_from_stream(ClassFileStream* stream,
179 Symbol* name,
180 ClassLoaderData* loader_data,
181 Handle protection_domain,
182 const InstanceKlass* host_klass,
183 GrowableArray<Handle>* cp_patches,
184 TRAPS) {
185 assert(stream != NULL, "invariant");
186 assert(loader_data != NULL, "invariant");
187 assert(THREAD->is_Java_thread(), "must be a JavaThread");
188
189 ResourceMark rm;
190 HandleMark hm;
191
192 JvmtiCachedClassFileData* cached_class_file = NULL;
193
194 ClassFileStream* old_stream = stream;
195
196 // Skip this processing for VM anonymous classes
197 if (host_klass == NULL) {
198 stream = check_class_file_load_hook(stream,
199 name,
200 loader_data,
201 protection_domain,
202 &cached_class_file,
203 CHECK_NULL);
204 }
205
206 ClassFileParser parser(stream,
207 name,
208 loader_data,
209 protection_domain,
210 host_klass,
211 cp_patches,
212 ClassFileParser::BROADCAST, // publicity level
213 CHECK_NULL);
214
215 InstanceKlass* result = parser.create_instance_klass(old_stream != stream, CHECK_NULL);
|
176
177
178 InstanceKlass* KlassFactory::create_from_stream(ClassFileStream* stream,
179 Symbol* name,
180 ClassLoaderData* loader_data,
181 Handle protection_domain,
182 const InstanceKlass* host_klass,
183 GrowableArray<Handle>* cp_patches,
184 TRAPS) {
185 assert(stream != NULL, "invariant");
186 assert(loader_data != NULL, "invariant");
187 assert(THREAD->is_Java_thread(), "must be a JavaThread");
188
189 ResourceMark rm;
190 HandleMark hm;
191
192 JvmtiCachedClassFileData* cached_class_file = NULL;
193
194 ClassFileStream* old_stream = stream;
195
196 // increment counter
197 THREAD->statistic_info().incr_define_class_count();
198
199 // Skip this processing for VM anonymous classes
200 if (host_klass == NULL) {
201 stream = check_class_file_load_hook(stream,
202 name,
203 loader_data,
204 protection_domain,
205 &cached_class_file,
206 CHECK_NULL);
207 }
208
209 ClassFileParser parser(stream,
210 name,
211 loader_data,
212 protection_domain,
213 host_klass,
214 cp_patches,
215 ClassFileParser::BROADCAST, // publicity level
216 CHECK_NULL);
217
218 InstanceKlass* result = parser.create_instance_klass(old_stream != stream, CHECK_NULL);
|