Merged revisions 7797-7917 via svnmerge from
[cacao.git] / src / threads / native / lock.h
index abc5a5810147b3fb9ccd4f72e775a95f6f3261a6..54d385dc530307541c6effed96143c272d159418 100644 (file)
 
 /* 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.
@@ -82,12 +66,11 @@ struct lock_waiter_t {
 *******************************************************************************/
 
 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     */
 };
 
@@ -106,62 +89,13 @@ struct lock_hashtable_t {
 };
 
 
-/* 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 */