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