1.1 --- a/src/share/vm/opto/library_call.cpp Tue Apr 20 13:26:33 2010 -0700 1.2 +++ b/src/share/vm/opto/library_call.cpp Mon Apr 26 11:27:21 2010 -0700 1.3 @@ -636,6 +636,8 @@ 1.4 1.5 case vmIntrinsics::_reverseBytes_i: 1.6 case vmIntrinsics::_reverseBytes_l: 1.7 + case vmIntrinsics::_reverseBytes_s: 1.8 + case vmIntrinsics::_reverseBytes_c: 1.9 return inline_reverseBytes((vmIntrinsics::ID) intrinsic_id()); 1.10 1.11 case vmIntrinsics::_get_AtomicLong: 1.12 @@ -2010,13 +2012,19 @@ 1.13 return true; 1.14 } 1.15 1.16 -//----------------------------inline_reverseBytes_int/long------------------- 1.17 +//----------------------------inline_reverseBytes_int/long/char/short------------------- 1.18 // inline Integer.reverseBytes(int) 1.19 // inline Long.reverseBytes(long) 1.20 +// inline Character.reverseBytes(char) 1.21 +// inline Short.reverseBytes(short) 1.22 bool LibraryCallKit::inline_reverseBytes(vmIntrinsics::ID id) { 1.23 - assert(id == vmIntrinsics::_reverseBytes_i || id == vmIntrinsics::_reverseBytes_l, "not reverse Bytes"); 1.24 - if (id == vmIntrinsics::_reverseBytes_i && !Matcher::has_match_rule(Op_ReverseBytesI)) return false; 1.25 - if (id == vmIntrinsics::_reverseBytes_l && !Matcher::has_match_rule(Op_ReverseBytesL)) return false; 1.26 + assert(id == vmIntrinsics::_reverseBytes_i || id == vmIntrinsics::_reverseBytes_l || 1.27 + id == vmIntrinsics::_reverseBytes_c || id == vmIntrinsics::_reverseBytes_s, 1.28 + "not reverse Bytes"); 1.29 + if (id == vmIntrinsics::_reverseBytes_i && !Matcher::has_match_rule(Op_ReverseBytesI)) return false; 1.30 + if (id == vmIntrinsics::_reverseBytes_l && !Matcher::has_match_rule(Op_ReverseBytesL)) return false; 1.31 + if (id == vmIntrinsics::_reverseBytes_c && !Matcher::has_match_rule(Op_ReverseBytesUS)) return false; 1.32 + if (id == vmIntrinsics::_reverseBytes_s && !Matcher::has_match_rule(Op_ReverseBytesS)) return false; 1.33 _sp += arg_size(); // restore stack pointer 1.34 switch (id) { 1.35 case vmIntrinsics::_reverseBytes_i: 1.36 @@ -2025,6 +2033,12 @@ 1.37 case vmIntrinsics::_reverseBytes_l: 1.38 push_pair(_gvn.transform(new (C, 2) ReverseBytesLNode(0, pop_pair()))); 1.39 break; 1.40 + case vmIntrinsics::_reverseBytes_c: 1.41 + push(_gvn.transform(new (C, 2) ReverseBytesUSNode(0, pop()))); 1.42 + break; 1.43 + case vmIntrinsics::_reverseBytes_s: 1.44 + push(_gvn.transform(new (C, 2) ReverseBytesSNode(0, pop()))); 1.45 + break; 1.46 default: 1.47 ; 1.48 }