@@ -1636,46 +1636,74 @@ void BytecodeInterpreter::run(interpreterState istate) {
16361636 if (support_IRIW_for_not_multiple_copy_atomic_cpu) {
16371637 OrderAccess::fence ();
16381638 }
1639- if (tos_type == atos) {
1640- VERIFY_OOP (obj->obj_field_acquire (field_offset));
1641- SET_STACK_OBJECT (obj->obj_field_acquire (field_offset), -1 );
1642- } else if (tos_type == itos) {
1643- SET_STACK_INT (obj->int_field_acquire (field_offset), -1 );
1644- } else if (tos_type == ltos) {
1645- SET_STACK_LONG (obj->long_field_acquire (field_offset), 0 );
1646- MORE_STACK (1 );
1647- } else if (tos_type == btos || tos_type == ztos) {
1648- SET_STACK_INT (obj->byte_field_acquire (field_offset), -1 );
1649- } else if (tos_type == ctos) {
1650- SET_STACK_INT (obj->char_field_acquire (field_offset), -1 );
1651- } else if (tos_type == stos) {
1652- SET_STACK_INT (obj->short_field_acquire (field_offset), -1 );
1653- } else if (tos_type == ftos) {
1654- SET_STACK_FLOAT (obj->float_field_acquire (field_offset), -1 );
1655- } else {
1656- SET_STACK_DOUBLE (obj->double_field_acquire (field_offset), 0 );
1657- MORE_STACK (1 );
1639+ switch (tos_type) {
1640+ case btos:
1641+ case ztos:
1642+ SET_STACK_INT (obj->byte_field_acquire (field_offset), -1 );
1643+ break ;
1644+ case ctos:
1645+ SET_STACK_INT (obj->char_field_acquire (field_offset), -1 );
1646+ break ;
1647+ case stos:
1648+ SET_STACK_INT (obj->short_field_acquire (field_offset), -1 );
1649+ break ;
1650+ case itos:
1651+ SET_STACK_INT (obj->int_field_acquire (field_offset), -1 );
1652+ break ;
1653+ case ftos:
1654+ SET_STACK_FLOAT (obj->float_field_acquire (field_offset), -1 );
1655+ break ;
1656+ case ltos:
1657+ SET_STACK_LONG (obj->long_field_acquire (field_offset), 0 );
1658+ MORE_STACK (1 );
1659+ break ;
1660+ case dtos:
1661+ SET_STACK_DOUBLE (obj->double_field_acquire (field_offset), 0 );
1662+ MORE_STACK (1 );
1663+ break ;
1664+ case atos: {
1665+ oop val = obj->obj_field_acquire (field_offset);
1666+ VERIFY_OOP (val);
1667+ SET_STACK_OBJECT (val, -1 );
1668+ break ;
1669+ }
1670+ default :
1671+ ShouldNotReachHere ();
16581672 }
16591673 } else {
1660- if (tos_type == atos) {
1661- VERIFY_OOP (obj->obj_field (field_offset));
1662- SET_STACK_OBJECT (obj->obj_field (field_offset), -1 );
1663- } else if (tos_type == itos) {
1664- SET_STACK_INT (obj->int_field (field_offset), -1 );
1665- } else if (tos_type == ltos) {
1666- SET_STACK_LONG (obj->long_field (field_offset), 0 );
1667- MORE_STACK (1 );
1668- } else if (tos_type == btos || tos_type == ztos) {
1669- SET_STACK_INT (obj->byte_field (field_offset), -1 );
1670- } else if (tos_type == ctos) {
1671- SET_STACK_INT (obj->char_field (field_offset), -1 );
1672- } else if (tos_type == stos) {
1673- SET_STACK_INT (obj->short_field (field_offset), -1 );
1674- } else if (tos_type == ftos) {
1675- SET_STACK_FLOAT (obj->float_field (field_offset), -1 );
1676- } else {
1677- SET_STACK_DOUBLE (obj->double_field (field_offset), 0 );
1678- MORE_STACK (1 );
1674+ switch (tos_type) {
1675+ case btos:
1676+ case ztos:
1677+ SET_STACK_INT (obj->byte_field (field_offset), -1 );
1678+ break ;
1679+ case ctos:
1680+ SET_STACK_INT (obj->char_field (field_offset), -1 );
1681+ break ;
1682+ case stos:
1683+ SET_STACK_INT (obj->short_field (field_offset), -1 );
1684+ break ;
1685+ case itos:
1686+ SET_STACK_INT (obj->int_field (field_offset), -1 );
1687+ break ;
1688+ case ftos:
1689+ SET_STACK_FLOAT (obj->float_field (field_offset), -1 );
1690+ break ;
1691+ case ltos:
1692+ SET_STACK_LONG (obj->long_field (field_offset), 0 );
1693+ MORE_STACK (1 );
1694+ break ;
1695+ case dtos:
1696+ SET_STACK_DOUBLE (obj->double_field (field_offset), 0 );
1697+ MORE_STACK (1 );
1698+ break ;
1699+ case atos: {
1700+ oop val = obj->obj_field (field_offset);
1701+ VERIFY_OOP (val);
1702+ SET_STACK_OBJECT (val, -1 );
1703+ break ;
1704+ }
1705+ default :
1706+ ShouldNotReachHere ();
16791707 }
16801708 }
16811709
@@ -1745,49 +1773,75 @@ void BytecodeInterpreter::run(interpreterState istate) {
17451773 //
17461774 int field_offset = cache->f2_as_index ();
17471775 if (cache->is_volatile ()) {
1748- if (tos_type == itos) {
1749- obj->release_int_field_put (field_offset, STACK_INT (-1 ));
1750- } else if (tos_type == atos) {
1751- VERIFY_OOP (STACK_OBJECT (-1 ));
1752- obj->release_obj_field_put (field_offset, STACK_OBJECT (-1 ));
1753- } else if (tos_type == btos) {
1754- obj->release_byte_field_put (field_offset, STACK_INT (-1 ));
1755- } else if (tos_type == ztos) {
1756- int bool_field = STACK_INT (-1 ); // only store LSB
1757- obj->release_byte_field_put (field_offset, (bool_field & 1 ));
1758- } else if (tos_type == ltos) {
1759- obj->release_long_field_put (field_offset, STACK_LONG (-1 ));
1760- } else if (tos_type == ctos) {
1761- obj->release_char_field_put (field_offset, STACK_INT (-1 ));
1762- } else if (tos_type == stos) {
1763- obj->release_short_field_put (field_offset, STACK_INT (-1 ));
1764- } else if (tos_type == ftos) {
1765- obj->release_float_field_put (field_offset, STACK_FLOAT (-1 ));
1766- } else {
1767- obj->release_double_field_put (field_offset, STACK_DOUBLE (-1 ));
1776+ switch (tos_type) {
1777+ case ztos:
1778+ obj->release_byte_field_put (field_offset, (STACK_INT (-1 ) & 1 )); // only store LSB
1779+ break ;
1780+ case btos:
1781+ obj->release_byte_field_put (field_offset, STACK_INT (-1 ));
1782+ break ;
1783+ case ctos:
1784+ obj->release_char_field_put (field_offset, STACK_INT (-1 ));
1785+ break ;
1786+ case stos:
1787+ obj->release_short_field_put (field_offset, STACK_INT (-1 ));
1788+ break ;
1789+ case itos:
1790+ obj->release_int_field_put (field_offset, STACK_INT (-1 ));
1791+ break ;
1792+ case ftos:
1793+ obj->release_float_field_put (field_offset, STACK_FLOAT (-1 ));
1794+ break ;
1795+ case ltos:
1796+ obj->release_long_field_put (field_offset, STACK_LONG (-1 ));
1797+ break ;
1798+ case dtos:
1799+ obj->release_double_field_put (field_offset, STACK_DOUBLE (-1 ));
1800+ break ;
1801+ case atos: {
1802+ oop val = STACK_OBJECT (-1 );
1803+ VERIFY_OOP (val);
1804+ obj->release_obj_field_put (field_offset, val);
1805+ break ;
1806+ }
1807+ default :
1808+ ShouldNotReachHere ();
17681809 }
17691810 OrderAccess::storeload ();
17701811 } else {
1771- if (tos_type == itos) {
1772- obj->int_field_put (field_offset, STACK_INT (-1 ));
1773- } else if (tos_type == atos) {
1774- VERIFY_OOP (STACK_OBJECT (-1 ));
1775- obj->obj_field_put (field_offset, STACK_OBJECT (-1 ));
1776- } else if (tos_type == btos) {
1777- obj->byte_field_put (field_offset, STACK_INT (-1 ));
1778- } else if (tos_type == ztos) {
1779- int bool_field = STACK_INT (-1 ); // only store LSB
1780- obj->byte_field_put (field_offset, (bool_field & 1 ));
1781- } else if (tos_type == ltos) {
1782- obj->long_field_put (field_offset, STACK_LONG (-1 ));
1783- } else if (tos_type == ctos) {
1784- obj->char_field_put (field_offset, STACK_INT (-1 ));
1785- } else if (tos_type == stos) {
1786- obj->short_field_put (field_offset, STACK_INT (-1 ));
1787- } else if (tos_type == ftos) {
1788- obj->float_field_put (field_offset, STACK_FLOAT (-1 ));
1789- } else {
1790- obj->double_field_put (field_offset, STACK_DOUBLE (-1 ));
1812+ switch (tos_type) {
1813+ case ztos:
1814+ obj->byte_field_put (field_offset, (STACK_INT (-1 ) & 1 )); // only store LSB
1815+ break ;
1816+ case btos:
1817+ obj->byte_field_put (field_offset, STACK_INT (-1 ));
1818+ break ;
1819+ case ctos:
1820+ obj->char_field_put (field_offset, STACK_INT (-1 ));
1821+ break ;
1822+ case stos:
1823+ obj->short_field_put (field_offset, STACK_INT (-1 ));
1824+ break ;
1825+ case itos:
1826+ obj->int_field_put (field_offset, STACK_INT (-1 ));
1827+ break ;
1828+ case ftos:
1829+ obj->float_field_put (field_offset, STACK_FLOAT (-1 ));
1830+ break ;
1831+ case ltos:
1832+ obj->long_field_put (field_offset, STACK_LONG (-1 ));
1833+ break ;
1834+ case dtos:
1835+ obj->double_field_put (field_offset, STACK_DOUBLE (-1 ));
1836+ break ;
1837+ case atos: {
1838+ oop val = STACK_OBJECT (-1 );
1839+ VERIFY_OOP (val);
1840+ obj->obj_field_put (field_offset, val);
1841+ break ;
1842+ }
1843+ default :
1844+ ShouldNotReachHere ();
17911845 }
17921846 }
17931847
0 commit comments