Mercurial > hg > graal-compiler
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 |