< prev index next >

src/share/vm/oops/klass.cpp

Print this page
rev 12854 : [mq]: gcinterface.patch

*** 438,486 **** } } } } - void Klass::klass_update_barrier_set(oop v) { - record_modified_oops(); - } - - // This barrier is used by G1 to remember the old oop values, so - // that we don't forget any objects that were live at the snapshot at - // the beginning. This function is only used when we write oops into Klasses. - void Klass::klass_update_barrier_set_pre(oop* p, oop v) { - #if INCLUDE_ALL_GCS - if (UseG1GC) { - oop obj = *p; - if (obj != NULL) { - G1SATBCardTableModRefBS::enqueue(obj); - } - } - #endif - } - void Klass::klass_oop_store(oop* p, oop v) { ! assert(!Universe::heap()->is_in_reserved((void*)p), "Should store pointer into metadata"); ! assert(v == NULL || Universe::heap()->is_in_reserved((void*)v), "Should store pointer to an object"); // do the store ! if (always_do_update_barrier) { ! klass_oop_store((volatile oop*)p, v); ! } else { ! klass_update_barrier_set_pre(p, v); ! *p = v; ! klass_update_barrier_set(v); ! } } void Klass::klass_oop_store(volatile oop* p, oop v) { ! assert(!Universe::heap()->is_in_reserved((void*)p), "Should store pointer into metadata"); ! assert(v == NULL || Universe::heap()->is_in_reserved((void*)v), "Should store pointer to an object"); ! klass_update_barrier_set_pre((oop*)p, v); // Cast away volatile. ! OrderAccess::release_store_ptr(p, v); ! klass_update_barrier_set(v); } void Klass::oops_do(OopClosure* cl) { cl->do_oop(&_java_mirror); } --- 438,462 ---- } } } } void Klass::klass_oop_store(oop* p, oop v) { ! assert(!GC::gc()->heap()->is_in_reserved((void*)p), "Should store pointer into metadata"); ! assert(v == NULL || GC::gc()->heap()->is_in_reserved((void*)v), "Should store pointer to an object"); // do the store ! oopDesc::bs()->klass_oop_store(p, v); ! record_modified_oops(); } void Klass::klass_oop_store(volatile oop* p, oop v) { ! assert(!GC::gc()->heap()->is_in_reserved((void*)p), "Should store pointer into metadata"); ! assert(v == NULL || GC::gc()->heap()->is_in_reserved((void*)v), "Should store pointer to an object"); ! oopDesc::bs()->klass_oop_store(p, v); ! record_modified_oops(); } void Klass::oops_do(OopClosure* cl) { cl->do_oop(&_java_mirror); }
< prev index next >