hotspot/src/share/vm/c1/c1_GraphBuilder.hpp
changeset 13391 30245956af37
parent 11635 5a16856f871f
child 13522 5ad4627e792a
equal deleted inserted replaced
13309:50c604cb0d5f 13391:30245956af37
   223 
   223 
   224   // instruction helpers
   224   // instruction helpers
   225   void load_constant();
   225   void load_constant();
   226   void load_local(ValueType* type, int index);
   226   void load_local(ValueType* type, int index);
   227   void store_local(ValueType* type, int index);
   227   void store_local(ValueType* type, int index);
   228   void store_local(ValueStack* state, Value value, ValueType* type, int index);
   228   void store_local(ValueStack* state, Value value, int index);
   229   void load_indexed (BasicType type);
   229   void load_indexed (BasicType type);
   230   void store_indexed(BasicType type);
   230   void store_indexed(BasicType type);
   231   void stack_op(Bytecodes::Code code);
   231   void stack_op(Bytecodes::Code code);
   232   void arithmetic_op(ValueType* type, Bytecodes::Code code, ValueStack* state_before = NULL);
   232   void arithmetic_op(ValueType* type, Bytecodes::Code code, ValueStack* state_before = NULL);
   233   void negate_op(ValueType* type);
   233   void negate_op(ValueType* type);
   335   // inlining of synchronized methods
   335   // inlining of synchronized methods
   336   void inline_sync_entry(Value lock, BlockBegin* sync_handler);
   336   void inline_sync_entry(Value lock, BlockBegin* sync_handler);
   337   void fill_sync_handler(Value lock, BlockBegin* sync_handler, bool default_handler = false);
   337   void fill_sync_handler(Value lock, BlockBegin* sync_handler, bool default_handler = false);
   338 
   338 
   339   // inliners
   339   // inliners
   340   bool try_inline(           ciMethod* callee, bool holder_known, Value receiver = NULL);
   340   bool try_inline(           ciMethod* callee, bool holder_known, Bytecodes::Code bc = Bytecodes::_illegal, Value receiver = NULL);
   341   bool try_inline_intrinsics(ciMethod* callee);
   341   bool try_inline_intrinsics(ciMethod* callee);
   342   bool try_inline_full(      ciMethod* callee, bool holder_known, BlockBegin* cont_block, Value receiver);
   342   bool try_inline_full(      ciMethod* callee, bool holder_known, Bytecodes::Code bc = Bytecodes::_illegal, Value receiver = NULL);
   343   bool try_inline_jsr(int jsr_dest_bci);
   343   bool try_inline_jsr(int jsr_dest_bci);
       
   344 
       
   345   const char* check_can_parse(ciMethod* callee) const;
       
   346   const char* should_not_inline(ciMethod* callee) const;
   344 
   347 
   345   // JSR 292 support
   348   // JSR 292 support
   346   bool for_method_handle_inline(ciMethod* callee);
   349   bool for_method_handle_inline(ciMethod* callee);
   347   bool for_invokedynamic_inline(ciMethod* callee);
       
   348 
   350 
   349   // helpers
   351   // helpers
   350   void inline_bailout(const char* msg);
   352   void inline_bailout(const char* msg);
   351   BlockBegin* header_block(BlockBegin* entry, BlockBegin::Flag f, ValueStack* state);
   353   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);
   354   BlockBegin* setup_start_block(int osr_bci, BlockBegin* std_entry, BlockBegin* osr_entry, ValueStack* init_state);
   364   bool append_unsafe_get_raw(ciMethod* callee, BasicType t);
   366   bool append_unsafe_get_raw(ciMethod* callee, BasicType t);
   365   bool append_unsafe_put_raw(ciMethod* callee, BasicType t);
   367   bool append_unsafe_put_raw(ciMethod* callee, BasicType t);
   366   bool append_unsafe_prefetch(ciMethod* callee, bool is_store, bool is_static);
   368   bool append_unsafe_prefetch(ciMethod* callee, bool is_store, bool is_static);
   367   void append_unsafe_CAS(ciMethod* callee);
   369   void append_unsafe_CAS(ciMethod* callee);
   368 
   370 
   369   NOT_PRODUCT(void print_inline_result(ciMethod* callee, bool res);)
   371   void print_inlining(ciMethod* callee, const char* msg, bool success = true);
   370 
   372 
   371   void profile_call(Value recv, ciKlass* predicted_holder);
   373   void profile_call(ciMethod* callee, Value recv, ciKlass* predicted_holder);
   372   void profile_invocation(ciMethod* inlinee, ValueStack* state);
   374   void profile_invocation(ciMethod* inlinee, ValueStack* state);
   373 
   375 
   374   // Shortcuts to profiling control.
   376   // Shortcuts to profiling control.
   375   bool is_profiling()          { return _compilation->is_profiling();          }
   377   bool is_profiling()          { return _compilation->is_profiling();          }
   376   bool count_invocations()     { return _compilation->count_invocations();     }
   378   bool count_invocations()     { return _compilation->count_invocations();     }