120 // Primitive objects
121 static oop _int_mirror;
122 static oop _float_mirror;
123 static oop _double_mirror;
124 static oop _byte_mirror;
125 static oop _bool_mirror;
126 static oop _char_mirror;
127 static oop _long_mirror;
128 static oop _short_mirror;
129 static oop _void_mirror;
130
131 static oop _main_thread_group; // Reference to the main thread group object
132 static oop _system_thread_group; // Reference to the system thread group object
133
134 static objArrayOop _the_empty_class_klass_array; // Canonicalized obj array of type java.lang.Class
135 static oop _the_null_sentinel; // A unique object pointer unused except as a sentinel for null.
136 static oop _the_null_string; // A cache of "null" as a Java string
137 static oop _the_min_jint_string; // A cache of "-2147483648" as a Java string
138 static LatestMethodCache* _finalizer_register_cache; // static method for registering finalizable objects
139 static LatestMethodCache* _loader_addClass_cache; // method for registering loaded classes in class loader vector
140 static LatestMethodCache* _pd_implies_cache; // method for checking protection domain attributes
141 static LatestMethodCache* _throw_illegal_access_error_cache; // Unsafe.throwIllegalAccessError() method
142 static LatestMethodCache* _do_stack_walk_cache; // method for stack walker callback
143
144 // preallocated error objects (no backtrace)
145 static oop _out_of_memory_error_java_heap;
146 static oop _out_of_memory_error_metaspace;
147 static oop _out_of_memory_error_class_metaspace;
148 static oop _out_of_memory_error_array_size;
149 static oop _out_of_memory_error_gc_overhead_limit;
150 static oop _out_of_memory_error_realloc_objects;
151 static oop _out_of_memory_error_retry;
152
153 // preallocated cause message for delayed StackOverflowError
154 static oop _delayed_stack_overflow_error_message;
155
156 static Array<int>* _the_empty_int_array; // Canonicalized int array
157 static Array<u2>* _the_empty_short_array; // Canonicalized short array
158 static Array<Klass*>* _the_empty_klass_array; // Canonicalized klass array
159 static Array<InstanceKlass*>* _the_empty_instance_klass_array; // Canonicalized instance klass array
160 static Array<Method*>* _the_empty_method_array; // Canonicalized method array
305 static oop _mirrors[T_VOID+1];
306
307 static oop java_mirror(BasicType t) {
308 assert((uint)t < T_VOID+1, "range check");
309 return check_mirror(_mirrors[t]);
310 }
311 static oop main_thread_group() { return _main_thread_group; }
312 static void set_main_thread_group(oop group) { _main_thread_group = group;}
313
314 static oop system_thread_group() { return _system_thread_group; }
315 static void set_system_thread_group(oop group) { _system_thread_group = group;}
316
317 static objArrayOop the_empty_class_klass_array () { return _the_empty_class_klass_array; }
318 static Array<Klass*>* the_array_interfaces_array() { return _the_array_interfaces_array; }
319 static oop the_null_string() { return _the_null_string; }
320 static oop the_min_jint_string() { return _the_min_jint_string; }
321
322 static Method* finalizer_register_method() { return _finalizer_register_cache->get_method(); }
323 static Method* loader_addClass_method() { return _loader_addClass_cache->get_method(); }
324
325 static Method* protection_domain_implies_method() { return _pd_implies_cache->get_method(); }
326 static Method* throw_illegal_access_error() { return _throw_illegal_access_error_cache->get_method(); }
327
328 static Method* do_stack_walk_method() { return _do_stack_walk_cache->get_method(); }
329
330 static oop the_null_sentinel() { return _the_null_sentinel; }
331 static address the_null_sentinel_addr() { return (address) &_the_null_sentinel; }
332
333 // Function to initialize these
334 static void initialize_known_methods(TRAPS);
335
336 static oop null_ptr_exception_instance() { return _null_ptr_exception_instance; }
337 static oop arithmetic_exception_instance() { return _arithmetic_exception_instance; }
338 static oop virtual_machine_error_instance() { return _virtual_machine_error_instance; }
339 static oop vm_exception() { return _vm_exception; }
340
341 // Reference pending list manipulation. Access is protected by
342 // Heap_lock. The getter, setter and predicate require the caller
343 // owns the lock. Swap is used by parallel non-concurrent reference
344 // processing threads, where some higher level controller owns
345 // Heap_lock, so requires the lock is locked, but not necessarily by
|
120 // Primitive objects
121 static oop _int_mirror;
122 static oop _float_mirror;
123 static oop _double_mirror;
124 static oop _byte_mirror;
125 static oop _bool_mirror;
126 static oop _char_mirror;
127 static oop _long_mirror;
128 static oop _short_mirror;
129 static oop _void_mirror;
130
131 static oop _main_thread_group; // Reference to the main thread group object
132 static oop _system_thread_group; // Reference to the system thread group object
133
134 static objArrayOop _the_empty_class_klass_array; // Canonicalized obj array of type java.lang.Class
135 static oop _the_null_sentinel; // A unique object pointer unused except as a sentinel for null.
136 static oop _the_null_string; // A cache of "null" as a Java string
137 static oop _the_min_jint_string; // A cache of "-2147483648" as a Java string
138 static LatestMethodCache* _finalizer_register_cache; // static method for registering finalizable objects
139 static LatestMethodCache* _loader_addClass_cache; // method for registering loaded classes in class loader vector
140 static LatestMethodCache* _throw_illegal_access_error_cache; // Unsafe.throwIllegalAccessError() method
141 static LatestMethodCache* _do_stack_walk_cache; // method for stack walker callback
142
143 // preallocated error objects (no backtrace)
144 static oop _out_of_memory_error_java_heap;
145 static oop _out_of_memory_error_metaspace;
146 static oop _out_of_memory_error_class_metaspace;
147 static oop _out_of_memory_error_array_size;
148 static oop _out_of_memory_error_gc_overhead_limit;
149 static oop _out_of_memory_error_realloc_objects;
150 static oop _out_of_memory_error_retry;
151
152 // preallocated cause message for delayed StackOverflowError
153 static oop _delayed_stack_overflow_error_message;
154
155 static Array<int>* _the_empty_int_array; // Canonicalized int array
156 static Array<u2>* _the_empty_short_array; // Canonicalized short array
157 static Array<Klass*>* _the_empty_klass_array; // Canonicalized klass array
158 static Array<InstanceKlass*>* _the_empty_instance_klass_array; // Canonicalized instance klass array
159 static Array<Method*>* _the_empty_method_array; // Canonicalized method array
304 static oop _mirrors[T_VOID+1];
305
306 static oop java_mirror(BasicType t) {
307 assert((uint)t < T_VOID+1, "range check");
308 return check_mirror(_mirrors[t]);
309 }
310 static oop main_thread_group() { return _main_thread_group; }
311 static void set_main_thread_group(oop group) { _main_thread_group = group;}
312
313 static oop system_thread_group() { return _system_thread_group; }
314 static void set_system_thread_group(oop group) { _system_thread_group = group;}
315
316 static objArrayOop the_empty_class_klass_array () { return _the_empty_class_klass_array; }
317 static Array<Klass*>* the_array_interfaces_array() { return _the_array_interfaces_array; }
318 static oop the_null_string() { return _the_null_string; }
319 static oop the_min_jint_string() { return _the_min_jint_string; }
320
321 static Method* finalizer_register_method() { return _finalizer_register_cache->get_method(); }
322 static Method* loader_addClass_method() { return _loader_addClass_cache->get_method(); }
323
324 static Method* throw_illegal_access_error() { return _throw_illegal_access_error_cache->get_method(); }
325
326 static Method* do_stack_walk_method() { return _do_stack_walk_cache->get_method(); }
327
328 static oop the_null_sentinel() { return _the_null_sentinel; }
329 static address the_null_sentinel_addr() { return (address) &_the_null_sentinel; }
330
331 // Function to initialize these
332 static void initialize_known_methods(TRAPS);
333
334 static oop null_ptr_exception_instance() { return _null_ptr_exception_instance; }
335 static oop arithmetic_exception_instance() { return _arithmetic_exception_instance; }
336 static oop virtual_machine_error_instance() { return _virtual_machine_error_instance; }
337 static oop vm_exception() { return _vm_exception; }
338
339 // Reference pending list manipulation. Access is protected by
340 // Heap_lock. The getter, setter and predicate require the caller
341 // owns the lock. Swap is used by parallel non-concurrent reference
342 // processing threads, where some higher level controller owns
343 // Heap_lock, so requires the lock is locked, but not necessarily by
|