289 // exception handler table
290 bool has_exception_handler() const
291 { return constMethod()->has_exception_handler(); }
292 int exception_table_length() const
293 { return constMethod()->exception_table_length(); }
294 ExceptionTableElement* exception_table_start() const
295 { return constMethod()->exception_table_start(); }
296
297 // Finds the first entry point bci of an exception handler for an
298 // exception of klass ex_klass thrown at throw_bci. A value of NULL
299 // for ex_klass indicates that the exception klass is not known; in
300 // this case it matches any constraint class. Returns -1 if the
301 // exception cannot be handled in this method. The handler
302 // constraint classes are loaded if necessary. Note that this may
303 // throw an exception if loading of the constraint classes causes
304 // an IllegalAccessError (bugid 4307310) or an OutOfMemoryError.
305 // If an exception is thrown, returns the bci of the
306 // exception handler which caused the exception to be thrown, which
307 // is needed for proper retries. See, for example,
308 // InterpreterRuntime::exception_handler_for_exception.
309 int fast_exception_handler_bci_for(KlassHandle ex_klass, int throw_bci, TRAPS);
310
311 // method data access
312 methodDataOop method_data() const {
313 return _method_data;
314 }
315 void set_method_data(methodDataOop data) {
316 oop_store_without_check((oop*)&_method_data, (oop)data);
317 }
318
319 // invocation counter
320 InvocationCounter* invocation_counter() { return &_invocation_counter; }
321 InvocationCounter* backedge_counter() { return &_backedge_counter; }
322
323 #ifdef TIERED
324 // We are reusing interpreter_invocation_count as a holder for the previous event count!
325 // We can do that since interpreter_invocation_count is not used in tiered.
326 int prev_event_count() const { return _interpreter_invocation_count; }
327 void set_prev_event_count(int count) { _interpreter_invocation_count = count; }
328 jlong prev_time() const { return _prev_time; }
329 void set_prev_time(jlong time) { _prev_time = time; }
|
289 // exception handler table
290 bool has_exception_handler() const
291 { return constMethod()->has_exception_handler(); }
292 int exception_table_length() const
293 { return constMethod()->exception_table_length(); }
294 ExceptionTableElement* exception_table_start() const
295 { return constMethod()->exception_table_start(); }
296
297 // Finds the first entry point bci of an exception handler for an
298 // exception of klass ex_klass thrown at throw_bci. A value of NULL
299 // for ex_klass indicates that the exception klass is not known; in
300 // this case it matches any constraint class. Returns -1 if the
301 // exception cannot be handled in this method. The handler
302 // constraint classes are loaded if necessary. Note that this may
303 // throw an exception if loading of the constraint classes causes
304 // an IllegalAccessError (bugid 4307310) or an OutOfMemoryError.
305 // If an exception is thrown, returns the bci of the
306 // exception handler which caused the exception to be thrown, which
307 // is needed for proper retries. See, for example,
308 // InterpreterRuntime::exception_handler_for_exception.
309 static int fast_exception_handler_bci_for(methodHandle mh, KlassHandle ex_klass, int throw_bci, TRAPS);
310
311 // method data access
312 methodDataOop method_data() const {
313 return _method_data;
314 }
315 void set_method_data(methodDataOop data) {
316 oop_store_without_check((oop*)&_method_data, (oop)data);
317 }
318
319 // invocation counter
320 InvocationCounter* invocation_counter() { return &_invocation_counter; }
321 InvocationCounter* backedge_counter() { return &_backedge_counter; }
322
323 #ifdef TIERED
324 // We are reusing interpreter_invocation_count as a holder for the previous event count!
325 // We can do that since interpreter_invocation_count is not used in tiered.
326 int prev_event_count() const { return _interpreter_invocation_count; }
327 void set_prev_event_count(int count) { _interpreter_invocation_count = count; }
328 jlong prev_time() const { return _prev_time; }
329 void set_prev_time(jlong time) { _prev_time = time; }
|