src/share/vm/ci/bcEscapeAnalyzer.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/vm/ci/bcEscapeAnalyzer.cpp	Wed Jun 14 17:41:30 2017
--- new/src/share/vm/ci/bcEscapeAnalyzer.cpp	Wed Jun 14 17:41:29 2017

*** 551,569 **** --- 551,579 ---- ArgumentMap arr = state.apop(); set_method_escape(arr); set_modified(arr, OFFSET_ANY, type2size[T_LONG]*HeapWordSize); break; } case Bytecodes::_vastore: case Bytecodes::_aastore: { set_global_escape(state.apop()); state.spop(); ArgumentMap arr = state.apop(); set_modified(arr, OFFSET_ANY, type2size[T_OBJECT]*HeapWordSize); break; } + case Bytecodes::_vastore: + { + set_global_escape(state.apop()); + state.spop(); + ArgumentMap arr = state.apop(); + // If the array is flattened, a larger part of it is modified than + // the size of a reference. However, if OFFSET_ANY is given as + // parameter to set_modified(), size is not taken into account. + set_modified(arr, OFFSET_ANY, type2size[T_VALUETYPE]*HeapWordSize); + break; + } case Bytecodes::_pop: state.raw_pop(); break; case Bytecodes::_pop2: state.raw_pop();

src/share/vm/ci/bcEscapeAnalyzer.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File