diff src/share/vm/opto/parse2.cpp @ 113:ba764ed4b6f2

6420645: Create a vm that uses compressed oops for up to 32gb heapsizes Summary: Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
author coleenp
date Sun, 13 Apr 2008 17:43:42 -0400
parents 73970d8c0b27
children c0939256690b
line wrap: on
line diff
--- a/src/share/vm/opto/parse2.cpp	Fri Apr 11 09:56:35 2008 -0400
+++ b/src/share/vm/opto/parse2.cpp	Sun Apr 13 17:43:42 2008 -0400
@@ -67,12 +67,16 @@
   const Type*       elemtype = arytype->elem();
 
   if (UseUniqueSubclasses && result2 != NULL) {
-    const TypeInstPtr* toop = elemtype->isa_instptr();
+    const Type* el = elemtype;
+    if (elemtype->isa_narrowoop()) {
+      el = elemtype->is_narrowoop()->make_oopptr();
+    }
+    const TypeInstPtr* toop = el->isa_instptr();
     if (toop) {
       if (toop->klass()->as_instance_klass()->unique_concrete_subklass()) {
         // If we load from "AbstractClass[]" we must see "ConcreteSubClass".
         const Type* subklass = Type::get_const_type(toop->klass());
-        elemtype = subklass->join(elemtype);
+        elemtype = subklass->join(el);
       }
     }
   }