< prev index next >

src/hotspot/share/ci/ciEnv.cpp

Print this page

*** 851,860 **** --- 851,873 ---- (bc == Bytecodes::_invokestatic ? m->method_holder()->is_not_initialized() : !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; } #endif
< prev index next >