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

Tue, 20 Aug 2013 09:37:01 +0200

author
rbackman
date
Tue, 20 Aug 2013 09:37:01 +0200
changeset 5633
59982ff9e0ec
parent 5629
e1fbb86b47e4
child 5634
58e010ab2d06

8022283: Assertion failed: assert(is_loaded() && field->holder()->is_loaded() && klass()->is_subclass_of (field->holder())) failed: invalid access
Reviewed-by: roland, twisti

src/share/vm/c1/c1_GraphBuilder.cpp file | annotate | diff | comparison | revisions
src/share/vm/ci/ciInstance.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/vm/c1/c1_GraphBuilder.cpp	Mon Aug 26 16:12:20 2013 +0200
     1.2 +++ b/src/share/vm/c1/c1_GraphBuilder.cpp	Tue Aug 20 09:37:01 2013 +0200
     1.3 @@ -1583,7 +1583,7 @@
     1.4        ObjectType* obj_type = obj->type()->as_ObjectType();
     1.5        if (obj_type->is_constant() && !PatchALot) {
     1.6          ciObject* const_oop = obj_type->constant_value();
     1.7 -        if (!const_oop->is_null_object()) {
     1.8 +        if (!const_oop->is_null_object() && const_oop->is_loaded()) {
     1.9            if (field->is_constant()) {
    1.10              ciConstant field_val = field->constant_value_of(const_oop);
    1.11              BasicType field_type = field_val.basic_type();
     2.1 --- a/src/share/vm/ci/ciInstance.cpp	Mon Aug 26 16:12:20 2013 +0200
     2.2 +++ b/src/share/vm/ci/ciInstance.cpp	Tue Aug 20 09:37:01 2013 +0200
     2.3 @@ -60,10 +60,10 @@
     2.4  //
     2.5  // Constant value of a field.
     2.6  ciConstant ciInstance::field_value(ciField* field) {
     2.7 -  assert(is_loaded() &&
     2.8 -         field->holder()->is_loaded() &&
     2.9 -         klass()->is_subclass_of(field->holder()),
    2.10 -         "invalid access");
    2.11 +  assert(is_loaded(), "invalid access - must be loaded");
    2.12 +  assert(field->holder()->is_loaded(), "invalid access - holder must be loaded");
    2.13 +  assert(klass()->is_subclass_of(field->holder()), "invalid access - must be subclass");
    2.14 +
    2.15    VM_ENTRY_MARK;
    2.16    ciConstant result;
    2.17    Handle obj = get_oop();

mercurial