static lock_record_pool_t *lock_record_alloc_new_pool(threadobject *thread, int size)
{
- int i;
lock_record_pool_t *pool;
+ s4 i;
/* get the pool from the memory allocator */
pool = mem_alloc(sizeof(lock_record_pool_header_t)
+ sizeof(lock_record_t) * size);
+#if defined(ENABLE_STATISTICS)
+ if (opt_stat)
+ size_lock_record_pool += sizeof(lock_record_pool_header_t) +
+ sizeof(lock_record_t) * size;
+#endif
+
/* initialize the pool header */
pool->header.size = size;
/* initialize the individual lock records */
- for (i=0; i<size; i++) {
+ for (i = 0; i < size; i++) {
lock_record_init(&pool->lr[i], thread);
- pool->lr[i].nextfree = &pool->lr[i+1];
+ pool->lr[i].nextfree = &pool->lr[i + 1];
}
/* terminate free list */
- pool->lr[i-1].nextfree = NULL;
+ pool->lr[i - 1].nextfree = NULL;
return pool;
}
{
pthread_mutex_lock(&lock_global_pool_lock);
- if (lock_global_pool) {
+ if (lock_global_pool != NULL) {
int i;
lock_record_pool_t *pool;
/* pop a pool from the global freelist */
- pool = lock_global_pool;
+ pool = lock_global_pool;
lock_global_pool = pool->header.next;
pthread_mutex_unlock(&lock_global_pool_lock);
/* re-initialize owner and freelist chaining */
- for (i=0; i < pool->header.size; i++) {
- pool->lr[i].owner = NULL;
- pool->lr[i].nextfree = &pool->lr[i+1];
+ for (i = 0; i < pool->header.size; i++) {
+ pool->lr[i].owner = NULL;
+ pool->lr[i].nextfree = &pool->lr[i + 1];
}
- pool->lr[i-1].nextfree = NULL;
+ pool->lr[i - 1].nextfree = NULL;
return pool;
}
/* algorithm. We must find another way to free */
/* unused lock records. */
- if (!pool)
+ if (pool == NULL)
return;
pthread_mutex_lock(&lock_global_pool_lock);
/* find the last pool in the list */
last = &pool->header;
+
while (last->next)
last = &last->next->header;
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: statistics.c 7549 2007-03-21 13:27:14Z twisti $
+ $Id: statistics.c 7551 2007-03-21 14:26:09Z twisti $
*/
/* variables for measurements *************************************************/
-s4 size_classinfo = 0;
-s4 size_fieldinfo = 0;
-s4 size_methodinfo = 0;
-s4 size_lineinfo = 0;
-s4 size_codeinfo = 0;
+s4 size_classinfo = 0;
+s4 size_fieldinfo = 0;
+s4 size_methodinfo = 0;
+s4 size_lineinfo = 0;
+s4 size_codeinfo = 0;
-s4 size_stack_map = 0;
-s4 size_string = 0;
+s4 size_stack_map = 0;
+s4 size_string = 0;
-s4 size_threadobject = 0;
-s4 size_lock_hashtable = 0;
-s4 size_lock_waiter = 0;
+s4 size_threadobject = 0;
+
+s4 size_lock_record_pool = 0;
+s4 size_lock_hashtable = 0;
+s4 size_lock_waiter = 0;
int count_const_pool_len = 0;
int count_classref_len = 0;
printf("stack map: %10d\n", size_stack_map);
printf("string: %10d\n", size_string);
printf("threadobject: %10d\n", size_threadobject);
+ printf("lock record pool: %10d\n", size_lock_record_pool);
printf("lock hashtable: %10d\n", size_lock_hashtable);
printf("lock waiter: %10d\n", size_lock_waiter);
printf(" ----------\n");
size_stack_map +
size_string +
size_threadobject +
+ size_lock_record_pool +
size_lock_hashtable +
size_lock_waiter;
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: statistics.h 7549 2007-03-21 13:27:14Z twisti $
+ $Id: statistics.h 7551 2007-03-21 14:26:09Z twisti $
*/
extern s4 size_string;
extern s4 size_threadobject;
+
+extern s4 size_lock_record_pool;
extern s4 size_lock_hashtable;
extern s4 size_lock_waiter;