329 { return constMethod()->has_exception_handler(); }
330 int exception_table_length() const
331 { return constMethod()->exception_table_length(); }
332 ExceptionTableElement* exception_table_start() const
333 { return constMethod()->exception_table_start(); }
334
335 // Finds the first entry point bci of an exception handler for an
336 // exception of klass ex_klass thrown at throw_bci. A value of NULL
337 // for ex_klass indicates that the exception klass is not known; in
338 // this case it matches any constraint class. Returns -1 if the
339 // exception cannot be handled in this method. The handler
340 // constraint classes are loaded if necessary. Note that this may
341 // throw an exception if loading of the constraint classes causes
342 // an IllegalAccessError (bugid 4307310) or an OutOfMemoryError.
343 // If an exception is thrown, returns the bci of the
344 // exception handler which caused the exception to be thrown, which
345 // is needed for proper retries. See, for example,
346 // InterpreterRuntime::exception_handler_for_exception.
347 static int fast_exception_handler_bci_for(const methodHandle& mh, Klass* ex_klass, int throw_bci, TRAPS);
348
349 // method data access
350 MethodData* method_data() const {
351 return _method_data;
352 }
353
354 void set_method_data(MethodData* data);
355
356 MethodCounters* method_counters() const {
357 return _method_counters;
358 }
359
360 void clear_method_counters() {
361 _method_counters = NULL;
362 }
363
364 bool init_method_counters(MethodCounters* counters);
365
366 #ifdef TIERED
367 // We are reusing interpreter_invocation_count as a holder for the previous event count!
368 // We can do that since interpreter_invocation_count is not used in tiered.
|
329 { return constMethod()->has_exception_handler(); }
330 int exception_table_length() const
331 { return constMethod()->exception_table_length(); }
332 ExceptionTableElement* exception_table_start() const
333 { return constMethod()->exception_table_start(); }
334
335 // Finds the first entry point bci of an exception handler for an
336 // exception of klass ex_klass thrown at throw_bci. A value of NULL
337 // for ex_klass indicates that the exception klass is not known; in
338 // this case it matches any constraint class. Returns -1 if the
339 // exception cannot be handled in this method. The handler
340 // constraint classes are loaded if necessary. Note that this may
341 // throw an exception if loading of the constraint classes causes
342 // an IllegalAccessError (bugid 4307310) or an OutOfMemoryError.
343 // If an exception is thrown, returns the bci of the
344 // exception handler which caused the exception to be thrown, which
345 // is needed for proper retries. See, for example,
346 // InterpreterRuntime::exception_handler_for_exception.
347 static int fast_exception_handler_bci_for(const methodHandle& mh, Klass* ex_klass, int throw_bci, TRAPS);
348
349 static void register_native(Klass* k,
350 Symbol* name,
351 Symbol* signature,
352 address entry,
353 TRAPS);
354
355 // method data access
356 MethodData* method_data() const {
357 return _method_data;
358 }
359
360 void set_method_data(MethodData* data);
361
362 MethodCounters* method_counters() const {
363 return _method_counters;
364 }
365
366 void clear_method_counters() {
367 _method_counters = NULL;
368 }
369
370 bool init_method_counters(MethodCounters* counters);
371
372 #ifdef TIERED
373 // We are reusing interpreter_invocation_count as a holder for the previous event count!
374 // We can do that since interpreter_invocation_count is not used in tiered.
|