diff -r 1ba5728eda0d -r c61eea516a0a hotspot/src/share/vm/classfile/classFileParser.hpp --- a/hotspot/src/share/vm/classfile/classFileParser.hpp Wed May 31 13:17:00 2017 +0200 +++ b/hotspot/src/share/vm/classfile/classFileParser.hpp Thu Jun 01 09:34:53 2017 -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 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 void* parse_checked_exceptions(const ClassFileStream* const cfs, - u2* const checked_exceptions_length, - u4 method_attribute_length, - 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,