Mercurial > hg > graal-jvmci-8
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 |