summaryrefslogtreecommitdiff
path: root/gcj_mlc.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcj_mlc.c')
-rw-r--r--gcj_mlc.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/gcj_mlc.c b/gcj_mlc.c
index 78950e25..c2aee253 100644
--- a/gcj_mlc.c
+++ b/gcj_mlc.c
@@ -164,17 +164,15 @@ static void maybe_finalize(void)
#endif
{
ptr_t op;
- ptr_t * opp;
word lg;
DCL_LOCK_STATE;
GC_DBG_COLLECT_AT_MALLOC(lb);
if(SMALL_OBJ(lb)) {
lg = GC_size_map[lb];
- opp = &(GC_gcjobjfreelist[lg]);
LOCK();
- op = *opp;
- if(EXPECT(op == 0, FALSE)) {
+ op = GC_gcjobjfreelist[lg];
+ if(EXPECT(0 == op, FALSE)) {
maybe_finalize();
op = (ptr_t)GENERAL_MALLOC_INNER((word)lb, GC_gcj_kind);
if (0 == op) {
@@ -183,7 +181,7 @@ static void maybe_finalize(void)
return((*oom_fn)(lb));
}
} else {
- *opp = obj_link(op);
+ GC_gcjobjfreelist[lg] = obj_link(op);
GC_bytes_allocd += GRANULES_TO_BYTES(lg);
}
*(void **)op = ptr_to_struct_containing_descr;
@@ -238,16 +236,14 @@ GC_API void * GC_CALL GC_gcj_malloc_ignore_off_page(size_t lb,
void * ptr_to_struct_containing_descr)
{
ptr_t op;
- ptr_t * opp;
word lg;
DCL_LOCK_STATE;
GC_DBG_COLLECT_AT_MALLOC(lb);
if(SMALL_OBJ(lb)) {
lg = GC_size_map[lb];
- opp = &(GC_gcjobjfreelist[lg]);
LOCK();
- op = *opp;
+ op = GC_gcjobjfreelist[lg];
if (EXPECT(0 == op, FALSE)) {
maybe_finalize();
op = (ptr_t)GENERAL_MALLOC_INNER_IOP(lb, GC_gcj_kind);
@@ -257,7 +253,7 @@ GC_API void * GC_CALL GC_gcj_malloc_ignore_off_page(size_t lb,
return((*oom_fn)(lb));
}
} else {
- *opp = obj_link(op);
+ GC_gcjobjfreelist[lg] = obj_link(op);
GC_bytes_allocd += GRANULES_TO_BYTES(lg);
}
} else {