mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-25 05:45:11 +02:00
8026049: (bf) Intrinsify ByteBuffer.put{Int, Double, Float, ...} methods
Use unaligned Unsafe loads and stores for ByteBuffer access on platforms which support unaligned access. Add intrinsics for Unsafe.{get,put}-X-Unaligned methods. Reviewed-by: dholmes, jrose, psandoz, kvn
This commit is contained in:
parent
61aa1cfdef
commit
1dfbc44c1f
11 changed files with 486 additions and 7 deletions
|
@ -3462,6 +3462,24 @@ bool GraphBuilder::try_inline_intrinsics(ciMethod* callee) {
|
|||
case vmIntrinsics::_putFloat : return append_unsafe_put_obj(callee, T_FLOAT, false);
|
||||
case vmIntrinsics::_putDouble : return append_unsafe_put_obj(callee, T_DOUBLE, false);
|
||||
|
||||
case vmIntrinsics::_getShortUnaligned :
|
||||
return UseUnalignedAccesses ? append_unsafe_get_obj(callee, T_SHORT, false) : false;
|
||||
case vmIntrinsics::_getCharUnaligned :
|
||||
return UseUnalignedAccesses ? append_unsafe_get_obj(callee, T_CHAR, false) : false;
|
||||
case vmIntrinsics::_getIntUnaligned :
|
||||
return UseUnalignedAccesses ? append_unsafe_get_obj(callee, T_INT, false) : false;
|
||||
case vmIntrinsics::_getLongUnaligned :
|
||||
return UseUnalignedAccesses ? append_unsafe_get_obj(callee, T_LONG, false) : false;
|
||||
|
||||
case vmIntrinsics::_putShortUnaligned :
|
||||
return UseUnalignedAccesses ? append_unsafe_put_obj(callee, T_SHORT, false) : false;
|
||||
case vmIntrinsics::_putCharUnaligned :
|
||||
return UseUnalignedAccesses ? append_unsafe_put_obj(callee, T_CHAR, false) : false;
|
||||
case vmIntrinsics::_putIntUnaligned :
|
||||
return UseUnalignedAccesses ? append_unsafe_put_obj(callee, T_INT, false) : false;
|
||||
case vmIntrinsics::_putLongUnaligned :
|
||||
return UseUnalignedAccesses ? append_unsafe_put_obj(callee, T_LONG, false) : false;
|
||||
|
||||
case vmIntrinsics::_getObjectVolatile : return append_unsafe_get_obj(callee, T_OBJECT, true);
|
||||
case vmIntrinsics::_getBooleanVolatile: return append_unsafe_get_obj(callee, T_BOOLEAN, true);
|
||||
case vmIntrinsics::_getByteVolatile : return append_unsafe_get_obj(callee, T_BYTE, true);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue