< prev index next >

src/share/vm/c1/c1_LIRGenerator.cpp

Print this page
rev 10742 : Make fields used in lock-free algorithms volatile

*** 1602,1612 **** //////////////////////////////////////////////////////////////////////// void LIRGenerator::CardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val) { CardTableModRefBS* ct = barrier_set_cast<CardTableModRefBS>(_bs); assert(sizeof(*(ct->byte_map_base)) == sizeof(jbyte), "adjust this code"); ! LIR_Const* card_table_base = new LIR_Const(ct->byte_map_base); if (addr->is_address()) { LIR_Address* address = addr->as_address_ptr(); // ptr cannot be an object because we use this barrier for array card marks // and addr can point in the middle of an array. LIR_Opr ptr = new_pointer_register(); --- 1602,1612 ---- //////////////////////////////////////////////////////////////////////// void LIRGenerator::CardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val) { CardTableModRefBS* ct = barrier_set_cast<CardTableModRefBS>(_bs); assert(sizeof(*(ct->byte_map_base)) == sizeof(jbyte), "adjust this code"); ! LIR_Const* card_table_base = new LIR_Const((jbyte*)ct->byte_map_base); if (addr->is_address()) { LIR_Address* address = addr->as_address_ptr(); // ptr cannot be an object because we use this barrier for array card marks // and addr can point in the middle of an array. LIR_Opr ptr = new_pointer_register();
< prev index next >