299 InstanceKlass::cast(PENDING_EXCEPTION->klass())->
300 name()->as_klass_external_name(klass_name, 256);
301 if (os::exception_name(sig, tmp_sig_name, 16) != NULL)
302 sig_name = tmp_sig_name;
303 warning("Exception %s occurred dispatching signal %s to handler"
304 "- the VM may need to be forcibly terminated",
305 klass_name, sig_name );
306 }
307 CLEAR_PENDING_EXCEPTION;
308 }
309 }
310 }
311 }
312 }
313
314 void os::init_before_ergo() {
315 // We need to initialize large page support here because ergonomics takes some
316 // decisions depending on large page support and the calculated large page size.
317 large_page_init();
318
319 VM_Version::vm_init_before_ergo();
320 }
321
322 void os::signal_init() {
323 if (!ReduceSignalUsage) {
324 // Setup JavaThread for processing signals
325 EXCEPTION_MARK;
326 Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK);
327 instanceKlassHandle klass (THREAD, k);
328 instanceHandle thread_oop = klass->allocate_instance_handle(CHECK);
329
330 const char thread_name[] = "Signal Dispatcher";
331 Handle string = java_lang_String::create_from_str(thread_name, CHECK);
332
333 // Initialize thread_oop to put it into the system threadGroup
334 Handle thread_group (THREAD, Universe::system_thread_group());
335 JavaValue result(T_VOID);
336 JavaCalls::call_special(&result, thread_oop,
337 klass,
338 vmSymbols::object_initializer_name(),
339 vmSymbols::threadgroup_string_void_signature(),
|
299 InstanceKlass::cast(PENDING_EXCEPTION->klass())->
300 name()->as_klass_external_name(klass_name, 256);
301 if (os::exception_name(sig, tmp_sig_name, 16) != NULL)
302 sig_name = tmp_sig_name;
303 warning("Exception %s occurred dispatching signal %s to handler"
304 "- the VM may need to be forcibly terminated",
305 klass_name, sig_name );
306 }
307 CLEAR_PENDING_EXCEPTION;
308 }
309 }
310 }
311 }
312 }
313
314 void os::init_before_ergo() {
315 // We need to initialize large page support here because ergonomics takes some
316 // decisions depending on large page support and the calculated large page size.
317 large_page_init();
318
319 // VM version initialization identifies some characteristics of the
320 // the platform that are used during ergonomic decisions.
321 VM_Version::init_before_ergo();
322 }
323
324 void os::signal_init() {
325 if (!ReduceSignalUsage) {
326 // Setup JavaThread for processing signals
327 EXCEPTION_MARK;
328 Klass* k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK);
329 instanceKlassHandle klass (THREAD, k);
330 instanceHandle thread_oop = klass->allocate_instance_handle(CHECK);
331
332 const char thread_name[] = "Signal Dispatcher";
333 Handle string = java_lang_String::create_from_str(thread_name, CHECK);
334
335 // Initialize thread_oop to put it into the system threadGroup
336 Handle thread_group (THREAD, Universe::system_thread_group());
337 JavaValue result(T_VOID);
338 JavaCalls::call_special(&result, thread_oop,
339 klass,
340 vmSymbols::object_initializer_name(),
341 vmSymbols::threadgroup_string_void_signature(),
|