src/share/vm/classfile/verificationType.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7020118 Sdiff src/share/vm/classfile

src/share/vm/classfile/verificationType.hpp

Print this page
rev 2099 : 7020118: Alter frame assignability to allow for exception handler coverage of invokespecial <init>
Summary: Add special rule to allow assignment of frames with uninit flags set.
Reviewed-by:


 111       BciMask            = 0xffff << 1 * BitsPerByte,
 112       BciForThis         = ((u2)-1),   // A bci of -1 is an Unintialized-This
 113 
 114       // Query values
 115       ReferenceQuery     = (ReferenceFlag     << 1 * BitsPerByte) | TypeQuery,
 116       Category1Query     = (Category1Flag     << 1 * BitsPerByte) | TypeQuery,
 117       Category2Query     = (Category2Flag     << 1 * BitsPerByte) | TypeQuery,
 118       Category2_2ndQuery = (Category2_2ndFlag << 1 * BitsPerByte) | TypeQuery
 119     };
 120 
 121   VerificationType(uintptr_t raw_data) {
 122     _u._data = raw_data;
 123   }
 124 
 125  public:
 126 
 127   VerificationType() { *this = bogus_type(); }
 128 
 129   // Create verification types
 130   static VerificationType bogus_type() { return VerificationType(Bogus); }

 131   static VerificationType null_type() { return VerificationType(Null); }
 132   static VerificationType integer_type() { return VerificationType(Integer); }
 133   static VerificationType float_type() { return VerificationType(Float); }
 134   static VerificationType long_type() { return VerificationType(Long); }
 135   static VerificationType long2_type() { return VerificationType(Long_2nd); }
 136   static VerificationType double_type() { return VerificationType(Double); }
 137   static VerificationType boolean_type() { return VerificationType(Boolean); }
 138   static VerificationType byte_type() { return VerificationType(Byte); }
 139   static VerificationType char_type() { return VerificationType(Char); }
 140   static VerificationType short_type() { return VerificationType(Short); }
 141   static VerificationType double2_type()
 142     { return VerificationType(Double_2nd); }
 143 
 144   // "check" types are used for queries.  A "check" type is not assignable
 145   // to anything, but the specified types are assignable to a "check".  For
 146   // example, any category1 primitive is assignable to category1_check and
 147   // any reference is assignable to reference_check.
 148   static VerificationType reference_check()
 149     { return VerificationType(ReferenceQuery); }
 150   static VerificationType category1_check()




 111       BciMask            = 0xffff << 1 * BitsPerByte,
 112       BciForThis         = ((u2)-1),   // A bci of -1 is an Unintialized-This
 113 
 114       // Query values
 115       ReferenceQuery     = (ReferenceFlag     << 1 * BitsPerByte) | TypeQuery,
 116       Category1Query     = (Category1Flag     << 1 * BitsPerByte) | TypeQuery,
 117       Category2Query     = (Category2Flag     << 1 * BitsPerByte) | TypeQuery,
 118       Category2_2ndQuery = (Category2_2ndFlag << 1 * BitsPerByte) | TypeQuery
 119     };
 120 
 121   VerificationType(uintptr_t raw_data) {
 122     _u._data = raw_data;
 123   }
 124 
 125  public:
 126 
 127   VerificationType() { *this = bogus_type(); }
 128 
 129   // Create verification types
 130   static VerificationType bogus_type() { return VerificationType(Bogus); }
 131   static VerificationType top_type() { return bogus_type(); } // alias
 132   static VerificationType null_type() { return VerificationType(Null); }
 133   static VerificationType integer_type() { return VerificationType(Integer); }
 134   static VerificationType float_type() { return VerificationType(Float); }
 135   static VerificationType long_type() { return VerificationType(Long); }
 136   static VerificationType long2_type() { return VerificationType(Long_2nd); }
 137   static VerificationType double_type() { return VerificationType(Double); }
 138   static VerificationType boolean_type() { return VerificationType(Boolean); }
 139   static VerificationType byte_type() { return VerificationType(Byte); }
 140   static VerificationType char_type() { return VerificationType(Char); }
 141   static VerificationType short_type() { return VerificationType(Short); }
 142   static VerificationType double2_type()
 143     { return VerificationType(Double_2nd); }
 144 
 145   // "check" types are used for queries.  A "check" type is not assignable
 146   // to anything, but the specified types are assignable to a "check".  For
 147   // example, any category1 primitive is assignable to category1_check and
 148   // any reference is assignable to reference_check.
 149   static VerificationType reference_check()
 150     { return VerificationType(ReferenceQuery); }
 151   static VerificationType category1_check()


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