--- old/src/hotspot/share/runtime/javaCalls.cpp 2017-10-31 09:39:55.305005448 -0400 +++ new/src/hotspot/share/runtime/javaCalls.cpp 2017-10-31 09:39:55.077004317 -0400 @@ -31,6 +31,7 @@ #include "interpreter/linkResolver.hpp" #include "memory/universe.inline.hpp" #include "oops/oop.inline.hpp" +#include "oops/valueKlass.hpp" #include "prims/jniCheck.hpp" #include "runtime/compilationPolicy.hpp" #include "runtime/handles.inline.hpp" @@ -147,7 +148,14 @@ void JavaCallWrapper::oops_do(OopClosure* f) { - f->do_oop((oop*)&_receiver); + if (!VTBuffer::is_in_vt_buffer(_receiver)) { + f->do_oop((oop*)&_receiver); + } else { + assert(_receiver->is_value(), "Sanity check"); + BufferedValuesDealiaser* dealiaser = Thread::current()->buffered_values_dealiaser(); + assert(dealiaser != NULL, "Sanity check"); + dealiaser->oops_do(f, _receiver); + } handles()->oops_do(f); }