974 n->dump(10);
975 ShouldNotReachHere();
976 }
977 } else if (strlen(call->_name) > 5 &&
978 !strcmp(call->_name + strlen(call->_name) - 5, "_fill")) {
979 if (!ShenandoahBarrierNode::verify_helper(n->in(TypeFunc::Parms), phis, visited, ShenandoahStore, trace, barriers_used)) {
980 n->dump(10);
981 ShouldNotReachHere();
982 }
983 } else if (!strcmp(call->_name, "g1_wb_pre")) {
984 // skip
985 } else {
986 const int calls_len = sizeof(calls) / sizeof(calls[0]);
987 int i = 0;
988 for (; i < calls_len; i++) {
989 if (!strcmp(calls[i].name, call->_name)) {
990 break;
991 }
992 }
993 if (i != calls_len) {
994 const int args_len = sizeof(calls[0].args) / sizeof(calls[0].args[0]);
995 for (uint j = 0; j < args_len; j++) {
996 int pos = calls[i].args[j].pos;
997 if (pos == -1) {
998 break;
999 }
1000 if (!ShenandoahBarrierNode::verify_helper(call->in(pos), phis, visited, calls[i].args[j].t, trace, barriers_used)) {
1001 n->dump(10);
1002 ShouldNotReachHere();
1003 }
1004 }
1005 for (uint j = TypeFunc::Parms; j < call->req(); j++) {
1006 if (call->in(j)->bottom_type()->make_ptr() &&
1007 call->in(j)->bottom_type()->make_ptr()->isa_oopptr()) {
1008 uint k = 0;
1009 for (; k < args_len && calls[i].args[k].pos != (int)j; k++);
1010 if (k == args_len) {
1011 fatal("arg %d for call %s not covered", j, call->_name);
1012 }
1013 }
1014 }
1069 { { 2, ShenandoahLoad }, { 3, ShenandoahLoad } },
1070 Op_EncodeISOArray,
1071 { { 2, ShenandoahLoad }, { 3, ShenandoahStore } },
1072 Op_HasNegatives,
1073 { { 2, ShenandoahLoad }, { -1, ShenandoahNone} },
1074 Op_CastP2X,
1075 { { 1, ShenandoahLoad }, { -1, ShenandoahNone} },
1076 Op_StrIndexOfChar,
1077 { { 2, ShenandoahLoad }, { -1, ShenandoahNone } },
1078 };
1079
1080 const int others_len = sizeof(others) / sizeof(others[0]);
1081 int i = 0;
1082 for (; i < others_len; i++) {
1083 if (others[i].opcode == n->Opcode()) {
1084 break;
1085 }
1086 }
1087 uint stop = n->is_Call() ? n->as_Call()->tf()->domain()->cnt() : n->req();
1088 if (i != others_len) {
1089 const int inputs_len = sizeof(others[0].inputs) / sizeof(others[0].inputs[0]);
1090 for (uint j = 0; j < inputs_len; j++) {
1091 int pos = others[i].inputs[j].pos;
1092 if (pos == -1) {
1093 break;
1094 }
1095 if (!ShenandoahBarrierNode::verify_helper(n->in(pos), phis, visited, others[i].inputs[j].t, trace, barriers_used)) {
1096 n->dump(10);
1097 ShouldNotReachHere();
1098 }
1099 }
1100 for (uint j = 1; j < stop; j++) {
1101 if (n->in(j) != NULL && n->in(j)->bottom_type()->make_ptr() &&
1102 n->in(j)->bottom_type()->make_ptr()->make_oopptr()) {
1103 uint k = 0;
1104 for (; k < inputs_len && others[i].inputs[k].pos != (int)j; k++);
1105 if (k == inputs_len) {
1106 fatal("arg %d for node %s not covered", j, n->Name());
1107 }
1108 }
1109 }
|
974 n->dump(10);
975 ShouldNotReachHere();
976 }
977 } else if (strlen(call->_name) > 5 &&
978 !strcmp(call->_name + strlen(call->_name) - 5, "_fill")) {
979 if (!ShenandoahBarrierNode::verify_helper(n->in(TypeFunc::Parms), phis, visited, ShenandoahStore, trace, barriers_used)) {
980 n->dump(10);
981 ShouldNotReachHere();
982 }
983 } else if (!strcmp(call->_name, "g1_wb_pre")) {
984 // skip
985 } else {
986 const int calls_len = sizeof(calls) / sizeof(calls[0]);
987 int i = 0;
988 for (; i < calls_len; i++) {
989 if (!strcmp(calls[i].name, call->_name)) {
990 break;
991 }
992 }
993 if (i != calls_len) {
994 const uint args_len = sizeof(calls[0].args) / sizeof(calls[0].args[0]);
995 for (uint j = 0; j < args_len; j++) {
996 int pos = calls[i].args[j].pos;
997 if (pos == -1) {
998 break;
999 }
1000 if (!ShenandoahBarrierNode::verify_helper(call->in(pos), phis, visited, calls[i].args[j].t, trace, barriers_used)) {
1001 n->dump(10);
1002 ShouldNotReachHere();
1003 }
1004 }
1005 for (uint j = TypeFunc::Parms; j < call->req(); j++) {
1006 if (call->in(j)->bottom_type()->make_ptr() &&
1007 call->in(j)->bottom_type()->make_ptr()->isa_oopptr()) {
1008 uint k = 0;
1009 for (; k < args_len && calls[i].args[k].pos != (int)j; k++);
1010 if (k == args_len) {
1011 fatal("arg %d for call %s not covered", j, call->_name);
1012 }
1013 }
1014 }
1069 { { 2, ShenandoahLoad }, { 3, ShenandoahLoad } },
1070 Op_EncodeISOArray,
1071 { { 2, ShenandoahLoad }, { 3, ShenandoahStore } },
1072 Op_HasNegatives,
1073 { { 2, ShenandoahLoad }, { -1, ShenandoahNone} },
1074 Op_CastP2X,
1075 { { 1, ShenandoahLoad }, { -1, ShenandoahNone} },
1076 Op_StrIndexOfChar,
1077 { { 2, ShenandoahLoad }, { -1, ShenandoahNone } },
1078 };
1079
1080 const int others_len = sizeof(others) / sizeof(others[0]);
1081 int i = 0;
1082 for (; i < others_len; i++) {
1083 if (others[i].opcode == n->Opcode()) {
1084 break;
1085 }
1086 }
1087 uint stop = n->is_Call() ? n->as_Call()->tf()->domain()->cnt() : n->req();
1088 if (i != others_len) {
1089 const uint inputs_len = sizeof(others[0].inputs) / sizeof(others[0].inputs[0]);
1090 for (uint j = 0; j < inputs_len; j++) {
1091 int pos = others[i].inputs[j].pos;
1092 if (pos == -1) {
1093 break;
1094 }
1095 if (!ShenandoahBarrierNode::verify_helper(n->in(pos), phis, visited, others[i].inputs[j].t, trace, barriers_used)) {
1096 n->dump(10);
1097 ShouldNotReachHere();
1098 }
1099 }
1100 for (uint j = 1; j < stop; j++) {
1101 if (n->in(j) != NULL && n->in(j)->bottom_type()->make_ptr() &&
1102 n->in(j)->bottom_type()->make_ptr()->make_oopptr()) {
1103 uint k = 0;
1104 for (; k < inputs_len && others[i].inputs[k].pos != (int)j; k++);
1105 if (k == inputs_len) {
1106 fatal("arg %d for node %s not covered", j, n->Name());
1107 }
1108 }
1109 }
|