src/share/vm/c1/c1_GraphBuilder.hpp

Print this page
rev 2893 : 7121756: Improve C1 inlining policy by using profiling at call sites
Summary: profile based recompilation of methods with C1 with more inlining.
Reviewed-by:


 320   }
 321   BlockBegin*  inline_cleanup_block() const              { return scope_data()->inline_cleanup_block();  }
 322   Instruction* inline_cleanup_return_prev() const        { return scope_data()->inline_cleanup_return_prev(); }
 323   ValueStack*  inline_cleanup_state() const              { return scope_data()->inline_cleanup_state();  }
 324   void restore_inline_cleanup_info() {
 325     _block = inline_cleanup_block();
 326     _last  = inline_cleanup_return_prev();
 327     _state = inline_cleanup_state();
 328   }
 329   void incr_num_returns()                                { scope_data()->incr_num_returns();             }
 330   int  num_returns() const                               { return scope_data()->num_returns();           }
 331   intx max_inline_size() const                           { return scope_data()->max_inline_size();       }
 332   int  inline_level() const                              { return scope()->level();                      }
 333   int  recursive_inline_level(ciMethod* callee) const;
 334 
 335   // inlining of synchronized methods
 336   void inline_sync_entry(Value lock, BlockBegin* sync_handler);
 337   void fill_sync_handler(Value lock, BlockBegin* sync_handler, bool default_handler = false);
 338 
 339   // inliners
 340   bool try_inline(           ciMethod* callee, bool holder_known);
 341   bool try_inline_intrinsics(ciMethod* callee);
 342   bool try_inline_full(      ciMethod* callee, bool holder_known, BlockBegin* cont_block = NULL);
 343   bool try_inline_jsr(int jsr_dest_bci);
 344 
 345   // JSR 292 support
 346   bool for_method_handle_inline(ciMethod* callee);
 347   bool for_invokedynamic_inline(ciMethod* callee);
 348 
 349   // helpers
 350   void inline_bailout(const char* msg);
 351   BlockBegin* header_block(BlockBegin* entry, BlockBegin::Flag f, ValueStack* state);
 352   BlockBegin* setup_start_block(int osr_bci, BlockBegin* std_entry, BlockBegin* osr_entry, ValueStack* init_state);
 353   void setup_osr_entry_block();
 354   void clear_inline_bailout();
 355   ValueStack* state_at_entry();
 356   void push_root_scope(IRScope* scope, BlockList* bci2block, BlockBegin* start);
 357   void push_scope(ciMethod* callee, BlockBegin* continuation);
 358   void push_scope_for_jsr(BlockBegin* jsr_continuation, int jsr_dest_bci);
 359   void pop_scope();
 360   void pop_scope_for_jsr();
 361 
 362   bool append_unsafe_get_obj(ciMethod* callee, BasicType t, bool is_volatile);




 320   }
 321   BlockBegin*  inline_cleanup_block() const              { return scope_data()->inline_cleanup_block();  }
 322   Instruction* inline_cleanup_return_prev() const        { return scope_data()->inline_cleanup_return_prev(); }
 323   ValueStack*  inline_cleanup_state() const              { return scope_data()->inline_cleanup_state();  }
 324   void restore_inline_cleanup_info() {
 325     _block = inline_cleanup_block();
 326     _last  = inline_cleanup_return_prev();
 327     _state = inline_cleanup_state();
 328   }
 329   void incr_num_returns()                                { scope_data()->incr_num_returns();             }
 330   int  num_returns() const                               { return scope_data()->num_returns();           }
 331   intx max_inline_size() const                           { return scope_data()->max_inline_size();       }
 332   int  inline_level() const                              { return scope()->level();                      }
 333   int  recursive_inline_level(ciMethod* callee) const;
 334 
 335   // inlining of synchronized methods
 336   void inline_sync_entry(Value lock, BlockBegin* sync_handler);
 337   void fill_sync_handler(Value lock, BlockBegin* sync_handler, bool default_handler = false);
 338 
 339   // inliners
 340   bool try_inline(           ciMethod* callee, bool holder_known, bool* do_profiling, Value dynamic_receiver);
 341   bool try_inline_intrinsics(ciMethod* callee);
 342   bool try_inline_full(      ciMethod* callee, bool holder_known, bool* do_profiling, Value dynamic_receiver, BlockBegin* cont_block = NULL);
 343   bool try_inline_jsr(int jsr_dest_bci);
 344 
 345   // JSR 292 support
 346   bool for_method_handle_inline(ciMethod* callee);
 347   bool for_invokedynamic_inline(ciMethod* callee);
 348 
 349   // helpers
 350   void inline_bailout(const char* msg);
 351   BlockBegin* header_block(BlockBegin* entry, BlockBegin::Flag f, ValueStack* state);
 352   BlockBegin* setup_start_block(int osr_bci, BlockBegin* std_entry, BlockBegin* osr_entry, ValueStack* init_state);
 353   void setup_osr_entry_block();
 354   void clear_inline_bailout();
 355   ValueStack* state_at_entry();
 356   void push_root_scope(IRScope* scope, BlockList* bci2block, BlockBegin* start);
 357   void push_scope(ciMethod* callee, BlockBegin* continuation);
 358   void push_scope_for_jsr(BlockBegin* jsr_continuation, int jsr_dest_bci);
 359   void pop_scope();
 360   void pop_scope_for_jsr();
 361 
 362   bool append_unsafe_get_obj(ciMethod* callee, BasicType t, bool is_volatile);