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

Rickard Bäckman rickard.backman at oracle.com
Tue Aug 20 10:44:18 PDT 2013


Chris, thanks for the review.
I'll do the change.

/R

On Aug 20, 2013, at 7:37 PM, Christian Thalinger wrote:

> 
> On Aug 20, 2013, at 9:28 AM, Vladimir Ivanov <vladimir.x.ivanov at oracle.com> wrote:
> 
>> Rickard,
> 
> Looks good.
> 
>> 
>> 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");
> 
> Right.  I remember we talked about this.  Rickard, can you do this change?
> 
> -- Chris
> 
>> 
>> 
>> 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