src/share/vm/oops/constMethod.hpp

Print this page
rev 7343 : 8058313: Mismatch of method descriptor and MethodParameters.parameters_count should cause MalformedParameterException
Summary: Allow hotspot to store and report zero-length MethodParameters attribute data
Reviewed-by: coleenp, jiangli


 355   u_char* compressed_linenumber_table() const;         // not preserved by gc
 356   u2* generic_signature_index_addr() const;
 357   u2* checked_exceptions_length_addr() const;
 358   u2* localvariable_table_length_addr() const;
 359   u2* exception_table_length_addr() const;
 360   u2* method_parameters_length_addr() const;
 361 
 362   // checked exceptions
 363   int checked_exceptions_length() const;
 364   CheckedExceptionElement* checked_exceptions_start() const;
 365 
 366   // localvariable table
 367   int localvariable_table_length() const;
 368   LocalVariableTableElement* localvariable_table_start() const;
 369 
 370   // exception table
 371   int exception_table_length() const;
 372   ExceptionTableElement* exception_table_start() const;
 373 
 374   // method parameters table





 375   int method_parameters_length() const;
 376   MethodParametersElement* method_parameters_start() const;
 377 
 378   // method annotations
 379   bool has_method_annotations() const
 380     { return (_flags & _has_method_annotations) != 0; }
 381 
 382   bool has_parameter_annotations() const
 383     { return (_flags & _has_parameter_annotations) != 0; }
 384 
 385   bool has_type_annotations() const
 386     { return (_flags & _has_type_annotations) != 0; }
 387 
 388   bool has_default_annotations() const
 389     { return (_flags & _has_default_annotations) != 0; }
 390 
 391 
 392   AnnotationArray** method_annotations_addr() const;
 393   AnnotationArray* method_annotations() const  {
 394     return has_method_annotations() ? *(method_annotations_addr()) : NULL;




 355   u_char* compressed_linenumber_table() const;         // not preserved by gc
 356   u2* generic_signature_index_addr() const;
 357   u2* checked_exceptions_length_addr() const;
 358   u2* localvariable_table_length_addr() const;
 359   u2* exception_table_length_addr() const;
 360   u2* method_parameters_length_addr() const;
 361 
 362   // checked exceptions
 363   int checked_exceptions_length() const;
 364   CheckedExceptionElement* checked_exceptions_start() const;
 365 
 366   // localvariable table
 367   int localvariable_table_length() const;
 368   LocalVariableTableElement* localvariable_table_start() const;
 369 
 370   // exception table
 371   int exception_table_length() const;
 372   ExceptionTableElement* exception_table_start() const;
 373 
 374   // method parameters table
 375 
 376   // This returns -1 if no parameters are present, a non-negative
 377   // value otherwise.  Note: sometimes, there are 0-length parameters
 378   // attributes that must be reported up to the reflection API all the
 379   // same.
 380   int method_parameters_length() const;
 381   MethodParametersElement* method_parameters_start() const;
 382 
 383   // method annotations
 384   bool has_method_annotations() const
 385     { return (_flags & _has_method_annotations) != 0; }
 386 
 387   bool has_parameter_annotations() const
 388     { return (_flags & _has_parameter_annotations) != 0; }
 389 
 390   bool has_type_annotations() const
 391     { return (_flags & _has_type_annotations) != 0; }
 392 
 393   bool has_default_annotations() const
 394     { return (_flags & _has_default_annotations) != 0; }
 395 
 396 
 397   AnnotationArray** method_annotations_addr() const;
 398   AnnotationArray* method_annotations() const  {
 399     return has_method_annotations() ? *(method_annotations_addr()) : NULL;