src/share/vm/opto/parse2.cpp

changeset 548
ba764ed4b6f2
parent 472
73970d8c0b27
child 564
c0939256690b
     1.1 --- a/src/share/vm/opto/parse2.cpp	Fri Apr 11 09:56:35 2008 -0400
     1.2 +++ b/src/share/vm/opto/parse2.cpp	Sun Apr 13 17:43:42 2008 -0400
     1.3 @@ -67,12 +67,16 @@
     1.4    const Type*       elemtype = arytype->elem();
     1.5  
     1.6    if (UseUniqueSubclasses && result2 != NULL) {
     1.7 -    const TypeInstPtr* toop = elemtype->isa_instptr();
     1.8 +    const Type* el = elemtype;
     1.9 +    if (elemtype->isa_narrowoop()) {
    1.10 +      el = elemtype->is_narrowoop()->make_oopptr();
    1.11 +    }
    1.12 +    const TypeInstPtr* toop = el->isa_instptr();
    1.13      if (toop) {
    1.14        if (toop->klass()->as_instance_klass()->unique_concrete_subklass()) {
    1.15          // If we load from "AbstractClass[]" we must see "ConcreteSubClass".
    1.16          const Type* subklass = Type::get_const_type(toop->klass());
    1.17 -        elemtype = subklass->join(elemtype);
    1.18 +        elemtype = subklass->join(el);
    1.19        }
    1.20      }
    1.21    }

mercurial