comparison src/share/vm/c1/c1_IR.hpp @ 8883:b9a918201d47

Merge with hsx25
author Gilles Duboscq <duboscq@ssw.jku.at>
date Sat, 06 Apr 2013 20:04:06 +0200
parents c5ff08c22458 46f6f063b272
children d8041d695d19
comparison
equal deleted inserted replaced
8660:d47b52b0ff68 8883:b9a918201d47
253 IRScope* _scope; 253 IRScope* _scope;
254 XHandlers* _exception_handlers; 254 XHandlers* _exception_handlers;
255 OopMap* _oop_map; 255 OopMap* _oop_map;
256 ValueStack* _stack; // used by deoptimization (contains also monitors 256 ValueStack* _stack; // used by deoptimization (contains also monitors
257 bool _is_method_handle_invoke; // true if the associated call site is a MethodHandle call site. 257 bool _is_method_handle_invoke; // true if the associated call site is a MethodHandle call site.
258 bool _deoptimize_on_exception;
258 259
259 FrameMap* frame_map() const { return scope()->compilation()->frame_map(); } 260 FrameMap* frame_map() const { return scope()->compilation()->frame_map(); }
260 Compilation* compilation() const { return scope()->compilation(); } 261 Compilation* compilation() const { return scope()->compilation(); }
261 262
262 public: 263 public:
263 264
264 // use scope from ValueStack 265 // use scope from ValueStack
265 CodeEmitInfo(ValueStack* stack, XHandlers* exception_handlers); 266 CodeEmitInfo(ValueStack* stack, XHandlers* exception_handlers, bool deoptimize_on_exception = false);
266 267
267 // make a copy 268 // make a copy
268 CodeEmitInfo(CodeEmitInfo* info, ValueStack* stack = NULL); 269 CodeEmitInfo(CodeEmitInfo* info, ValueStack* stack = NULL);
269 270
270 // accessors 271 // accessors
271 OopMap* oop_map() { return _oop_map; } 272 OopMap* oop_map() { return _oop_map; }
272 ciMethod* method() const { return _scope->method(); } 273 ciMethod* method() const { return _scope->method(); }
273 IRScope* scope() const { return _scope; } 274 IRScope* scope() const { return _scope; }
274 XHandlers* exception_handlers() const { return _exception_handlers; } 275 XHandlers* exception_handlers() const { return _exception_handlers; }
275 ValueStack* stack() const { return _stack; } 276 ValueStack* stack() const { return _stack; }
277 bool deoptimize_on_exception() const { return _deoptimize_on_exception; }
276 278
277 void add_register_oop(LIR_Opr opr); 279 void add_register_oop(LIR_Opr opr);
278 void record_debug_info(DebugInformationRecorder* recorder, int pc_offset); 280 void record_debug_info(DebugInformationRecorder* recorder, int pc_offset);
279 281
280 bool is_method_handle_invoke() const { return _is_method_handle_invoke; } 282 bool is_method_handle_invoke() const { return _is_method_handle_invoke; }
308 BlockList* code() const { return _code; } 310 BlockList* code() const { return _code; }
309 int num_loops() const { return _num_loops; } 311 int num_loops() const { return _num_loops; }
310 int max_stack() const { return top_scope()->max_stack(); } // expensive 312 int max_stack() const { return top_scope()->max_stack(); } // expensive
311 313
312 // ir manipulation 314 // ir manipulation
313 void optimize(); 315 void optimize_blocks();
316 void eliminate_null_checks();
314 void compute_predecessors(); 317 void compute_predecessors();
315 void split_critical_edges(); 318 void split_critical_edges();
316 void compute_code(); 319 void compute_code();
317 void compute_use_counts(); 320 void compute_use_counts();
318 321