For example, enabling Epsilon would result in this:
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/home/shade/trunks/jdkX-epsilon/src/hotspot/share/gc/shared/barrierSet.hpp:276), pid=14305, tid=14383
# assert(bs->is_a(BarrierSet::GetName<T>::value)) failed: wrong type of barrier set
Current thread (0x000014aed419a800): JavaThread "C1 CompilerThread8" daemon [_thread_in_vm, id=14383, stack(0x000014aed8c7e000,0x000014aed8d7f000)]
Stack: [0x000014aed8c7e000,0x000014aed8d7f000], sp=0x000014aed8d7d210, free space=1020k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x16d0bba] VMError::report_and_die(int, char const*, char const*, __va_list_tag*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long)+0x4ea
V [libjvm.so+0x16d189f] VMError::report_and_die(Thread*, char const*, int, char const*, char const*, __va_list_tag*)+0x2f
V [libjvm.so+0xaa99e2] report_vm_error(char const*, int, char const*, char const*, ...)+0x112
V [libjvm.so+0x90a41a] ci_card_table_address()+0x5a
V [libjvm.so+0x811feb] Runtime1::generate_code_for(Runtime1::StubID, StubAssembler*)+0x1a2b
V [libjvm.so+0x7fabf5] Runtime1::generate_blob_for(BufferBlob*, Runtime1::StubID)+0x1f5
V [libjvm.so+0x7fb01d] Runtime1::initialize(BufferBlob*)+0x3d
V [libjvm.so+0x70e8f9] Compiler::initialize()+0x229
V [libjvm.so+0xa139f4] CompileBroker::init_compiler_runtime()+0x3b4
V [libjvm.so+0xa19925] CompileBroker::compiler_thread_loop()+0x1f5
V [libjvm.so+0x161bb82] JavaThread::thread_main_inner()+0x2f2
V [libjvm.so+0x161be98] JavaThread::run()+0x268
V [libjvm.so+0x134c9b2] thread_native_entry(Thread*)+0x112
The solution is, as with g1_pre_barrier_slow_id, to check the barrier set enabled before generating the stub.
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (/home/shade/trunks/jdkX-epsilon/src/hotspot/share/gc/shared/barrierSet.hpp:276), pid=14305, tid=14383
# assert(bs->is_a(BarrierSet::GetName<T>::value)) failed: wrong type of barrier set
Current thread (0x000014aed419a800): JavaThread "C1 CompilerThread8" daemon [_thread_in_vm, id=14383, stack(0x000014aed8c7e000,0x000014aed8d7f000)]
Stack: [0x000014aed8c7e000,0x000014aed8d7f000], sp=0x000014aed8d7d210, free space=1020k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x16d0bba] VMError::report_and_die(int, char const*, char const*, __va_list_tag*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long)+0x4ea
V [libjvm.so+0x16d189f] VMError::report_and_die(Thread*, char const*, int, char const*, char const*, __va_list_tag*)+0x2f
V [libjvm.so+0xaa99e2] report_vm_error(char const*, int, char const*, char const*, ...)+0x112
V [libjvm.so+0x90a41a] ci_card_table_address()+0x5a
V [libjvm.so+0x811feb] Runtime1::generate_code_for(Runtime1::StubID, StubAssembler*)+0x1a2b
V [libjvm.so+0x7fabf5] Runtime1::generate_blob_for(BufferBlob*, Runtime1::StubID)+0x1f5
V [libjvm.so+0x7fb01d] Runtime1::initialize(BufferBlob*)+0x3d
V [libjvm.so+0x70e8f9] Compiler::initialize()+0x229
V [libjvm.so+0xa139f4] CompileBroker::init_compiler_runtime()+0x3b4
V [libjvm.so+0xa19925] CompileBroker::compiler_thread_loop()+0x1f5
V [libjvm.so+0x161bb82] JavaThread::thread_main_inner()+0x2f2
V [libjvm.so+0x161be98] JavaThread::run()+0x268
V [libjvm.so+0x134c9b2] thread_native_entry(Thread*)+0x112
The solution is, as with g1_pre_barrier_slow_id, to check the barrier set enabled before generating the stub.