--- old/src/share/vm/classfile/classFileParser.hpp 2017-05-31 14:33:05.730119916 -0700 +++ new/src/share/vm/classfile/classFileParser.hpp 2017-05-31 14:33:05.570117031 -0700 @@ -75,6 +75,9 @@ enum { LegalClass, LegalField, LegalMethod }; // used to verify unqualified names private: + // Potentially unaligned pointer to various 16-bit entries in the class file + typedef void unsafe_u2; + const ClassFileStream* _stream; // Actual input stream const Symbol* _requested_name; Symbol* _class_name; @@ -242,28 +245,28 @@ bool* const declares_nonstatic_concrete_methods, TRAPS); - const void* parse_exception_table(const ClassFileStream* const stream, - u4 code_length, - u4 exception_table_length, - TRAPS); + const unsafe_u2* parse_exception_table(const ClassFileStream* const stream, + u4 code_length, + u4 exception_table_length, + TRAPS); void parse_linenumber_table(u4 code_attribute_length, u4 code_length, CompressedLineNumberWriteStream**const write_stream, TRAPS); - const void* parse_localvariable_table(const ClassFileStream* const cfs, - u4 code_length, - u2 max_locals, - u4 code_attribute_length, - u2* const localvariable_table_length, - bool isLVTT, - TRAPS); - - const void* parse_checked_exceptions(const ClassFileStream* const cfs, - u2* const checked_exceptions_length, - u4 method_attribute_length, - TRAPS); + const unsafe_u2* parse_localvariable_table(const ClassFileStream* const cfs, + u4 code_length, + u2 max_locals, + u4 code_attribute_length, + u2* const localvariable_table_length, + bool isLVTT, + TRAPS); + + const unsafe_u2* parse_checked_exceptions(const ClassFileStream* const cfs, + u2* const checked_exceptions_length, + u4 method_attribute_length, + TRAPS); void parse_type_array(u2 array_length, u4 code_length, @@ -462,10 +465,10 @@ void copy_localvariable_table(const ConstMethod* cm, int lvt_cnt, u2* const localvariable_table_length, - const void** const localvariable_table_start, + const unsafe_u2** const localvariable_table_start, int lvtt_cnt, u2* const localvariable_type_table_length, - const void** const localvariable_type_table_start, + const unsafe_u2** const localvariable_type_table_start, TRAPS); void copy_method_annotations(ConstMethod* cm,