void ExceptionHandlerTable::add_subtable( int catch_pco, GrowableArray<intptr_t>* handler_bcis, GrowableArray<intptr_t>* scope_depths_from_top_scope, GrowableArray<intptr_t>* handler_pcos ) { assert(subtable_for(catch_pco) == NULL, "catch handlers for this catch_pco added twice"); assert(handler_bcis->length() == handler_pcos->length(), "bci & pc table have different length"); assert(scope_depths_from_top_scope == NULL || handler_bcis->length() == scope_depths_from_top_scope->length(), "bci & scope_depths table have different length"); if (handler_bcis->length() > 0) { // add subtable header add_entry(HandlerTableEntry(handler_bcis->length(), catch_pco, 0)); // add individual entries for (int i = 0; i < handler_bcis->length(); i++) { intptr_t scope_depth = 0; if (scope_depths_from_top_scope != NULL) { scope_depth = scope_depths_from_top_scope->at(i); } add_entry(HandlerTableEntry(handler_bcis->at(i), handler_pcos->at(i), scope_depth)); assert(entry_for(catch_pco, handler_bcis->at(i), scope_depth)->pco() == handler_pcos->at(i), "entry not added correctly (1)"); assert(entry_for(catch_pco, handler_bcis->at(i), scope_depth)->scope_depth() == scope_depth, "entry not added correctly (2)"); } } }
const char* Runtime1::name_for_address(address entry) { for (int id = 0; id < number_of_ids; id++) { if (entry == entry_for((StubID)id)) return name_for((StubID)id); } #define FUNCTION_CASE(a, f) \ if ((intptr_t)a == CAST_FROM_FN_PTR(intptr_t, f)) return #f FUNCTION_CASE(entry, os::javaTimeMillis); FUNCTION_CASE(entry, os::javaTimeNanos); FUNCTION_CASE(entry, SharedRuntime::OSR_migration_end); FUNCTION_CASE(entry, SharedRuntime::d2f); FUNCTION_CASE(entry, SharedRuntime::d2i); FUNCTION_CASE(entry, SharedRuntime::d2l); FUNCTION_CASE(entry, SharedRuntime::dcos); FUNCTION_CASE(entry, SharedRuntime::dexp); FUNCTION_CASE(entry, SharedRuntime::dlog); FUNCTION_CASE(entry, SharedRuntime::dlog10); FUNCTION_CASE(entry, SharedRuntime::dpow); FUNCTION_CASE(entry, SharedRuntime::drem); FUNCTION_CASE(entry, SharedRuntime::dsin); FUNCTION_CASE(entry, SharedRuntime::dtan); FUNCTION_CASE(entry, SharedRuntime::f2i); FUNCTION_CASE(entry, SharedRuntime::f2l); FUNCTION_CASE(entry, SharedRuntime::frem); FUNCTION_CASE(entry, SharedRuntime::l2d); FUNCTION_CASE(entry, SharedRuntime::l2f); FUNCTION_CASE(entry, SharedRuntime::ldiv); FUNCTION_CASE(entry, SharedRuntime::lmul); FUNCTION_CASE(entry, SharedRuntime::lrem); FUNCTION_CASE(entry, SharedRuntime::lrem); FUNCTION_CASE(entry, SharedRuntime::dtrace_method_entry); FUNCTION_CASE(entry, SharedRuntime::dtrace_method_exit); FUNCTION_CASE(entry, trace_block_entry); #undef FUNCTION_CASE // Soft float adds more runtime names. return pd_name_for_address(entry); }