RFR(L): 8185265 [MVT] improve performance of return of value types with new calling convention
Roland Westrelin
rwestrel at redhat.com
Fri Aug 11 07:01:31 UTC 2017
Thanks for investigating the failure.
> I added some debug print statements and the klass we are deallocating is
> javasoft/sqe/tests/vm/classfmt/clf/clfacc006/clfacc00602m1/clfacc00602m10p which is obviously not a value klass.
>
> I guess the problem then is that pack_handler() is != NULL because it was never initialized to NULL and we try to free a
> non-existing buffer blob.
>From the stack trace you sent before we get there from:
void ClassLoaderData::value_classes_do(void f(ValueKlass*)) {
// Lock-free access requires load_ptr_acquire
for (Klass* k = load_ptr_acquire(&_klasses); k != NULL; k = k->next_link()) {
if (k->is_value()) {
f(ValueKlass::cast(k));
}
assert(k != k->next_link(), "no loops!");
}
}
Why does is_value() returns true for this klass?
Roland.
More information about the valhalla-dev
mailing list