RFR (XS) 8022283: Assertion failed: assert(is_loaded() && field->holder()->is_loaded() && klass()->is_subclass_of (field->holder())) failed: invalid access

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Tue Aug 20 09:28:13 PDT 2013


Rickard,

As a cleanup, can you split failing assert in 3 different asserts?

ciConstant ciInstance::field_value(ciField* field) {
   assert(is_loaded() &&
          field->holder()->is_loaded() &&
          klass()->is_subclass_of(field->holder()),
          "invalid access");


Otherwise, looks good (not a Reviewer).

Best regards,
Vladimir Ivanov

On 8/20/13 8:04 PM, Rickard Bäckman wrote:
> http://cr.openjdk.java.net/~rbackman/8022283/
> http://bugs.sun.com/view_bug.do?bug_id=8022283
>
> Add a check that verifies that the constant is "is_loaded".
>
> Comment from ciObject.hpp
>
>    // Note: some ciObjects refer to oops which have yet to be created.
>    // We refer to these as "unloaded".  Specifically, there are
>    // unloaded instances of java.lang.Class,
>    // java.lang.invoke.MethodHandle, and java.lang.invoke.MethodType.
>    // By convention the ciNullObject is considered loaded, and
>    // primitive types are considered loaded.
>
> In this case we had a java.lang.invoke.MethodType.
>
> <ciField name=java/lang/invoke/MethodHandle.type signature=Ljava/lang/invoke/MethodType; offset=12 type=java/lang/invoke/MethodType is_constant=true>$1 = void
>
> Thanks
> /R
>


More information about the hotspot-compiler-dev mailing list