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 Fri Jun 16 14:34:20 2017
--- new/src/share/vm/ci/bcEscapeAnalyzer.cpp Fri Jun 16 14:34:20 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