1.1 --- a/src/share/vm/opto/library_call.cpp Thu Mar 24 23:00:27 2011 -0700 1.2 +++ b/src/share/vm/opto/library_call.cpp Thu Mar 24 23:04:36 2011 -0700 1.3 @@ -1101,6 +1101,8 @@ 1.4 float likely = PROB_LIKELY(0.9); 1.5 float unlikely = PROB_UNLIKELY(0.9); 1.6 1.7 + const int nargs = 2; // number of arguments to push back for uncommon trap in predicate 1.8 + 1.9 const int value_offset = java_lang_String::value_offset_in_bytes(); 1.10 const int count_offset = java_lang_String::count_offset_in_bytes(); 1.11 const int offset_offset = java_lang_String::offset_offset_in_bytes(); 1.12 @@ -1138,12 +1140,12 @@ 1.13 Node* return_ = __ make_label(1); 1.14 1.15 __ set(rtn,__ ConI(-1)); 1.16 - __ loop(i, sourceOffset, BoolTest::lt, sourceEnd); { 1.17 + __ loop(this, nargs, i, sourceOffset, BoolTest::lt, sourceEnd); { 1.18 Node* i2 = __ AddI(__ value(i), targetCountLess1); 1.19 // pin to prohibit loading of "next iteration" value which may SEGV (rare) 1.20 Node* src = load_array_element(__ ctrl(), source, i2, TypeAryPtr::CHARS); 1.21 __ if_then(src, BoolTest::eq, lastChar, unlikely); { 1.22 - __ loop(j, zero, BoolTest::lt, targetCountLess1); { 1.23 + __ loop(this, nargs, j, zero, BoolTest::lt, targetCountLess1); { 1.24 Node* tpj = __ AddI(targetOffset, __ value(j)); 1.25 Node* targ = load_array_element(no_ctrl, target, tpj, target_type); 1.26 Node* ipj = __ AddI(__ value(i), __ value(j));