RFR 8191278: MappedByteBuffer bulk access memory failures are not handled gracefully
Jamsheed
jamsheed.c.m at oracle.com
Sat Jun 1 07:26:39 UTC 2019
Hi Dan,
i understand it is incorrect to assume bool(cpp compiler) implementation
above byte level.
in that case i will just put an assert.
+ BasicType doing_unsafe_access_bt = T_BYTE;
+ assert(sizeof(bool) == 1, "not implemented");
Best regards,
Jamsheed
On 31/05/19 10:34 PM, Jamsheed wrote:
>> src/hotspot/share/opto/library_call.cpp
>> In src/hotspot/share/runtime/thread.hpp:
>> L1090: volatile bool _doing_unsafe_access;
>>
>> L4220: store_to_memory(control(), doing_unsafe_access_addr,
>> intcon(1), T_BYTE, Compile::AliasIdxRaw, MemNode::unordered);
>> L4230: store_to_memory(control(), doing_unsafe_access_addr,
>> intcon(0), T_BYTE, Compile::AliasIdxRaw, MemNode::unordered);
>> Is T_BYTE a safe assumption (size wise) for writing to a C++
>> bool?
>
> Thanks for pointing this.
>
> hope [1] will work ?
[1]
+ BasicType doing_unsafe_access_bt = T_BYTE;
+ switch(sizeof(bool)) {
+ case 1: doing_unsafe_access_bt = T_BYTE; break;
+ case 2: doing_unsafe_access_bt = T_SHORT; break;
+ case 4: doing_unsafe_access_bt = T_INT; break;
+ case 8: doing_unsafe_access_bt = T_LONG; break;
+ default: ShouldNotReachHere();
+ }
// update volatile field
- store_to_memory(control(), doing_unsafe_access_addr, intcon(1),
T_BYTE, Compile::AliasIdxRaw, MemNode::unordered);
+ store_to_memory(control(), doing_unsafe_access_addr, intcon(1),
doing_unsafe_access_bt, Compile::AliasIdxRaw, MemNode::unordered);
// Call it. Note that the length argument is not scaled.
make_runtime_call(RC_LEAF|RC_NO_FP,
OptoRuntime::fast_arraycopy_Type(),
StubRoutines::unsafe_arraycopy(),
"unsafe_arraycopy",
TypeRawPtr::BOTTOM,
src, dst, size XTOP);
- store_to_memory(control(), doing_unsafe_access_addr, intcon(0),
T_BYTE, Compile::AliasIdxRaw, MemNode::unordered);
+ store_to_memory(control(), doing_unsafe_access_addr, intcon(0),
doing_unsafe_access_bt, Compile::AliasIdxRaw, MemNode::unordered);
More information about the hotspot-dev
mailing list