src/share/vm/opto/library_call.cpp

changeset 1831
d7f654633cfe
parent 1587
cd37471eaecc
child 1851
e8e83be27dd7
child 1859
ae8f909e5fc7
     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    }

mercurial