Mercurial > hg > graal-jvmci-8
diff src/share/vm/ci/ciEnv.cpp @ 1336:0c3f888b7636
6626217: Fixed loader constraint array handling
Summary: Loader constraints track array elements, not arrays themselves.
Reviewed-by: dcubed, kevinw
author | acorn |
---|---|
date | Tue, 19 Jan 2010 16:03:09 -0500 |
parents | 148e5441d916 |
children | f5dd08ad65df |
line wrap: on
line diff
--- a/src/share/vm/ci/ciEnv.cpp Thu Dec 03 14:20:22 2009 -0800 +++ b/src/share/vm/ci/ciEnv.cpp Tue Jan 19 16:03:09 2010 -0500 @@ -375,30 +375,6 @@ return get_object(found_klass)->as_klass(); } - // If we fail to find an array klass, look again for its element type. - // The element type may be available either locally or via constraints. - // In either case, if we can find the element type in the system dictionary, - // we must build an array type around it. The CI requires array klasses - // to be loaded if their element klasses are loaded, except when memory - // is exhausted. - if (sym->byte_at(0) == '[' && - (sym->byte_at(1) == '[' || sym->byte_at(1) == 'L')) { - // We have an unloaded array. - // Build it on the fly if the element class exists. - symbolOop elem_sym = oopFactory::new_symbol(sym->as_utf8()+1, - sym->utf8_length()-1, - KILL_COMPILE_ON_FATAL_(fail_type)); - // Get element ciKlass recursively. - ciKlass* elem_klass = - get_klass_by_name_impl(accessing_klass, - get_object(elem_sym)->as_symbol(), - require_local); - if (elem_klass != NULL && elem_klass->is_loaded()) { - // Now make an array for it - return ciObjArrayKlass::make_impl(elem_klass); - } - } - if (require_local) return NULL; // Not yet loaded into the VM, or not governed by loader constraints. // Make a CI representative for it.