diff src/share/vm/opto/graphKit.cpp @ 14726:92aa6797d639

Backed out merge changeset: b51e29501f30 Backed out merge revision to its first parent (8f483e200405)
author Doug Simon <doug.simon@oracle.com>
date Mon, 24 Mar 2014 21:30:43 +0100
parents b51e29501f30
children
line wrap: on
line diff
--- a/src/share/vm/opto/graphKit.cpp	Fri Mar 21 16:36:59 2014 -0700
+++ b/src/share/vm/opto/graphKit.cpp	Mon Mar 24 21:30:43 2014 +0100
@@ -3007,28 +3007,22 @@
   }
 
   Node* cast_obj = NULL;
-  if (tk->klass_is_exact()) {
-    // The following optimization tries to statically cast the speculative type of the object
-    // (for example obtained during profiling) to the type of the superklass and then do a
-    // dynamic check that the type of the object is what we expect. To work correctly
-    // for checkcast and aastore the type of superklass should be exact.
-    const TypeOopPtr* obj_type = _gvn.type(obj)->is_oopptr();
-    // We may not have profiling here or it may not help us. If we have
-    // a speculative type use it to perform an exact cast.
-    ciKlass* spec_obj_type = obj_type->speculative_type();
-    if (spec_obj_type != NULL ||
-        (data != NULL &&
-         // Counter has never been decremented (due to cast failure).
-         // ...This is a reasonable thing to expect.  It is true of
-         // all casts inserted by javac to implement generic types.
-         data->as_CounterData()->count() >= 0)) {
-      cast_obj = maybe_cast_profiled_receiver(not_null_obj, tk->klass(), spec_obj_type, safe_for_replace);
-      if (cast_obj != NULL) {
-        if (failure_control != NULL) // failure is now impossible
-          (*failure_control) = top();
-        // adjust the type of the phi to the exact klass:
-        phi->raise_bottom_type(_gvn.type(cast_obj)->meet_speculative(TypePtr::NULL_PTR));
-      }
+  const TypeOopPtr* obj_type = _gvn.type(obj)->is_oopptr();
+  // We may not have profiling here or it may not help us. If we have
+  // a speculative type use it to perform an exact cast.
+  ciKlass* spec_obj_type = obj_type->speculative_type();
+  if (spec_obj_type != NULL ||
+      (data != NULL &&
+       // Counter has never been decremented (due to cast failure).
+       // ...This is a reasonable thing to expect.  It is true of
+       // all casts inserted by javac to implement generic types.
+       data->as_CounterData()->count() >= 0)) {
+    cast_obj = maybe_cast_profiled_receiver(not_null_obj, tk->klass(), spec_obj_type, safe_for_replace);
+    if (cast_obj != NULL) {
+      if (failure_control != NULL) // failure is now impossible
+        (*failure_control) = top();
+      // adjust the type of the phi to the exact klass:
+      phi->raise_bottom_type(_gvn.type(cast_obj)->meet_speculative(TypePtr::NULL_PTR));
     }
   }