/* typedefs *******************************************************************/
-typedef struct lock_execution_env_t lock_execution_env_t;
typedef struct lock_record_t lock_record_t;
-typedef struct lock_record_pool_header_t lock_record_pool_header_t;
-typedef struct lock_record_pool_t lock_record_pool_t;
typedef struct lock_waiter_t lock_waiter_t;
typedef struct lock_hashtable_t lock_hashtable_t;
-/* lock_execution_env_t ********************************************************
-
- Execution environment. Contains the lock record freelist and pools.
-
-*******************************************************************************/
-
-struct lock_execution_env_t {
- lock_record_t *firstfree; /* lock record freelist */
- lock_record_pool_t *lockrecordpools; /* list of per-thread pools */
- int lockrecordcount; /* # of records for this thread */
-};
-
-
/* lock_waiter_t ***************************************************************
List node for storing a waiting thread.
*******************************************************************************/
struct lock_record_t {
- java_objectheader *obj; /* object for which this lock is */
+ java_objectheader *object; /* object for which this lock is */
struct threadobject *owner; /* current owner of this monitor */
s4 count; /* recursive lock count */
pthread_mutex_t mutex; /* mutex for synchronizing */
lock_waiter_t *waiters; /* list of threads waiting */
- lock_record_t *nextfree; /* next in free list */
lock_record_t *hashlink; /* next record in hash chain */
};
};
-/* lock_record_pool_header_t ***************************************************
-
- Lock records are allocated in pools. Each pool has on of these headers.
-
-*******************************************************************************/
-
-struct lock_record_pool_header_t {
- lock_record_pool_t *next; /* next pool */
- int size; /* records in this pool */
-};
-
-
-/* lock_record_pool_t **********************************************************
-
- Lock records are allocated in such pools.
-
-*******************************************************************************/
-
-struct lock_record_pool_t {
- lock_record_pool_header_t header; /* pool header (see above) */
- lock_record_t lr[1]; /* variable array of records */
-};
-
-#if defined(ENABLE_JVMTI)
-extern pthread_mutex_t lock_global_pool_lock;
-extern lock_record_pool_t *lock_global_pool;
-#endif
-
-
-/* functions ******************************************************************/
+/* defines ********************************************************************/
-void lock_init(void);
-
-void lock_init_execution_env(struct threadobject *thread);
-void lock_record_free_pools(lock_record_pool_t *pool);
-
-void lock_init_object_lock(java_objectheader *);
-lock_record_t *lock_get_initial_lock_word(void);
-
-ptrint lock_pre_compute_thinlock(s4 index);
-
-bool lock_monitor_enter(java_objectheader *);
-bool lock_monitor_exit(java_objectheader *);
-
-#define LOCK_monitor_enter (functionptr) lock_monitor_enter
-#define LOCK_monitor_exit (functionptr) lock_monitor_exit
+#define LOCK_INIT_OBJECT_LOCK(o) lock_init_object_lock((java_objectheader *) (o))
#define LOCK_MONITOR_ENTER(o) lock_monitor_enter((java_objectheader *) (o))
#define LOCK_MONITOR_EXIT(o) lock_monitor_exit((java_objectheader *) (o))
-bool lock_is_held_by_current_thread(java_objectheader *o);
-
-void lock_wait_for_object(java_objectheader *o, s8 millis, s4 nanos);
-void lock_notify_object(java_objectheader *o);
-void lock_notify_all_object(java_objectheader *o);
-
#endif /* _LOCK_H */