diff -r ef8a98bc71f8 -r c4d9d1b08e2e src/hotspot/share/interpreter/bytecode.cpp --- a/src/hotspot/share/interpreter/bytecode.cpp Wed Jan 31 10:55:49 2018 -0800 +++ b/src/hotspot/share/interpreter/bytecode.cpp Fri Sep 08 10:46:46 2017 -0700 @@ -207,8 +207,7 @@ BasicType Bytecode_loadconstant::result_type() const { int index = pool_index(); - constantTag tag = _method->constants()->tag_at(index); - return tag.basic_type(); + return _method->constants()->basic_type_for_constant_at(index); } oop Bytecode_loadconstant::resolve_constant(TRAPS) const { @@ -217,6 +216,8 @@ ConstantPool* constants = _method->constants(); if (has_cache_index()) { return constants->resolve_cached_constant_at(index, THREAD); + } else if (_method->constants()->tag_at(index).is_dynamic_constant()) { + return constants->resolve_possibly_cached_constant_at(index, THREAD); } else { return constants->resolve_constant_at(index, THREAD); }