changeset 3015:9a28ddfc1f4a

7123910: Some CTW tests crash VM: is_loaded() && that->is_loaded() Summary: handle not loaded array klass in Parse::do_checkcast(). Reviewed-by: kvn, never
author roland
date Thu, 26 Jan 2012 09:38:28 +0100
parents 94f0ce74d48e
children 5dbed2f542ff
files src/share/vm/opto/parseHelper.cpp
diffstat 1 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/opto/parseHelper.cpp	Wed Jan 25 08:10:04 2012 -0800
+++ b/src/share/vm/opto/parseHelper.cpp	Thu Jan 26 09:38:28 2012 +0100
@@ -71,14 +71,14 @@
   // Throw uncommon trap if class is not loaded or the value we are casting
   // _from_ is not loaded, and value is not null.  If the value _is_ NULL,
   // then the checkcast does nothing.
-  const TypeInstPtr *tp = _gvn.type(obj)->isa_instptr();
-  if (!will_link || (tp && !tp->is_loaded())) {
+  const TypeOopPtr *tp = _gvn.type(obj)->isa_oopptr();
+  if (!will_link || (tp && tp->klass() && !tp->klass()->is_loaded())) {
     if (C->log() != NULL) {
       if (!will_link) {
         C->log()->elem("assert_null reason='checkcast' klass='%d'",
                        C->log()->identify(klass));
       }
-      if (tp && !tp->is_loaded()) {
+      if (tp && tp->klass() && !tp->klass()->is_loaded()) {
         // %%% Cannot happen?
         C->log()->elem("assert_null reason='checkcast source' klass='%d'",
                        C->log()->identify(tp->klass()));