src/share/vm/oops/constantPool.cpp

Print this page




1692       case JVM_CONSTANT_Double: {
1693         jdouble val = double_at(idx);
1694         Bytes::put_Java_u8((address) (bytes+1), *(u8*)&val);
1695         idx++;             // Double takes two cpool slots
1696         break;
1697       }
1698       case JVM_CONSTANT_Class:
1699       case JVM_CONSTANT_UnresolvedClass:
1700       case JVM_CONSTANT_UnresolvedClassInError: {
1701         *bytes = JVM_CONSTANT_Class;
1702         Symbol* sym = klass_name_at(idx);
1703         idx1 = tbl->symbol_to_value(sym);
1704         assert(idx1 != 0, "Have not found a hashtable entry");
1705         Bytes::put_Java_u2((address) (bytes+1), idx1);
1706         DBG(printf("JVM_CONSTANT_Class: idx=#%03hd, %s", idx1, sym->as_utf8()));
1707         break;
1708       }
1709       case JVM_CONSTANT_String: {
1710         *bytes = JVM_CONSTANT_String;
1711         Symbol* sym = unresolved_string_at(idx);




1712         idx1 = tbl->symbol_to_value(sym);
1713         assert(idx1 != 0, "Have not found a hashtable entry");

1714         Bytes::put_Java_u2((address) (bytes+1), idx1);
1715         DBG(printf("JVM_CONSTANT_String: idx=#%03hd, %s", idx1, sym->as_utf8()));
1716         break;
1717       }
1718       case JVM_CONSTANT_Fieldref:
1719       case JVM_CONSTANT_Methodref:
1720       case JVM_CONSTANT_InterfaceMethodref: {
1721         idx1 = uncached_klass_ref_index_at(idx);
1722         idx2 = uncached_name_and_type_ref_index_at(idx);
1723         Bytes::put_Java_u2((address) (bytes+1), idx1);
1724         Bytes::put_Java_u2((address) (bytes+3), idx2);
1725         DBG(printf("JVM_CONSTANT_Methodref: %hd %hd", idx1, idx2));
1726         break;
1727       }
1728       case JVM_CONSTANT_NameAndType: {
1729         idx1 = name_ref_index_at(idx);
1730         idx2 = signature_ref_index_at(idx);
1731         Bytes::put_Java_u2((address) (bytes+1), idx1);
1732         Bytes::put_Java_u2((address) (bytes+3), idx2);
1733         DBG(printf("JVM_CONSTANT_NameAndType: %hd %hd", idx1, idx2));
1734         break;
1735       }




1692       case JVM_CONSTANT_Double: {
1693         jdouble val = double_at(idx);
1694         Bytes::put_Java_u8((address) (bytes+1), *(u8*)&val);
1695         idx++;             // Double takes two cpool slots
1696         break;
1697       }
1698       case JVM_CONSTANT_Class:
1699       case JVM_CONSTANT_UnresolvedClass:
1700       case JVM_CONSTANT_UnresolvedClassInError: {
1701         *bytes = JVM_CONSTANT_Class;
1702         Symbol* sym = klass_name_at(idx);
1703         idx1 = tbl->symbol_to_value(sym);
1704         assert(idx1 != 0, "Have not found a hashtable entry");
1705         Bytes::put_Java_u2((address) (bytes+1), idx1);
1706         DBG(printf("JVM_CONSTANT_Class: idx=#%03hd, %s", idx1, sym->as_utf8()));
1707         break;
1708       }
1709       case JVM_CONSTANT_String: {
1710         *bytes = JVM_CONSTANT_String;
1711         Symbol* sym = unresolved_string_at(idx);
1712         if (is_pseudo_string_at(idx)) {
1713           idx1 = get_pseudo_string_utf8_index(idx);
1714           assert(idx1 != 0, "Have not found a pseudo-string placeholder entry");
1715         } else {
1716           idx1 = tbl->symbol_to_value(sym);
1717           assert(idx1 != 0, "Have not found a hashtable entry");
1718         }
1719         Bytes::put_Java_u2((address) (bytes+1), idx1);
1720         DBG(printf("JVM_CONSTANT_String: idx=#%03hd, %s", idx1, sym == NULL ? "NULL" : sym->as_utf8()));
1721         break;
1722       }
1723       case JVM_CONSTANT_Fieldref:
1724       case JVM_CONSTANT_Methodref:
1725       case JVM_CONSTANT_InterfaceMethodref: {
1726         idx1 = uncached_klass_ref_index_at(idx);
1727         idx2 = uncached_name_and_type_ref_index_at(idx);
1728         Bytes::put_Java_u2((address) (bytes+1), idx1);
1729         Bytes::put_Java_u2((address) (bytes+3), idx2);
1730         DBG(printf("JVM_CONSTANT_Methodref: %hd %hd", idx1, idx2));
1731         break;
1732       }
1733       case JVM_CONSTANT_NameAndType: {
1734         idx1 = name_ref_index_at(idx);
1735         idx2 = signature_ref_index_at(idx);
1736         Bytes::put_Java_u2((address) (bytes+1), idx1);
1737         Bytes::put_Java_u2((address) (bytes+3), idx2);
1738         DBG(printf("JVM_CONSTANT_NameAndType: %hd %hd", idx1, idx2));
1739         break;
1740       }