8057758: Tests run TypeProfileLevel=222 crash with guarantee(0) failed: must find derived/base pair
authorroland
Tue, 09 Sep 2014 15:47:18 -0700
changeset 26584 43335aea982b
parent 26583 2ef7b85da46b
child 26585 2048b8d90c91
8057758: Tests run TypeProfileLevel=222 crash with guarantee(0) failed: must find derived/base pair Summary: Use TypeAryPtr::INT type with offset 0 in inline_multiplyToLen(). Reviewed-by: kvn, iveresov
hotspot/src/share/vm/opto/library_call.cpp
--- a/hotspot/src/share/vm/opto/library_call.cpp	Tue Sep 09 16:14:40 2014 +0200
+++ b/hotspot/src/share/vm/opto/library_call.cpp	Tue Sep 09 15:47:18 2014 -0700
@@ -4968,7 +4968,8 @@
 
     // Allocate the result array
     Node* zlen = _gvn.transform(new AddINode(xlen, ylen));
-    Node* klass_node = makecon(TypeKlassPtr::make(ciTypeArrayKlass::make(T_INT)));
+    ciKlass* klass = ciTypeArrayKlass::make(T_INT);
+    Node* klass_node = makecon(TypeKlassPtr::make(klass));
 
     IdealKit ideal(this);
 
@@ -5002,7 +5003,8 @@
 
      sync_kit(ideal);
      z = __ value(z_alloc);
-     _gvn.set_type(z, TypeAryPtr::INTS);
+     // Can't use TypeAryPtr::INTS which uses Bottom offset.
+     _gvn.set_type(z, TypeOopPtr::make_from_klass(klass));
      // Final sync IdealKit and GraphKit.
      final_sync(ideal);
 #undef __