1701 m->compute_size_of_parameters(THREAD);
1702 assert(args_size == m->size_of_parameters(), "");
1703 }
1704 #endif
1705
1706 // Fill in code attribute information
1707 m->set_max_stack(max_stack);
1708 m->set_max_locals(max_locals);
1709 m->constMethod()->set_stackmap_data(stackmap_data());
1710
1711 /**
1712 * The exception_table field is the flag used to indicate
1713 * that the methodOop and it's associated constMethodOop are partially
1714 * initialized and thus are exempt from pre/post GC verification. Once
1715 * the field is set, the oops are considered fully initialized so make
1716 * sure that the oops can pass verification when this field is set.
1717 */
1718 m->set_exception_table(exception_handlers());
1719
1720 // Copy byte codes
1721 if (code_length > 0) {
1722 memcpy(m->code_base(), code_start, code_length);
1723 }
1724
1725 // Copy line number table
1726 if (linenumber_table != NULL) {
1727 memcpy(m->compressed_linenumber_table(),
1728 linenumber_table->buffer(), linenumber_table_length);
1729 }
1730
1731 // Copy checked exceptions
1732 if (checked_exceptions_length > 0) {
1733 int size = checked_exceptions_length * sizeof(CheckedExceptionElement) / sizeof(u2);
1734 copy_u2_with_conversion((u2*) m->checked_exceptions_start(), checked_exceptions_start, size);
1735 }
1736
1737 /* Copy class file LVT's/LVTT's into the HotSpot internal LVT.
1738 *
1739 * Rules for LVT's and LVTT's are:
1740 * - There can be any number of LVT's and LVTT's.
1741 * - If there are n LVT's, it is the same as if there was just
1742 * one LVT containing all the entries from the n LVT's.
1743 * - There may be no more than one LVT entry per local variable.
|
1701 m->compute_size_of_parameters(THREAD);
1702 assert(args_size == m->size_of_parameters(), "");
1703 }
1704 #endif
1705
1706 // Fill in code attribute information
1707 m->set_max_stack(max_stack);
1708 m->set_max_locals(max_locals);
1709 m->constMethod()->set_stackmap_data(stackmap_data());
1710
1711 /**
1712 * The exception_table field is the flag used to indicate
1713 * that the methodOop and it's associated constMethodOop are partially
1714 * initialized and thus are exempt from pre/post GC verification. Once
1715 * the field is set, the oops are considered fully initialized so make
1716 * sure that the oops can pass verification when this field is set.
1717 */
1718 m->set_exception_table(exception_handlers());
1719
1720 // Copy byte codes
1721 m->set_code(code_start);
1722
1723 // Copy line number table
1724 if (linenumber_table != NULL) {
1725 memcpy(m->compressed_linenumber_table(),
1726 linenumber_table->buffer(), linenumber_table_length);
1727 }
1728
1729 // Copy checked exceptions
1730 if (checked_exceptions_length > 0) {
1731 int size = checked_exceptions_length * sizeof(CheckedExceptionElement) / sizeof(u2);
1732 copy_u2_with_conversion((u2*) m->checked_exceptions_start(), checked_exceptions_start, size);
1733 }
1734
1735 /* Copy class file LVT's/LVTT's into the HotSpot internal LVT.
1736 *
1737 * Rules for LVT's and LVTT's are:
1738 * - There can be any number of LVT's and LVTT's.
1739 * - If there are n LVT's, it is the same as if there was just
1740 * one LVT containing all the entries from the n LVT's.
1741 * - There may be no more than one LVT entry per local variable.
|