Skip to content

Commit e0ad5df

Browse files
committed
more
1 parent 7c7f035 commit e0ad5df

File tree

1 file changed

+11
-15
lines changed

1 file changed

+11
-15
lines changed

src/hotspot/share/opto/escape.cpp

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1874,7 +1874,6 @@ class DomainIterator : public StackObj {
18741874
uint _depth;
18751875
uint _first_field_pos;
18761876
const bool _is_static;
1877-
uint _null_markers;
18781877

18791878
void next_helper() {
18801879
if (_sig_cc == nullptr) {
@@ -1887,17 +1886,19 @@ class DomainIterator : public StackObj {
18871886
if (bt == T_METADATA) {
18881887
if (_depth == 0) {
18891888
_first_field_pos = _i_domain_cc;
1890-
_null_markers = 0;
18911889
}
18921890
_depth++;
18931891
} else if (bt == T_VOID && (prev_bt != T_LONG && prev_bt != T_DOUBLE)) {
18941892
_depth--;
18951893
if (_depth == 0) {
18961894
_i_domain++;
18971895
}
1898-
} else if (bt == T_BOOLEAN && prev_bt == T_METADATA && (_is_static || _i_domain > 0)) {
1899-
_null_markers++;
1900-
return;
1896+
} else if (bt == T_BOOLEAN && prev_bt == T_METADATA && (_is_static || _i_domain > 0) && _sig_cc->at(_i_sig_cc)._offset == -1) {
1897+
assert(_sig_cc->at(_i_sig_cc)._null_marker, "");
1898+
assert(_depth == 1, "");
1899+
_i_domain_cc++;
1900+
_first_field_pos = _i_domain_cc;
1901+
// return;
19011902
} else {
19021903
return;
19031904
}
@@ -1917,8 +1918,7 @@ class DomainIterator : public StackObj {
19171918
_i_sig_cc(0),
19181919
_depth(0),
19191920
_first_field_pos(0),
1920-
_is_static(call->method()->is_static()),
1921-
_null_markers(0) {
1921+
_is_static(call->method()->is_static()) {
19221922
next_helper();
19231923
}
19241924

@@ -1958,10 +1958,6 @@ class DomainIterator : public StackObj {
19581958
assert(_first_field_pos >= TypeFunc::Parms, "");
19591959
return _first_field_pos;
19601960
}
1961-
1962-
uint null_markers() const {
1963-
return _null_markers;
1964-
}
19651961
};
19661962

19671963
// Add final simple edges to graph.
@@ -2566,15 +2562,15 @@ void ConnectionGraph::process_call_arguments(CallNode *call) {
25662562
Node* arg = call->in(di.i_domain_cc());
25672563
PointsToNode* arg_ptn = ptnode_adr(arg->_idx);
25682564
assert(!call_analyzer->is_arg_returned(k) || !meth->is_scalarized_arg(k) ||
2569-
di.i_domain_cc() - di.first_field_pos() - di.null_markers() == 0 ||
2570-
call->proj_out_or_null(di.i_domain_cc() - di.first_field_pos() - di.null_markers() + TypeFunc::Parms + 1) == nullptr ||
2571-
_igvn->type(call->proj_out_or_null(di.i_domain_cc() - di.first_field_pos() - di.null_markers() + TypeFunc::Parms + 1)) == at,
2565+
di.i_domain_cc() <= di.first_field_pos() ||
2566+
call->proj_out_or_null(di.i_domain_cc() - di.first_field_pos() + TypeFunc::Parms + 1) == nullptr ||
2567+
_igvn->type(call->proj_out_or_null(di.i_domain_cc() - di.first_field_pos() + TypeFunc::Parms + 1)) == at,
25722568
"");
25732569
if (at->isa_ptr() != nullptr &&
25742570
call_analyzer->is_arg_returned(k) ) {
25752571
// The call returns arguments.
25762572
if (meth->is_scalarized_arg(k)) {
2577-
ProjNode* res_proj = call->proj_out_or_null(di.i_domain_cc() - di.first_field_pos() - di.null_markers() + TypeFunc::Parms + 1);
2573+
ProjNode* res_proj = call->proj_out_or_null(di.i_domain_cc() - di.first_field_pos() + TypeFunc::Parms + 1);
25782574
if (res_proj != nullptr) {
25792575
assert(_igvn->type(res_proj)->isa_ptr(), "");
25802576
if (res_proj->_con == TypeFunc::Parms) {

0 commit comments

Comments
 (0)