< prev index next >

src/share/vm/oops/generateOopMap.cpp

Print this page
rev 11179 : 8140594: Various minor code improvements (compiler)
Reviewed-by: thartmann


1661         }
1662         push(out1); // recover...
1663       } else {
1664         push(vcts); // preserve reference.
1665       }
1666       // Otherwise it is a conflict, but one that verification would
1667       // have caught if illegal. In particular, it can't be a topCTS
1668       // resulting from mergeing two difference pcCTS's since the verifier
1669       // would have rejected any use of such a merge.
1670     } else {
1671       push(out1); // handle val/init conflict
1672     }
1673     loc_no++;
1674   }
1675 }
1676 
1677 void GenerateOopMap::ppdupswap(int poplen, const char *out) {
1678   CellTypeState actual[5];
1679   assert(poplen < 5, "this must be less than length of actual vector");
1680 
1681   // pop all arguments
1682   for(int i = 0; i < poplen; i++) actual[i] = pop();






1683 
1684   // put them back
1685   char push_ch = *out++;
1686   while (push_ch != '\0') {
1687     int idx = push_ch - '1';
1688     assert(idx >= 0 && idx < poplen, "wrong arguments");
1689     push(actual[idx]);
1690     push_ch = *out++;
1691   }
1692 }
1693 
1694 void GenerateOopMap::ppop1(CellTypeState out) {
1695   CellTypeState actual = pop();
1696   check_type(out, actual);
1697 }
1698 
1699 void GenerateOopMap::ppop(CellTypeState *out) {
1700   while (!(*out).is_bottom()) {
1701     ppop1(*out++);
1702   }




1661         }
1662         push(out1); // recover...
1663       } else {
1664         push(vcts); // preserve reference.
1665       }
1666       // Otherwise it is a conflict, but one that verification would
1667       // have caught if illegal. In particular, it can't be a topCTS
1668       // resulting from mergeing two difference pcCTS's since the verifier
1669       // would have rejected any use of such a merge.
1670     } else {
1671       push(out1); // handle val/init conflict
1672     }
1673     loc_no++;
1674   }
1675 }
1676 
1677 void GenerateOopMap::ppdupswap(int poplen, const char *out) {
1678   CellTypeState actual[5];
1679   assert(poplen < 5, "this must be less than length of actual vector");
1680 
1681   // Pop all arguments.
1682   for (int i = 0; i < poplen; i++) {
1683     actual[i] = pop();
1684   }
1685   // Field _state is uninitialized when calling push.
1686   for (int i = poplen; i < 5; i++) {
1687     actual[i] = CellTypeState::uninit;
1688   }
1689 
1690   // put them back
1691   char push_ch = *out++;
1692   while (push_ch != '\0') {
1693     int idx = push_ch - '1';
1694     assert(idx >= 0 && idx < poplen, "wrong arguments");
1695     push(actual[idx]);
1696     push_ch = *out++;
1697   }
1698 }
1699 
1700 void GenerateOopMap::ppop1(CellTypeState out) {
1701   CellTypeState actual = pop();
1702   check_type(out, actual);
1703 }
1704 
1705 void GenerateOopMap::ppop(CellTypeState *out) {
1706   while (!(*out).is_bottom()) {
1707     ppop1(*out++);
1708   }


< prev index next >