comparison src/share/vm/runtime/os.cpp @ 2177:3582bf76420e

6990754: Use native memory and reference counting to implement SymbolTable Summary: move symbols from permgen into C heap and reference count them Reviewed-by: never, acorn, jmasa, stefank
author coleenp
date Thu, 27 Jan 2011 16:11:27 -0800
parents 828eafbd85cc
children f7de3327c683
comparison
equal deleted inserted replaced
2176:27e4ea99855d 2177:3582bf76420e
253 break; 253 break;
254 } 254 }
255 default: { 255 default: {
256 // Dispatch the signal to java 256 // Dispatch the signal to java
257 HandleMark hm(THREAD); 257 HandleMark hm(THREAD);
258 klassOop k = SystemDictionary::resolve_or_null(vmSymbolHandles::sun_misc_Signal(), THREAD); 258 klassOop k = SystemDictionary::resolve_or_null(vmSymbols::sun_misc_Signal(), THREAD);
259 KlassHandle klass (THREAD, k); 259 KlassHandle klass (THREAD, k);
260 if (klass.not_null()) { 260 if (klass.not_null()) {
261 JavaValue result(T_VOID); 261 JavaValue result(T_VOID);
262 JavaCallArguments args; 262 JavaCallArguments args;
263 args.push_int(sig); 263 args.push_int(sig);
264 JavaCalls::call_static( 264 JavaCalls::call_static(
265 &result, 265 &result,
266 klass, 266 klass,
267 vmSymbolHandles::dispatch_name(), 267 vmSymbols::dispatch_name(),
268 vmSymbolHandles::int_void_signature(), 268 vmSymbols::int_void_signature(),
269 &args, 269 &args,
270 THREAD 270 THREAD
271 ); 271 );
272 } 272 }
273 if (HAS_PENDING_EXCEPTION) { 273 if (HAS_PENDING_EXCEPTION) {
296 296
297 void os::signal_init() { 297 void os::signal_init() {
298 if (!ReduceSignalUsage) { 298 if (!ReduceSignalUsage) {
299 // Setup JavaThread for processing signals 299 // Setup JavaThread for processing signals
300 EXCEPTION_MARK; 300 EXCEPTION_MARK;
301 klassOop k = SystemDictionary::resolve_or_fail(vmSymbolHandles::java_lang_Thread(), true, CHECK); 301 klassOop k = SystemDictionary::resolve_or_fail(vmSymbols::java_lang_Thread(), true, CHECK);
302 instanceKlassHandle klass (THREAD, k); 302 instanceKlassHandle klass (THREAD, k);
303 instanceHandle thread_oop = klass->allocate_instance_handle(CHECK); 303 instanceHandle thread_oop = klass->allocate_instance_handle(CHECK);
304 304
305 const char thread_name[] = "Signal Dispatcher"; 305 const char thread_name[] = "Signal Dispatcher";
306 Handle string = java_lang_String::create_from_str(thread_name, CHECK); 306 Handle string = java_lang_String::create_from_str(thread_name, CHECK);
308 // Initialize thread_oop to put it into the system threadGroup 308 // Initialize thread_oop to put it into the system threadGroup
309 Handle thread_group (THREAD, Universe::system_thread_group()); 309 Handle thread_group (THREAD, Universe::system_thread_group());
310 JavaValue result(T_VOID); 310 JavaValue result(T_VOID);
311 JavaCalls::call_special(&result, thread_oop, 311 JavaCalls::call_special(&result, thread_oop,
312 klass, 312 klass,
313 vmSymbolHandles::object_initializer_name(), 313 vmSymbols::object_initializer_name(),
314 vmSymbolHandles::threadgroup_string_void_signature(), 314 vmSymbols::threadgroup_string_void_signature(),
315 thread_group, 315 thread_group,
316 string, 316 string,
317 CHECK); 317 CHECK);
318 318
319 KlassHandle group(THREAD, SystemDictionary::ThreadGroup_klass()); 319 KlassHandle group(THREAD, SystemDictionary::ThreadGroup_klass());
320 JavaCalls::call_special(&result, 320 JavaCalls::call_special(&result,
321 thread_group, 321 thread_group,
322 group, 322 group,
323 vmSymbolHandles::add_method_name(), 323 vmSymbols::add_method_name(),
324 vmSymbolHandles::thread_void_signature(), 324 vmSymbols::thread_void_signature(),
325 thread_oop, // ARG 1 325 thread_oop, // ARG 1
326 CHECK); 326 CHECK);
327 327
328 os::signal_init_pd(); 328 os::signal_init_pd();
329 329