--- old/src/hotspot/share/classfile/javaClasses.cpp 2019-08-12 15:52:28.000000000 -0700 +++ new/src/hotspot/share/classfile/javaClasses.cpp 2019-08-12 15:52:28.000000000 -0700 @@ -2677,14 +2677,14 @@ Method* method = java_lang_StackFrameInfo::get_method(stackFrame, holder, CHECK); short version = stackFrame->short_field(_version_offset); - short bci = stackFrame->short_field(_bci_offset); + int bci = stackFrame->int_field(_bci_offset); Symbol* name = method->name(); java_lang_StackTraceElement::fill_in(stack_trace_element, holder, method, version, bci, name, CHECK); } #define STACKFRAMEINFO_FIELDS_DO(macro) \ macro(_memberName_offset, k, "memberName", object_signature, false); \ - macro(_bci_offset, k, "bci", short_signature, false) + macro(_bci_offset, k, "bci", int_signature, false) void java_lang_StackFrameInfo::compute_offsets() { InstanceKlass* k = SystemDictionary::StackFrameInfo_klass(); @@ -4224,7 +4224,8 @@ } void java_lang_StackFrameInfo::set_bci(oop element, int value) { - element->int_field_put(_bci_offset, value); + // write value+1 to StackFrameInfo::bci field, <= 0 indicates invalid BCI + element->int_field_put(_bci_offset, value+1); } void java_lang_LiveStackFrameInfo::set_monitors(oop element, oop value) {