diff src/share/vm/opto/type.cpp @ 22943:2163da41681e

8075587: Compilation of constant array containing different sub classes crashes the JVM Summary: meet of 2 constant arrays result in bottom Reviewed-by: kvn
author roland
date Fri, 27 Mar 2015 13:47:33 +0100
parents 833b0f92429a
children 2a55e4998f0d
line wrap: on
line diff
--- a/src/share/vm/opto/type.cpp	Thu Apr 09 17:04:24 2015 -0700
+++ b/src/share/vm/opto/type.cpp	Fri Mar 27 13:47:33 2015 +0100
@@ -3950,7 +3950,9 @@
            (tap->_klass_is_exact && !tap->klass()->is_subtype_of(klass())) ||
            // 'this' is exact and super or unrelated:
            (this->_klass_is_exact && !klass()->is_subtype_of(tap->klass())))) {
-      tary = TypeAry::make(Type::BOTTOM, tary->_size, tary->_stable);
+      if (above_centerline(ptr)) {
+        tary = TypeAry::make(Type::BOTTOM, tary->_size, tary->_stable);
+      }
       return make(NotNull, NULL, tary, lazy_klass, false, off, InstanceBot);
     }