167 // to interrupt requests and doesn't timeout.
168 static void wait_uninterruptibly(Handle obj, JavaThread* current);
169
170 // used by classloading to free classloader object lock,
171 // wait on an internal lock, and reclaim original lock
172 // with original recursion count
173 static intx complete_exit(Handle obj, JavaThread* current);
174 static void reenter (Handle obj, intx recursions, JavaThread* current);
175
176 // Inflate light weight monitor to heavy weight monitor
177 static ObjectMonitor* inflate(Thread* current, oop obj, const InflateCause cause);
178 // This version is only for internal use
179 static void inflate_helper(oop obj);
180 static const char* inflate_cause_name(const InflateCause cause);
181
182 // Returns the identity hash value for an oop
183 // NOTE: It may cause monitor inflation
184 static intptr_t identity_hash_value_for(Handle obj);
185 static intptr_t FastHashCode(Thread* current, oop obj);
186
187 // java.lang.Thread support
188 static bool current_thread_holds_lock(JavaThread* current, Handle h_obj);
189
190 static JavaThread* get_lock_owner(ThreadsList * t_list, Handle h_obj);
191
192 // JNI detach support
193 static void release_monitors_owned_by_thread(JavaThread* current);
194
195 // Iterate ObjectMonitors where the owner == thread; this does NOT include
196 // ObjectMonitors where owner is set to a stack lock address in thread:
197 //
198 // This version of monitors_iterate() works with the in-use monitor list.
199 static void monitors_iterate(MonitorClosure* m, JavaThread* thread);
200 // This version of monitors_iterate() works with the specified linked list.
201 static void monitors_iterate(MonitorClosure* closure,
202 ObjectMonitorsHashtable::PtrList* list,
203 JavaThread* thread);
204
205 // Initialize the gInflationLocks
206 static void initialize();
|
167 // to interrupt requests and doesn't timeout.
168 static void wait_uninterruptibly(Handle obj, JavaThread* current);
169
170 // used by classloading to free classloader object lock,
171 // wait on an internal lock, and reclaim original lock
172 // with original recursion count
173 static intx complete_exit(Handle obj, JavaThread* current);
174 static void reenter (Handle obj, intx recursions, JavaThread* current);
175
176 // Inflate light weight monitor to heavy weight monitor
177 static ObjectMonitor* inflate(Thread* current, oop obj, const InflateCause cause);
178 // This version is only for internal use
179 static void inflate_helper(oop obj);
180 static const char* inflate_cause_name(const InflateCause cause);
181
182 // Returns the identity hash value for an oop
183 // NOTE: It may cause monitor inflation
184 static intptr_t identity_hash_value_for(Handle obj);
185 static intptr_t FastHashCode(Thread* current, oop obj);
186
187 // Read mark-word and spin-wait as long as INFLATING is observed.
188 static markWord read_stable_mark(oop obj);
189
190 static markWord stable_mark(oop obj);
191
192 // java.lang.Thread support
193 static bool current_thread_holds_lock(JavaThread* current, Handle h_obj);
194
195 static JavaThread* get_lock_owner(ThreadsList * t_list, Handle h_obj);
196
197 // JNI detach support
198 static void release_monitors_owned_by_thread(JavaThread* current);
199
200 // Iterate ObjectMonitors where the owner == thread; this does NOT include
201 // ObjectMonitors where owner is set to a stack lock address in thread:
202 //
203 // This version of monitors_iterate() works with the in-use monitor list.
204 static void monitors_iterate(MonitorClosure* m, JavaThread* thread);
205 // This version of monitors_iterate() works with the specified linked list.
206 static void monitors_iterate(MonitorClosure* closure,
207 ObjectMonitorsHashtable::PtrList* list,
208 JavaThread* thread);
209
210 // Initialize the gInflationLocks
211 static void initialize();
|