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 }
|