src/share/vm/classfile/classFileParser.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6893268 Sdiff src/share/vm/classfile

src/share/vm/classfile/classFileParser.cpp

Print this page
rev 1079 : 6829192: JSR 292 needs to support 64-bit x86
Summary: changes for method handles and invokedynamic
Reviewed-by: ?, ?
rev 1083 : [mq]: indy.compiler.inline.patch


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.


src/share/vm/classfile/classFileParser.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File