< prev index next >

src/hotspot/share/gc/shenandoah/c2/shenandoahBarrierSetC2.cpp

Print this page
rev 53149 : [mq]: flatten-alias-types.patch


1004         n->del_req(cnt);
1005         if (can_reshape) {
1006           phase->is_IterGVN()->_worklist.push(addp);
1007         }
1008         return n;
1009       }
1010     }
1011   }
1012   return NULL;
1013 }
1014 
1015 bool ShenandoahBarrierSetC2::has_only_shenandoah_wb_pre_uses(Node* n) {
1016   for (DUIterator_Fast imax, i = n->fast_outs(imax); i < imax; i++) {
1017     Node* u = n->fast_out(i);
1018     if (!is_shenandoah_wb_pre_call(u)) {
1019       return false;
1020     }
1021   }
1022   return n->outcnt() > 0;
1023 }
















1004         n->del_req(cnt);
1005         if (can_reshape) {
1006           phase->is_IterGVN()->_worklist.push(addp);
1007         }
1008         return n;
1009       }
1010     }
1011   }
1012   return NULL;
1013 }
1014 
1015 bool ShenandoahBarrierSetC2::has_only_shenandoah_wb_pre_uses(Node* n) {
1016   for (DUIterator_Fast imax, i = n->fast_outs(imax); i < imax; i++) {
1017     Node* u = n->fast_out(i);
1018     if (!is_shenandoah_wb_pre_call(u)) {
1019       return false;
1020     }
1021   }
1022   return n->outcnt() > 0;
1023 }
1024 
1025 bool ShenandoahBarrierSetC2::flatten_gc_alias_type(const TypePtr*& adr_type) const {
1026   int offset = adr_type->offset();
1027   if (offset == BrooksPointer::byte_offset()) {
1028     if (adr_type->isa_aryptr()) {
1029       adr_type = TypeAryPtr::make(adr_type->ptr(), adr_type->isa_aryptr()->ary(), adr_type->isa_aryptr()->klass(), false, offset);
1030     } else if (adr_type->isa_instptr()) {
1031       adr_type = TypeInstPtr::make(adr_type->ptr(), ciEnv::current()->Object_klass(), false, NULL, offset);
1032     }
1033     return true;
1034   } else {
1035     return false;
1036   }
1037 }
< prev index next >