103 static OopHandle _main_thread_group; // Reference to the main thread group object
104 static OopHandle _system_thread_group; // Reference to the system thread group object
105
106 static OopHandle _the_empty_class_array; // Canonicalized obj array of type java.lang.Class
107 static OopHandle _the_null_string; // A cache of "null" as a Java string
108 static OopHandle _the_min_jint_string; // A cache of "-2147483648" as a Java string
109
110 static OopHandle _the_null_sentinel; // A unique object pointer unused except as a sentinel for null.
111
112 // preallocated error objects (no backtrace)
113 static OopHandle _out_of_memory_errors;
114
115 // preallocated cause message for delayed StackOverflowError
116 static OopHandle _delayed_stack_overflow_error_message;
117
118 static LatestMethodCache* _finalizer_register_cache; // static method for registering finalizable objects
119 static LatestMethodCache* _loader_addClass_cache; // method for registering loaded classes in class loader vector
120 static LatestMethodCache* _throw_illegal_access_error_cache; // Unsafe.throwIllegalAccessError() method
121 static LatestMethodCache* _throw_no_such_method_error_cache; // Unsafe.throwNoSuchMethodError() method
122 static LatestMethodCache* _do_stack_walk_cache; // method for stack walker callback
123
124 static Array<int>* _the_empty_int_array; // Canonicalized int array
125 static Array<u2>* _the_empty_short_array; // Canonicalized short array
126 static Array<Klass*>* _the_empty_klass_array; // Canonicalized klass array
127 static Array<InstanceKlass*>* _the_empty_instance_klass_array; // Canonicalized instance klass array
128 static Array<Method*>* _the_empty_method_array; // Canonicalized method array
129
130 static Array<Klass*>* _the_array_interfaces_array;
131
132 // array of preallocated error objects with backtrace
133 static OopHandle _preallocated_out_of_memory_error_array;
134
135 // number of preallocated error objects available for use
136 static volatile jint _preallocated_out_of_memory_error_avail_count;
137
138 // preallocated message detail strings for error objects
139 static OopHandle _msg_metaspace;
140 static OopHandle _msg_class_metaspace;
141
142 static OopHandle _null_ptr_exception_instance; // preallocated exception object
143 static OopHandle _arithmetic_exception_instance; // preallocated exception object
144 static OopHandle _virtual_machine_error_instance; // preallocated exception object
145
146 // References waiting to be transferred to the ReferenceHandler
147 static OopHandle _reference_pending_list;
148
149 // The particular choice of collected heap.
150 static CollectedHeap* _collectedHeap;
151
152 static intptr_t _non_oop_bits;
153
154 // array of dummy objects used with +FullGCAlot
155 debug_only(static OopHandle _fullgc_alot_dummy_array;)
156 debug_only(static int _fullgc_alot_dummy_next;)
157
158 // Compiler/dispatch support
159 static int _base_vtable_size; // Java vtbl size of klass Object (in words)
160
161 // Initialization
162 static bool _bootstrapping; // true during genesis
163 static bool _module_initialized; // true after call_initPhase2 called
164 static bool _fully_initialized; // true after universe_init and initialize_vtables called
165
166 // the array of preallocated errors with backtraces
167 static objArrayOop preallocated_out_of_memory_errors();
168
169 static objArrayOop out_of_memory_errors();
170 // generate an out of memory error; if possible using an error with preallocated backtrace;
171 // otherwise return the given default error.
172 static oop gen_out_of_memory_error(oop default_err);
173
256
257 static objArrayOop the_empty_class_array ();
258
259 static oop the_null_string();
260 static oop the_min_jint_string();
261
262 static oop null_ptr_exception_instance();
263 static oop arithmetic_exception_instance();
264 static oop virtual_machine_error_instance();
265 static oop vm_exception() { return virtual_machine_error_instance(); }
266
267 static Array<Klass*>* the_array_interfaces_array() { return _the_array_interfaces_array; }
268 static Method* finalizer_register_method() { return _finalizer_register_cache->get_method(); }
269 static Method* loader_addClass_method() { return _loader_addClass_cache->get_method(); }
270
271 static Method* throw_illegal_access_error() { return _throw_illegal_access_error_cache->get_method(); }
272 static Method* throw_no_such_method_error() { return _throw_no_such_method_error_cache->get_method(); }
273
274 static Method* do_stack_walk_method() { return _do_stack_walk_cache->get_method(); }
275
276 static oop the_null_sentinel();
277 static address the_null_sentinel_addr() { return (address) &_the_null_sentinel; }
278
279 // Function to initialize these
280 static void initialize_known_methods(TRAPS);
281
282 static void create_preallocated_out_of_memory_errors(TRAPS);
283
284 // Reference pending list manipulation. Access is protected by
285 // Heap_lock. The getter, setter and predicate require the caller
286 // owns the lock. Swap is used by parallel non-concurrent reference
287 // processing threads, where some higher level controller owns
288 // Heap_lock, so requires the lock is locked, but not necessarily by
289 // the current thread.
290 static oop reference_pending_list();
291 static void clear_reference_pending_list();
292 static bool has_reference_pending_list();
293 static oop swap_reference_pending_list(oop list);
294
295 static Array<int>* the_empty_int_array() { return _the_empty_int_array; }
|
103 static OopHandle _main_thread_group; // Reference to the main thread group object
104 static OopHandle _system_thread_group; // Reference to the system thread group object
105
106 static OopHandle _the_empty_class_array; // Canonicalized obj array of type java.lang.Class
107 static OopHandle _the_null_string; // A cache of "null" as a Java string
108 static OopHandle _the_min_jint_string; // A cache of "-2147483648" as a Java string
109
110 static OopHandle _the_null_sentinel; // A unique object pointer unused except as a sentinel for null.
111
112 // preallocated error objects (no backtrace)
113 static OopHandle _out_of_memory_errors;
114
115 // preallocated cause message for delayed StackOverflowError
116 static OopHandle _delayed_stack_overflow_error_message;
117
118 static LatestMethodCache* _finalizer_register_cache; // static method for registering finalizable objects
119 static LatestMethodCache* _loader_addClass_cache; // method for registering loaded classes in class loader vector
120 static LatestMethodCache* _throw_illegal_access_error_cache; // Unsafe.throwIllegalAccessError() method
121 static LatestMethodCache* _throw_no_such_method_error_cache; // Unsafe.throwNoSuchMethodError() method
122 static LatestMethodCache* _do_stack_walk_cache; // method for stack walker callback
123 static LatestMethodCache* _is_substitutable_cache; // ValueObjectMethods.isSubstitutable() method
124 static LatestMethodCache* _value_object_hash_code_cache; // ValueObjectMethods.valueObjectHashCode() method
125
126 static Array<int>* _the_empty_int_array; // Canonicalized int array
127 static Array<u2>* _the_empty_short_array; // Canonicalized short array
128 static Array<Klass*>* _the_empty_klass_array; // Canonicalized klass array
129 static Array<InstanceKlass*>* _the_empty_instance_klass_array; // Canonicalized instance klass array
130 static Array<Method*>* _the_empty_method_array; // Canonicalized method array
131
132 static Array<Klass*>* _the_array_interfaces_array;
133
134 // array of preallocated error objects with backtrace
135 static OopHandle _preallocated_out_of_memory_error_array;
136
137 // number of preallocated error objects available for use
138 static volatile jint _preallocated_out_of_memory_error_avail_count;
139
140 // preallocated message detail strings for error objects
141 static OopHandle _msg_metaspace;
142 static OopHandle _msg_class_metaspace;
143
144 static OopHandle _null_ptr_exception_instance; // preallocated exception object
145 static OopHandle _arithmetic_exception_instance; // preallocated exception object
146 static OopHandle _virtual_machine_error_instance; // preallocated exception object
147
148 // References waiting to be transferred to the ReferenceHandler
149 static OopHandle _reference_pending_list;
150
151 // The particular choice of collected heap.
152 static CollectedHeap* _collectedHeap;
153
154 static intptr_t _non_oop_bits;
155
156
157 // array of dummy objects used with +FullGCAlot
158 debug_only(static OopHandle _fullgc_alot_dummy_array;)
159 debug_only(static int _fullgc_alot_dummy_next;)
160
161 // Compiler/dispatch support
162 static int _base_vtable_size; // Java vtbl size of klass Object (in words)
163
164 // Initialization
165 static bool _bootstrapping; // true during genesis
166 static bool _module_initialized; // true after call_initPhase2 called
167 static bool _fully_initialized; // true after universe_init and initialize_vtables called
168
169 // the array of preallocated errors with backtraces
170 static objArrayOop preallocated_out_of_memory_errors();
171
172 static objArrayOop out_of_memory_errors();
173 // generate an out of memory error; if possible using an error with preallocated backtrace;
174 // otherwise return the given default error.
175 static oop gen_out_of_memory_error(oop default_err);
176
259
260 static objArrayOop the_empty_class_array ();
261
262 static oop the_null_string();
263 static oop the_min_jint_string();
264
265 static oop null_ptr_exception_instance();
266 static oop arithmetic_exception_instance();
267 static oop virtual_machine_error_instance();
268 static oop vm_exception() { return virtual_machine_error_instance(); }
269
270 static Array<Klass*>* the_array_interfaces_array() { return _the_array_interfaces_array; }
271 static Method* finalizer_register_method() { return _finalizer_register_cache->get_method(); }
272 static Method* loader_addClass_method() { return _loader_addClass_cache->get_method(); }
273
274 static Method* throw_illegal_access_error() { return _throw_illegal_access_error_cache->get_method(); }
275 static Method* throw_no_such_method_error() { return _throw_no_such_method_error_cache->get_method(); }
276
277 static Method* do_stack_walk_method() { return _do_stack_walk_cache->get_method(); }
278
279 static Method* is_substitutable_method() { return _is_substitutable_cache->get_method(); }
280 static Method* value_object_hash_code_method() { return _value_object_hash_code_cache->get_method(); }
281
282 static oop the_null_sentinel();
283 static address the_null_sentinel_addr() { return (address) &_the_null_sentinel; }
284
285 // Function to initialize these
286 static void initialize_known_methods(TRAPS);
287
288 static void create_preallocated_out_of_memory_errors(TRAPS);
289
290 // Reference pending list manipulation. Access is protected by
291 // Heap_lock. The getter, setter and predicate require the caller
292 // owns the lock. Swap is used by parallel non-concurrent reference
293 // processing threads, where some higher level controller owns
294 // Heap_lock, so requires the lock is locked, but not necessarily by
295 // the current thread.
296 static oop reference_pending_list();
297 static void clear_reference_pending_list();
298 static bool has_reference_pending_list();
299 static oop swap_reference_pending_list(oop list);
300
301 static Array<int>* the_empty_int_array() { return _the_empty_int_array; }
|