Tue, 20 Aug 2013 09:37:01 +0200
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();