comparison src/share/vm/c1/c1_Compilation.hpp @ 1783:d5d065957597

6953144: Tiered compilation Summary: Infrastructure for tiered compilation support (interpreter + c1 + c2) for 32 and 64 bit. Simple tiered policy implementation. Reviewed-by: kvn, never, phh, twisti
author iveresov
date Fri, 03 Sep 2010 17:51:07 -0700
parents 4a665be40fd3
children f02a8bbe6ed4
comparison
equal deleted inserted replaced
1782:f353275af40e 1783:d5d065957597
67 FrameMap* _frame_map; 67 FrameMap* _frame_map;
68 C1_MacroAssembler* _masm; 68 C1_MacroAssembler* _masm;
69 bool _has_exception_handlers; 69 bool _has_exception_handlers;
70 bool _has_fpu_code; 70 bool _has_fpu_code;
71 bool _has_unsafe_access; 71 bool _has_unsafe_access;
72 bool _would_profile;
72 bool _has_method_handle_invokes; // True if this method has MethodHandle invokes. 73 bool _has_method_handle_invokes; // True if this method has MethodHandle invokes.
73 const char* _bailout_msg; 74 const char* _bailout_msg;
74 ExceptionInfoList* _exception_info_list; 75 ExceptionInfoList* _exception_info_list;
75 ExceptionHandlerTable _exception_handler_table; 76 ExceptionHandlerTable _exception_handler_table;
76 ImplicitExceptionTable _implicit_exception_table; 77 ImplicitExceptionTable _implicit_exception_table;
141 142
142 // setters 143 // setters
143 void set_has_exception_handlers(bool f) { _has_exception_handlers = f; } 144 void set_has_exception_handlers(bool f) { _has_exception_handlers = f; }
144 void set_has_fpu_code(bool f) { _has_fpu_code = f; } 145 void set_has_fpu_code(bool f) { _has_fpu_code = f; }
145 void set_has_unsafe_access(bool f) { _has_unsafe_access = f; } 146 void set_has_unsafe_access(bool f) { _has_unsafe_access = f; }
147 void set_would_profile(bool f) { _would_profile = f; }
146 // Add a set of exception handlers covering the given PC offset 148 // Add a set of exception handlers covering the given PC offset
147 void add_exception_handlers_for_pco(int pco, XHandlers* exception_handlers); 149 void add_exception_handlers_for_pco(int pco, XHandlers* exception_handlers);
148 // Statistics gathering 150 // Statistics gathering
149 void notice_inlined_method(ciMethod* method); 151 void notice_inlined_method(ciMethod* method);
150 152
200 // The file can be passed to the command line option -XX:Flags=<filename> 202 // The file can be passed to the command line option -XX:Flags=<filename>
201 void compile_only_this_method(); 203 void compile_only_this_method();
202 void compile_only_this_scope(outputStream* st, IRScope* scope); 204 void compile_only_this_scope(outputStream* st, IRScope* scope);
203 void exclude_this_method(); 205 void exclude_this_method();
204 #endif // PRODUCT 206 #endif // PRODUCT
207
208 bool is_profiling() {
209 return env()->comp_level() == CompLevel_full_profile ||
210 env()->comp_level() == CompLevel_limited_profile;
211 }
212 bool count_invocations() { return is_profiling(); }
213 bool count_backedges() { return is_profiling(); }
214
215 // Helpers for generation of profile information
216 bool profile_branches() {
217 return env()->comp_level() == CompLevel_full_profile &&
218 C1UpdateMethodData && C1ProfileBranches;
219 }
220 bool profile_calls() {
221 return env()->comp_level() == CompLevel_full_profile &&
222 C1UpdateMethodData && C1ProfileCalls;
223 }
224 bool profile_inlined_calls() {
225 return profile_calls() && C1ProfileInlinedCalls;
226 }
227 bool profile_checkcasts() {
228 return env()->comp_level() == CompLevel_full_profile &&
229 C1UpdateMethodData && C1ProfileCheckcasts;
230 }
205 }; 231 };
206 232
207 233
208 // Macro definitions for unified bailout-support 234 // Macro definitions for unified bailout-support
209 // The methods bailout() and bailed_out() are present in all classes 235 // The methods bailout() and bailed_out() are present in all classes