< prev index next > src/hotspot/share/runtime/thread.hpp
Print this page
#include "oops/oopHandle.hpp"
#include "runtime/frame.hpp"
#include "runtime/globals.hpp"
#include "runtime/handshake.hpp"
#include "runtime/javaFrameAnchor.hpp"
+ #include "runtime/lockStack.hpp"
#include "runtime/mutexLocker.hpp"
#include "runtime/os.hpp"
#include "runtime/park.hpp"
#include "runtime/safepointMechanism.hpp"
#include "runtime/stackWatermarkSet.hpp"
// java.lang.Thread interruption support
void interrupt();
bool is_interrupted(bool clear_interrupted);
+ private:
+ LockStack _lock_stack;
+
+ public:
+ LockStack& lock_stack() { return _lock_stack; }
+
+ static ByteSize lock_stack_offset() { return byte_offset_of(JavaThread, _lock_stack); }
+ // Those offsets are used in code generators to access the LockStack that is embedded in this
+ // JavaThread structure. Those accesses are relative to the current thread, which
+ // is typically in a dedicated register.
+ static ByteSize lock_stack_top_offset() { return lock_stack_offset() + LockStack::top_offset(); }
+ static ByteSize lock_stack_base_offset() { return lock_stack_offset() + LockStack::base_offset(); }
+
static OopStorage* thread_oop_storage();
static void verify_cross_modify_fence_failure(JavaThread *thread) PRODUCT_RETURN;
// Helper function to start a VM-internal daemon thread.
// Get owning Java thread from the monitor's owner field.
static JavaThread *owning_thread_from_monitor_owner(ThreadsList * t_list,
address owner);
+ static JavaThread* owning_thread_from_object(ThreadsList* t_list, oop obj);
+ static JavaThread* owning_thread_from_monitor(ThreadsList* t_list, ObjectMonitor* owner);
+
// Number of threads on the active threads list
static int number_of_threads() { return _number_of_threads; }
// Number of non-daemon threads on the active threads list
static int number_of_non_daemon_threads() { return _number_of_non_daemon_threads; }
< prev index next >