< prev index next >

src/hotspot/share/asm/assembler.cpp

Print this page
rev 47400 : [mq]: cmpxchg_ptr
rev 47401 : [mq]: cmpxchg_if_null
rev 47406 : [mq]: assembler_cmpxchg

*** 234,250 **** for (int i = 0; i < DC_LIMIT; i++) { DelayedConstant* dcon = &delayed_constants[i]; if (dcon->match(type, cfn)) return dcon; if (dcon->value_fn == NULL) { ! // (cmpxchg not because this is multi-threaded but because I'm paranoid) ! if (Atomic::cmpxchg_ptr(CAST_FROM_FN_PTR(void*, cfn), &dcon->value_fn, NULL) == NULL) { dcon->type = type; return dcon; } } - } // If this assert is hit (in pre-integration testing!) then re-evaluate // the comment on the definition of DC_LIMIT. guarantee(false, "too many delayed constants"); return NULL; } --- 234,248 ---- for (int i = 0; i < DC_LIMIT; i++) { DelayedConstant* dcon = &delayed_constants[i]; if (dcon->match(type, cfn)) return dcon; if (dcon->value_fn == NULL) { ! dcon->value_fn = cfn; dcon->type = type; return dcon; } } // If this assert is hit (in pre-integration testing!) then re-evaluate // the comment on the definition of DC_LIMIT. guarantee(false, "too many delayed constants"); return NULL; }
< prev index next >