Mercurial > hg > truffle
comparison src/share/vm/adlc/output_h.cpp @ 14440:41b780b43b74
8029015: PPC64 (part 216): opto: trap based null and range checks
Summary: On PPC64 use tdi instruction that does a compare and raises SIGTRAP for NULL and range checks.
Reviewed-by: kvn
author | goetz |
---|---|
date | Wed, 27 Nov 2013 16:16:21 -0800 |
parents | 15120a36272d |
children | ad6695638a35 |
comparison
equal
deleted
inserted
replaced
14439:50fdb38839eb | 14440:41b780b43b74 |
---|---|
1613 // Each instruction attribute results in a virtual call of same name. | 1613 // Each instruction attribute results in a virtual call of same name. |
1614 // The ins_cost is not handled here. | 1614 // The ins_cost is not handled here. |
1615 Attribute *attr = instr->_attribs; | 1615 Attribute *attr = instr->_attribs; |
1616 bool avoid_back_to_back = false; | 1616 bool avoid_back_to_back = false; |
1617 while (attr != NULL) { | 1617 while (attr != NULL) { |
1618 if (strcmp (attr->_ident,"ins_cost") && | 1618 if (strcmp (attr->_ident, "ins_cost") != 0 && |
1619 strncmp(attr->_ident,"ins_field_", 10) != 0 && | 1619 strncmp(attr->_ident, "ins_field_", 10) != 0 && |
1620 strcmp (attr->_ident,"ins_short_branch")) { | 1620 // Must match function in node.hpp: return type bool, no prefix "ins_". |
1621 fprintf(fp," virtual int %s() const { return %s; }\n", | 1621 strcmp (attr->_ident, "ins_is_TrapBasedCheckNode") != 0 && |
1622 attr->_ident, attr->_val); | 1622 strcmp (attr->_ident, "ins_short_branch") != 0) { |
1623 fprintf(fp, " virtual int %s() const { return %s; }\n", attr->_ident, attr->_val); | |
1623 } | 1624 } |
1624 // Check value for ins_avoid_back_to_back, and if it is true (1), set the flag | 1625 // Check value for ins_avoid_back_to_back, and if it is true (1), set the flag |
1625 if (!strcmp(attr->_ident,"ins_avoid_back_to_back") && attr->int_val(*this) != 0) | 1626 if (!strcmp(attr->_ident, "ins_avoid_back_to_back") != 0 && attr->int_val(*this) != 0) |
1626 avoid_back_to_back = true; | 1627 avoid_back_to_back = true; |
1628 if (strcmp (attr->_ident, "ins_is_TrapBasedCheckNode") == 0) | |
1629 fprintf(fp, " virtual bool is_TrapBasedCheckNode() const { return %s; }\n", attr->_val); | |
1630 | |
1627 attr = (Attribute *)attr->_next; | 1631 attr = (Attribute *)attr->_next; |
1628 } | 1632 } |
1629 | 1633 |
1630 // virtual functions for encode and format | 1634 // virtual functions for encode and format |
1631 | 1635 |