--- old/src/share/vm/oops/instanceRefKlass.inline.hpp 2016-01-24 11:21:56.010729283 +0100 +++ new/src/share/vm/oops/instanceRefKlass.inline.hpp 2016-01-24 11:21:55.934730592 +0100 @@ -67,6 +67,13 @@ if (contains(next_addr)) { Devirtualizer::do_oop(closure, next_addr); } + // treat value as normal oop if Ephemeron + if (reference_type() == REF_EPHEMERON) { + T* value_addr = (T*)java_lang_ref_Ephemeron::value_addr(obj); + if (contains(value_addr)) { + Devirtualizer::do_oop(closure, value_addr); + } + } } class AlwaysContains {