Using C++11+ in hotspot
Martin Buchholz
martinrb at google.com
Sat Aug 11 00:41:27 UTC 2018
OK, it looks like -fno-strict-aliasing is here to stay. Casting freely
between pointers to different types is pervasive in the source code, and
there's insufficient discipline in the culture to try to fix it. And I'm
not volunteering.
static void pd_arrayof_conjoint_jlongs(const HeapWord* from, HeapWord* to,
size_t count) {
#ifdef AMD64
_Copy_arrayof_conjoint_jlongs(from, to, count);
#else
pd_conjoint_jlongs_atomic((const jlong*)from, (jlong*)to, count);
#endif // AMD64
}
static void pd_arrayof_conjoint_oops(const HeapWord* from, HeapWord* to,
size_t count) {
#ifdef AMD64
assert(BytesPerLong == BytesPerOop, "jlongs and oops must be the same
size");
_Copy_arrayof_conjoint_jlongs(from, to, count);
#else
pd_conjoint_oops_atomic((const oop*)from, (oop*)to, count);
#endif // AMD64
}
On Fri, Aug 10, 2018 at 5:59 AM, Andrew Haley <aph at redhat.com> wrote:
> On 08/08/2018 08:51 PM, Martin Buchholz wrote:
> > I'd like to see hotspot stop using the -fno-strict-aliasing curtch,
> > replacing it with union and/or may_alias, but this is a serious
> investment.
>
> It's a serious investment, and we'd risk breaking stuff. At least the
> entire
> heap would have to be an array with elements which are a union of all of
> the
> possible types, and there'd be a byte array overlaid on top of that. It
> would
> not be pretty.
More information about the workshop-discuss
mailing list