src/share/vm/opto/library_call.cpp

changeset 2667
0e3ed5a14f73
parent 2661
b099aaf51bf8
parent 2665
9dc311b8473e
child 2687
3d58a4983660
child 2781
e1162778c1c8
     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));

mercurial