comparison src/share/vm/opto/graphKit.cpp @ 950:8fe1963e3964

6875577: CTW fails with /hotspot/src/share/vm/opto/memnode.cpp Summary: Fix do_null_check to check for unloaded klass for all oop pointers. Reviewed-by: never, cfang
author kvn
date Fri, 28 Aug 2009 11:19:33 -0700
parents 9987d9d5eb0e
children 0f1c19b7a52d
comparison
equal deleted inserted replaced
949:489a4f8dcd0f 950:8fe1963e3964
620 assert(kit->stopped(), "cutout code must stop, throw, return, etc."); 620 assert(kit->stopped(), "cutout code must stop, throw, return, etc.");
621 } 621 }
622 622
623 //---------------------------PreserveReexecuteState---------------------------- 623 //---------------------------PreserveReexecuteState----------------------------
624 PreserveReexecuteState::PreserveReexecuteState(GraphKit* kit) { 624 PreserveReexecuteState::PreserveReexecuteState(GraphKit* kit) {
625 assert(!kit->stopped(), "must call stopped() before");
625 _kit = kit; 626 _kit = kit;
626 _sp = kit->sp(); 627 _sp = kit->sp();
627 _reexecute = kit->jvms()->_reexecute; 628 _reexecute = kit->jvms()->_reexecute;
628 } 629 }
629 PreserveReexecuteState::~PreserveReexecuteState() { 630 PreserveReexecuteState::~PreserveReexecuteState() {
631 if (_kit->stopped()) return;
630 _kit->jvms()->_reexecute = _reexecute; 632 _kit->jvms()->_reexecute = _reexecute;
631 _kit->set_sp(_sp); 633 _kit->set_sp(_sp);
632 } 634 }
633 635
634 //------------------------------clone_map-------------------------------------- 636 //------------------------------clone_map--------------------------------------
1121 case T_ARRAY : // fall through 1123 case T_ARRAY : // fall through
1122 type = T_OBJECT; // simplify further tests 1124 type = T_OBJECT; // simplify further tests
1123 case T_OBJECT : { 1125 case T_OBJECT : {
1124 const Type *t = _gvn.type( value ); 1126 const Type *t = _gvn.type( value );
1125 1127
1126 const TypeInstPtr* tp = t->isa_instptr(); 1128 const TypeOopPtr* tp = t->isa_oopptr();
1127 if (tp != NULL && !tp->klass()->is_loaded() 1129 if (tp != NULL && !tp->klass()->is_loaded()
1128 // Only for do_null_check, not any of its siblings: 1130 // Only for do_null_check, not any of its siblings:
1129 && !assert_null && null_control == NULL) { 1131 && !assert_null && null_control == NULL) {
1130 // Usually, any field access or invocation on an unloaded oop type 1132 // Usually, any field access or invocation on an unloaded oop type
1131 // will simply fail to link, since the statically linked class is 1133 // will simply fail to link, since the statically linked class is