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 }
|