< prev index next >
src/share/vm/jvmci/jvmciCompilerToVM.cpp
Print this page
rev 10742 : Make fields used in lock-free algorithms volatile
*** 145,157 ****
uintptr_t CompilerToVM::Data::Universe_verify_oop_mask;
uintptr_t CompilerToVM::Data::Universe_verify_oop_bits;
bool CompilerToVM::Data::_supports_inline_contig_alloc;
HeapWord** CompilerToVM::Data::_heap_end_addr;
! HeapWord** CompilerToVM::Data::_heap_top_addr;
! jbyte* CompilerToVM::Data::cardtable_start_address;
int CompilerToVM::Data::cardtable_shift;
int CompilerToVM::Data::vm_page_size;
void CompilerToVM::Data::initialize() {
--- 145,157 ----
uintptr_t CompilerToVM::Data::Universe_verify_oop_mask;
uintptr_t CompilerToVM::Data::Universe_verify_oop_bits;
bool CompilerToVM::Data::_supports_inline_contig_alloc;
HeapWord** CompilerToVM::Data::_heap_end_addr;
! HeapWord* volatile* CompilerToVM::Data::_heap_top_addr;
! volatile jbyte* CompilerToVM::Data::cardtable_start_address;
int CompilerToVM::Data::cardtable_shift;
int CompilerToVM::Data::vm_page_size;
void CompilerToVM::Data::initialize() {
*** 177,196 ****
Universe_verify_oop_mask = Universe::verify_oop_mask();
Universe_verify_oop_bits = Universe::verify_oop_bits();
_supports_inline_contig_alloc = Universe::heap()->supports_inline_contig_alloc();
_heap_end_addr = _supports_inline_contig_alloc ? Universe::heap()->end_addr() : (HeapWord**) -1;
! _heap_top_addr = _supports_inline_contig_alloc ? Universe::heap()->top_addr() : (HeapWord**) -1;
BarrierSet* bs = Universe::heap()->barrier_set();
switch (bs->kind()) {
case BarrierSet::CardTableModRef:
case BarrierSet::CardTableForRS:
case BarrierSet::CardTableExtension:
case BarrierSet::G1SATBCT:
case BarrierSet::G1SATBCTLogging: {
! jbyte* base = barrier_set_cast<CardTableModRefBS>(bs)->byte_map_base;
assert(base != 0, "unexpected byte_map_base");
cardtable_start_address = base;
cardtable_shift = CardTableModRefBS::card_shift;
break;
}
--- 177,196 ----
Universe_verify_oop_mask = Universe::verify_oop_mask();
Universe_verify_oop_bits = Universe::verify_oop_bits();
_supports_inline_contig_alloc = Universe::heap()->supports_inline_contig_alloc();
_heap_end_addr = _supports_inline_contig_alloc ? Universe::heap()->end_addr() : (HeapWord**) -1;
! _heap_top_addr = _supports_inline_contig_alloc ? Universe::heap()->top_addr() : (HeapWord* volatile*) -1;
BarrierSet* bs = Universe::heap()->barrier_set();
switch (bs->kind()) {
case BarrierSet::CardTableModRef:
case BarrierSet::CardTableForRS:
case BarrierSet::CardTableExtension:
case BarrierSet::G1SATBCT:
case BarrierSet::G1SATBCTLogging: {
! volatile jbyte* base = barrier_set_cast<CardTableModRefBS>(bs)->byte_map_base;
assert(base != 0, "unexpected byte_map_base");
cardtable_start_address = base;
cardtable_shift = CardTableModRefBS::card_shift;
break;
}
*** 1338,1348 ****
// Check if the range is valid.
if ((((unsigned int) length + (unsigned int) offset) > (unsigned int) array->length())) {
THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException());
}
while (length > 0) {
! jbyte* start = array->byte_at_addr(offset);
tty->write((char*) start, MIN2(length, O_BUFLEN));
length -= O_BUFLEN;
offset += O_BUFLEN;
}
C2V_END
--- 1338,1348 ----
// Check if the range is valid.
if ((((unsigned int) length + (unsigned int) offset) > (unsigned int) array->length())) {
THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException());
}
while (length > 0) {
! volatile jbyte* start = array->byte_at_addr(offset);
tty->write((char*) start, MIN2(length, O_BUFLEN));
length -= O_BUFLEN;
offset += O_BUFLEN;
}
C2V_END
*** 1490,1495 ****
};
int CompilerToVM::methods_count() {
return sizeof(methods) / sizeof(JNINativeMethod);
}
-
--- 1490,1494 ----
< prev index next >