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