hotspot/src/share/vm/c1/c1_Optimizer.cpp
changeset 13974 791cba24758f
parent 13963 e5b53c306fb5
parent 13964 01a2b863cc61
child 16611 6807a703dd6b
equal deleted inserted replaced
13963:e5b53c306fb5 13974:791cba24758f
    27 #include "c1/c1_Optimizer.hpp"
    27 #include "c1/c1_Optimizer.hpp"
    28 #include "c1/c1_ValueMap.hpp"
    28 #include "c1/c1_ValueMap.hpp"
    29 #include "c1/c1_ValueSet.hpp"
    29 #include "c1/c1_ValueSet.hpp"
    30 #include "c1/c1_ValueStack.hpp"
    30 #include "c1/c1_ValueStack.hpp"
    31 #include "utilities/bitMap.inline.hpp"
    31 #include "utilities/bitMap.inline.hpp"
       
    32 #include "compiler/compileLog.hpp"
    32 
    33 
    33 define_array(ValueSetArray, ValueSet*);
    34 define_array(ValueSetArray, ValueSet*);
    34 define_stack(ValueSetList, ValueSetArray);
    35 define_stack(ValueSetList, ValueSetArray);
    35 
    36 
    36 
    37 
    52     _hir->iterate_preorder(this);
    53     _hir->iterate_preorder(this);
    53     if (_has_substitution) {
    54     if (_has_substitution) {
    54       // substituted some ifops/phis, so resolve the substitution
    55       // substituted some ifops/phis, so resolve the substitution
    55       SubstitutionResolver sr(_hir);
    56       SubstitutionResolver sr(_hir);
    56     }
    57     }
    57   }
    58 
       
    59     CompileLog* log = _hir->compilation()->log();
       
    60     if (log != NULL)
       
    61       log->set_context("optimize name='cee'");
       
    62   }
       
    63 
       
    64   ~CE_Eliminator() {
       
    65     CompileLog* log = _hir->compilation()->log();
       
    66     if (log != NULL)
       
    67       log->clear_context(); // skip marker if nothing was printed
       
    68   }
       
    69 
    58   int cee_count() const                          { return _cee_count; }
    70   int cee_count() const                          { return _cee_count; }
    59   int ifop_count() const                         { return _ifop_count; }
    71   int ifop_count() const                         { return _ifop_count; }
    60 
    72 
    61   void adjust_exception_edges(BlockBegin* block, BlockBegin* sux) {
    73   void adjust_exception_edges(BlockBegin* block, BlockBegin* sux) {
    62     int e = sux->number_of_exception_handlers();
    74     int e = sux->number_of_exception_handlers();
   304   BlockMerger(IR* hir)
   316   BlockMerger(IR* hir)
   305   : _hir(hir)
   317   : _hir(hir)
   306   , _merge_count(0)
   318   , _merge_count(0)
   307   {
   319   {
   308     _hir->iterate_preorder(this);
   320     _hir->iterate_preorder(this);
       
   321     CompileLog* log = _hir->compilation()->log();
       
   322     if (log != NULL)
       
   323       log->set_context("optimize name='eliminate_blocks'");
       
   324   }
       
   325 
       
   326   ~BlockMerger() {
       
   327     CompileLog* log = _hir->compilation()->log();
       
   328     if (log != NULL)
       
   329       log->clear_context(); // skip marker if nothing was printed
   309   }
   330   }
   310 
   331 
   311   bool try_merge(BlockBegin* block) {
   332   bool try_merge(BlockBegin* block) {
   312     BlockEnd* end = block->end();
   333     BlockEnd* end = block->end();
   313     if (end->as_Goto() != NULL) {
   334     if (end->as_Goto() != NULL) {
   572     , _last_explicit_null_check(NULL)
   593     , _last_explicit_null_check(NULL)
   573     , _block_states(BlockBegin::number_of_blocks(), NULL)
   594     , _block_states(BlockBegin::number_of_blocks(), NULL)
   574     , _work_list(new BlockList()) {
   595     , _work_list(new BlockList()) {
   575     _visitable_instructions = new ValueSet();
   596     _visitable_instructions = new ValueSet();
   576     _visitor.set_eliminator(this);
   597     _visitor.set_eliminator(this);
       
   598     CompileLog* log = _opt->ir()->compilation()->log();
       
   599     if (log != NULL)
       
   600       log->set_context("optimize name='null_check_elimination'");
       
   601   }
       
   602 
       
   603   ~NullCheckEliminator() {
       
   604     CompileLog* log = _opt->ir()->compilation()->log();
       
   605     if (log != NULL)
       
   606       log->clear_context(); // skip marker if nothing was printed
   577   }
   607   }
   578 
   608 
   579   Optimizer*  opt()                               { return _opt; }
   609   Optimizer*  opt()                               { return _opt; }
   580   IR*         ir ()                               { return opt()->ir(); }
   610   IR*         ir ()                               { return opt()->ir(); }
   581 
   611