--- old/src/hotspot/share/ci/ciEnv.cpp 2018-07-14 12:59:51.708093212 -0700 +++ new/src/hotspot/share/ci/ciEnv.cpp 2018-07-14 12:59:51.308077879 -0700 @@ -853,6 +853,19 @@ : !m->method_holder()->is_loaded())) { m = NULL; } + if (m != NULL && EnableValhalla) { + // Cannot call a method if its holder class has an inconsistent + // declaration of ValueTypes vs the caller's class. + InstanceKlass* caller_klass = _task->method()->method_holder(); + InstanceKlass* callee_klass = m->method_holder(); + Thread* THREAD = Thread::current(); + InstanceKlass::check_signature_for_value_types_consistency( + m->signature(), caller_klass, callee_klass, THREAD); + if (HAS_PENDING_EXCEPTION) { + CLEAR_PENDING_EXCEPTION; + m = NULL; + } + } #ifdef ASSERT if (m != NULL && ReplayCompiles && !ciReplay::is_loaded(m)) { m = NULL;