RFR(L): 8180032: Unaligned pointer dereference in ClassFileParser
Kim Barrett
kim.barrett at oracle.com
Wed May 17 01:46:41 UTC 2017
> On May 9, 2017, at 6:40 PM, Mikael Vidstedt <mikael.vidstedt at oracle.com> wrote:
>
>
> Warning: It may be wise to stock up on coffee or tea before reading this.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8180032
> Webrev: http://cr.openjdk.java.net/~mikael/webrevs/8180032/webrev.00/hotspot/webrev/ <http://cr.openjdk.java.net/~mikael/webrevs/8180032/webrev.00/hotspot/webrev/>
Not a review, just a question.
------------------------------------------------------------------------------
src/cpu/x86/vm/bytes_x86.hpp
40 template <typename T>
41 static inline T get_native(const void* p) {
42 assert(p != NULL, "null pointer");
43
44 T x;
45
46 if (is_ptr_aligned(p, sizeof(T))) {
47 x = *(T*)p;
48 } else {
49 memcpy(&x, p, sizeof(T));
50 }
51
52 return x;
I'm looking at this and wondering if there's a good reason to not just
unconditionally use memcpy here. gcc -O will generate a single move
instruction for that on x86_64. I'm not sure what happens on 32bit
with an 8 byte value, but I suspect it will do something similarly
sensible, e.g. 2 4 byte memory to memory transfers.
------------------------------------------------------------------------------
More information about the hotspot-dev
mailing list