u2* ConstMethod::checked_exceptions_length_addr() const { // Located immediately before the generic signature index. assert(has_checked_exceptions(), "called only if table is present"); if(has_method_parameters()) { // If method parameters present, locate immediately before them. return (u2*)method_parameters_start() - 1; } else { // Else, the exception table is at the end of the constMethod. return has_generic_signature() ? (last_u2_element() - 1) : last_u2_element(); } }
u2* constMethodOopDesc::localvariable_table_length_addr() const { assert(has_localvariable_table(), "called only if table is present"); if (has_checked_exceptions()) { // If checked_exception present, locate immediately before them. return (u2*) checked_exceptions_start() - 1; } else { // Else, the linenumber table is at the end of the constMethod. return last_u2_element(); } }
u2* ConstMethod::localvariable_table_length_addr() const { assert(has_localvariable_table(), "called only if table is present"); if (has_exception_handler()) { // If exception_table present, locate immediately before them. return (u2*) exception_table_start() - 1; } else { if (has_checked_exceptions()) { // If checked_exception present, locate immediately before them. return (u2*) checked_exceptions_start() - 1; } else { if(has_method_parameters()) { // If method parameters present, locate immediately before them. return (u2*)method_parameters_start() - 1; } else { // Else, the exception table is at the end of the constMethod. return has_generic_signature() ? (last_u2_element() - 1) : last_u2_element(); } } } }
u2* ConstMethod::method_parameters_length_addr() const { assert(has_method_parameters(), "called only if table is present"); return has_generic_signature() ? (last_u2_element() - 1) : last_u2_element(); }
u2* ConstMethod::generic_signature_index_addr() const { // Located at the end of the constMethod. assert(has_generic_signature(), "called only if generic signature exists"); return last_u2_element(); }
u2* constMethodOopDesc::checked_exceptions_length_addr() const { // Located at the end of the constMethod. assert(has_checked_exceptions(), "called only if table is present"); return last_u2_element(); }