--- old/src/share/vm/jvmci/jvmciCompilerToVM.cpp 2017-04-25 16:45:15.911173768 +0200 +++ new/src/share/vm/jvmci/jvmciCompilerToVM.cpp 2017-04-25 16:45:15.767173773 +0200 @@ -32,6 +32,7 @@ #include "oops/fieldStreams.hpp" #include "oops/oop.inline.hpp" #include "oops/objArrayOop.inline.hpp" +#include "oops/typeArrayOop.inline.hpp" #include "runtime/fieldDescriptor.hpp" #include "runtime/javaCalls.hpp" #include "jvmci/jvmciRuntime.hpp" @@ -47,6 +48,7 @@ #include "jvmci/jvmciCodeInstaller.hpp" #include "jvmci/vmStructs_jvmci.hpp" #include "gc/g1/heapRegion.hpp" +#include "gc/shared/cardTable.hpp" #include "runtime/javaCalls.hpp" #include "runtime/deoptimization.hpp" #include "runtime/timerTrace.hpp" @@ -203,26 +205,15 @@ symbol_clinit = (address) vmSymbols::class_initializer_name(); 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(bs)->byte_map_base; + if (bs->is_a(BarrierSet::CardTableModRef)) { + jbyte* base = barrier_set_cast(bs)->card_table()->byte_map_base(); assert(base != 0, "unexpected byte_map_base"); cardtable_start_address = base; - cardtable_shift = CardTableModRefBS::card_shift; - break; - } - case BarrierSet::ModRef: + cardtable_shift = CardTable::card_shift; + } else { + // No card mark barriers cardtable_start_address = 0; cardtable_shift = 0; - // No post barriers - break; - default: - JVMCI_ERROR("Unsupported BarrierSet kind %d", bs->kind()); - break; } vm_page_size = os::vm_page_size();