src/share/vm/opto/parse2.cpp

Print this page
rev 7258 : 8064611: AARCH64: Changes to HotSpot shared code
Summary: Everything except cpu/ and os_cpu/.
Reviewed-by: kvn


1672     a = array_addressing(T_DOUBLE, 0);
1673     if (stopped())  return;     // guaranteed null or range check
1674     dec_sp(2);                  // Pop array and index
1675     push_pair(make_load(control(), a, Type::DOUBLE, T_DOUBLE, TypeAryPtr::DOUBLES, MemNode::unordered));
1676     break;
1677   }
1678   case Bytecodes::_bastore: array_store(T_BYTE);  break;
1679   case Bytecodes::_castore: array_store(T_CHAR);  break;
1680   case Bytecodes::_iastore: array_store(T_INT);   break;
1681   case Bytecodes::_sastore: array_store(T_SHORT); break;
1682   case Bytecodes::_fastore: array_store(T_FLOAT); break;
1683   case Bytecodes::_aastore: {
1684     d = array_addressing(T_OBJECT, 1);
1685     if (stopped())  return;     // guaranteed null or range check
1686     array_store_check();
1687     c = pop();                  // Oop to store
1688     b = pop();                  // index (already used)
1689     a = pop();                  // the array itself
1690     const TypeOopPtr* elemtype  = _gvn.type(a)->is_aryptr()->elem()->make_oopptr();
1691     const TypeAryPtr* adr_type = TypeAryPtr::OOPS;
1692     Node* store = store_oop_to_array(control(), a, d, adr_type, c, elemtype, T_OBJECT, MemNode::release);

1693     break;
1694   }
1695   case Bytecodes::_lastore: {
1696     a = array_addressing(T_LONG, 2);
1697     if (stopped())  return;     // guaranteed null or range check
1698     c = pop_pair();
1699     dec_sp(2);                  // Pop array and index
1700     store_to_memory(control(), a, c, T_LONG, TypeAryPtr::LONGS, MemNode::unordered);
1701     break;
1702   }
1703   case Bytecodes::_dastore: {
1704     a = array_addressing(T_DOUBLE, 2);
1705     if (stopped())  return;     // guaranteed null or range check
1706     c = pop_pair();
1707     dec_sp(2);                  // Pop array and index
1708     c = dstore_rounding(c);
1709     store_to_memory(control(), a, c, T_DOUBLE, TypeAryPtr::DOUBLES, MemNode::unordered);
1710     break;
1711   }
1712   case Bytecodes::_getfield:




1672     a = array_addressing(T_DOUBLE, 0);
1673     if (stopped())  return;     // guaranteed null or range check
1674     dec_sp(2);                  // Pop array and index
1675     push_pair(make_load(control(), a, Type::DOUBLE, T_DOUBLE, TypeAryPtr::DOUBLES, MemNode::unordered));
1676     break;
1677   }
1678   case Bytecodes::_bastore: array_store(T_BYTE);  break;
1679   case Bytecodes::_castore: array_store(T_CHAR);  break;
1680   case Bytecodes::_iastore: array_store(T_INT);   break;
1681   case Bytecodes::_sastore: array_store(T_SHORT); break;
1682   case Bytecodes::_fastore: array_store(T_FLOAT); break;
1683   case Bytecodes::_aastore: {
1684     d = array_addressing(T_OBJECT, 1);
1685     if (stopped())  return;     // guaranteed null or range check
1686     array_store_check();
1687     c = pop();                  // Oop to store
1688     b = pop();                  // index (already used)
1689     a = pop();                  // the array itself
1690     const TypeOopPtr* elemtype  = _gvn.type(a)->is_aryptr()->elem()->make_oopptr();
1691     const TypeAryPtr* adr_type = TypeAryPtr::OOPS;
1692     Node* store = store_oop_to_array(control(), a, d, adr_type, c, elemtype, T_OBJECT,
1693                                      StoreNode::release_if_reference(T_OBJECT));
1694     break;
1695   }
1696   case Bytecodes::_lastore: {
1697     a = array_addressing(T_LONG, 2);
1698     if (stopped())  return;     // guaranteed null or range check
1699     c = pop_pair();
1700     dec_sp(2);                  // Pop array and index
1701     store_to_memory(control(), a, c, T_LONG, TypeAryPtr::LONGS, MemNode::unordered);
1702     break;
1703   }
1704   case Bytecodes::_dastore: {
1705     a = array_addressing(T_DOUBLE, 2);
1706     if (stopped())  return;     // guaranteed null or range check
1707     c = pop_pair();
1708     dec_sp(2);                  // Pop array and index
1709     c = dstore_rounding(c);
1710     store_to_memory(control(), a, c, T_DOUBLE, TypeAryPtr::DOUBLES, MemNode::unordered);
1711     break;
1712   }
1713   case Bytecodes::_getfield: