comparison src/share/vm/ci/ciMethod.hpp @ 6972:bd7a7ce2e264

6830717: replay of compilations would help with debugging Summary: When java process crashed in compiler thread, repeat the compilation process will help finding root cause. This is done with using SA dump application class data and replay data from core dump, then use debug version of jvm to recompile the problematic java method. Reviewed-by: kvn, twisti, sspitsyn Contributed-by: yumin.qi@oracle.com
author minqi
date Mon, 12 Nov 2012 14:03:53 -0800
parents da91efe96a93
children bb33c6fdcf0d
comparison
equal deleted inserted replaced
6965:3be318ecfae5 6972:bd7a7ce2e264
49 CI_PACKAGE_ACCESS 49 CI_PACKAGE_ACCESS
50 friend class ciEnv; 50 friend class ciEnv;
51 friend class ciExceptionHandlerStream; 51 friend class ciExceptionHandlerStream;
52 friend class ciBytecodeStream; 52 friend class ciBytecodeStream;
53 friend class ciMethodHandle; 53 friend class ciMethodHandle;
54 friend class ciReplay;
54 55
55 private: 56 private:
56 // General method information. 57 // General method information.
57 ciFlags _flags; 58 ciFlags _flags;
58 ciSymbol* _name; 59 ciSymbol* _name;
67 int _max_locals; 68 int _max_locals;
68 vmIntrinsics::ID _intrinsic_id; 69 vmIntrinsics::ID _intrinsic_id;
69 int _handler_count; 70 int _handler_count;
70 int _interpreter_invocation_count; 71 int _interpreter_invocation_count;
71 int _interpreter_throwout_count; 72 int _interpreter_throwout_count;
73 int _instructions_size;
72 74
73 bool _uses_monitors; 75 bool _uses_monitors;
74 bool _balanced_monitors; 76 bool _balanced_monitors;
75 bool _is_c1_compilable; 77 bool _is_c1_compilable;
76 bool _is_c2_compilable; 78 bool _is_c2_compilable;
250 bool has_option(const char *option); 252 bool has_option(const char *option);
251 bool can_be_compiled(); 253 bool can_be_compiled();
252 bool can_be_osr_compiled(int entry_bci); 254 bool can_be_osr_compiled(int entry_bci);
253 void set_not_compilable(); 255 void set_not_compilable();
254 bool has_compiled_code(); 256 bool has_compiled_code();
255 int instructions_size(int comp_level = CompLevel_any);
256 void log_nmethod_identity(xmlStream* log); 257 void log_nmethod_identity(xmlStream* log);
257 bool is_not_reached(int bci); 258 bool is_not_reached(int bci);
258 bool was_executed_more_than(int times); 259 bool was_executed_more_than(int times);
259 bool has_unloaded_classes_in_signature(); 260 bool has_unloaded_classes_in_signature();
260 bool is_klass_loaded(int refinfo_index, bool must_be_resolved) const; 261 bool is_klass_loaded(int refinfo_index, bool must_be_resolved) const;
261 bool check_call(int refinfo_index, bool is_static) const; 262 bool check_call(int refinfo_index, bool is_static) const;
262 bool ensure_method_data(); // make sure it exists in the VM also 263 bool ensure_method_data(); // make sure it exists in the VM also
264 int instructions_size();
263 int scale_count(int count, float prof_factor = 1.); // make MDO count commensurate with IIC 265 int scale_count(int count, float prof_factor = 1.); // make MDO count commensurate with IIC
264 266
265 // JSR 292 support 267 // JSR 292 support
266 bool is_method_handle_intrinsic() const; 268 bool is_method_handle_intrinsic() const;
267 bool is_compiled_lambda_form() const; 269 bool is_compiled_lambda_form() const;
289 bool has_loops () const; 291 bool has_loops () const;
290 bool has_jsrs () const; 292 bool has_jsrs () const;
291 bool is_accessor () const; 293 bool is_accessor () const;
292 bool is_initializer () const; 294 bool is_initializer () const;
293 bool can_be_statically_bound() const { return _can_be_statically_bound; } 295 bool can_be_statically_bound() const { return _can_be_statically_bound; }
296 void dump_replay_data(outputStream* st);
294 297
295 // Print the bytecodes of this method. 298 // Print the bytecodes of this method.
296 void print_codes_on(outputStream* st); 299 void print_codes_on(outputStream* st);
297 void print_codes() { 300 void print_codes() {
298 print_codes_on(tty); 301 print_codes_on(tty);