# HG changeset patch # User roland # Date 1366789328 -7200 # Node ID 6a3629cf7075d5bf7ac2614a00947f98129a78bc # Parent 35c15dad89ea513b435fe628d1d18e38e14cb1cb 8011771: runThese crashed with EAV Summary: Array bound check elimination's in block motion doesn't always reset its data structures from one step to the other. Reviewed-by: kvn, twisti diff -r 35c15dad89ea -r 6a3629cf7075 src/share/vm/c1/c1_RangeCheckElimination.cpp --- a/src/share/vm/c1/c1_RangeCheckElimination.cpp Tue Apr 16 17:06:39 2013 +0200 +++ b/src/share/vm/c1/c1_RangeCheckElimination.cpp Wed Apr 24 09:42:08 2013 +0200 @@ -459,7 +459,7 @@ // Iterate over all different indices if (_optimistic) { - for (int i=0; iid()]; assert(info != NULL, "Info must not be null"); @@ -531,9 +531,7 @@ remove_range_check(ai); } } - _access_indexed_info[index_instruction->id()] = NULL; } - indices.clear(); if (list_constant.length() > 1) { AccessIndexed *first = list_constant.at(0); @@ -560,6 +558,13 @@ } } } + + // Clear data structures for next array + for (int i = 0; i < indices.length(); i++) { + Instruction *index_instruction = indices.at(i); + _access_indexed_info[index_instruction->id()] = NULL; + } + indices.clear(); } }