aoqi@0: /* aoqi@0: * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. aoqi@0: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. aoqi@0: * aoqi@0: * This code is free software; you can redistribute it and/or modify it aoqi@0: * under the terms of the GNU General Public License version 2 only, as aoqi@0: * published by the Free Software Foundation. aoqi@0: * aoqi@0: * This code is distributed in the hope that it will be useful, but WITHOUT aoqi@0: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or aoqi@0: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License aoqi@0: * version 2 for more details (a copy is included in the LICENSE file that aoqi@0: * accompanied this code). aoqi@0: * aoqi@0: * You should have received a copy of the GNU General Public License version aoqi@0: * 2 along with this work; if not, write to the Free Software Foundation, aoqi@0: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. aoqi@0: * aoqi@0: * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA aoqi@0: * or visit www.oracle.com if you need additional information or have any aoqi@0: * questions. aoqi@0: * aoqi@0: */ aoqi@0: aoqi@0: #ifndef SHARE_VM_OPTO_PHASETYPE_HPP aoqi@0: #define SHARE_VM_OPTO_PHASETYPE_HPP aoqi@0: aoqi@0: enum CompilerPhaseType { aoqi@0: PHASE_BEFORE_STRINGOPTS, aoqi@0: PHASE_AFTER_STRINGOPTS, aoqi@0: PHASE_BEFORE_REMOVEUSELESS, aoqi@0: PHASE_AFTER_PARSING, aoqi@0: PHASE_ITER_GVN1, aoqi@0: PHASE_PHASEIDEAL_BEFORE_EA, aoqi@0: PHASE_ITER_GVN_AFTER_EA, aoqi@0: PHASE_ITER_GVN_AFTER_ELIMINATION, aoqi@0: PHASE_PHASEIDEALLOOP1, aoqi@0: PHASE_PHASEIDEALLOOP2, aoqi@0: PHASE_PHASEIDEALLOOP3, aoqi@0: PHASE_CPP1, aoqi@0: PHASE_ITER_GVN2, aoqi@0: PHASE_PHASEIDEALLOOP_ITERATIONS, aoqi@0: PHASE_OPTIMIZE_FINISHED, aoqi@0: PHASE_GLOBAL_CODE_MOTION, aoqi@0: PHASE_FINAL_CODE, aoqi@0: PHASE_AFTER_EA, aoqi@0: PHASE_BEFORE_CLOOPS, aoqi@0: PHASE_AFTER_CLOOPS, aoqi@0: PHASE_BEFORE_BEAUTIFY_LOOPS, aoqi@0: PHASE_AFTER_BEAUTIFY_LOOPS, aoqi@0: PHASE_BEFORE_MATCHING, aoqi@0: PHASE_INCREMENTAL_INLINE, aoqi@0: PHASE_INCREMENTAL_BOXING_INLINE, aoqi@0: PHASE_END, aoqi@0: PHASE_FAILURE, aoqi@0: aoqi@0: PHASE_NUM_TYPES aoqi@0: }; aoqi@0: aoqi@0: class CompilerPhaseTypeHelper { aoqi@0: public: aoqi@0: static const char* to_string(CompilerPhaseType cpt) { aoqi@0: switch (cpt) { aoqi@0: case PHASE_BEFORE_STRINGOPTS: return "Before StringOpts"; aoqi@0: case PHASE_AFTER_STRINGOPTS: return "After StringOpts"; aoqi@0: case PHASE_BEFORE_REMOVEUSELESS: return "Before RemoveUseless"; aoqi@0: case PHASE_AFTER_PARSING: return "After Parsing"; aoqi@0: case PHASE_ITER_GVN1: return "Iter GVN 1"; aoqi@0: case PHASE_PHASEIDEAL_BEFORE_EA: return "PhaseIdealLoop before EA"; aoqi@0: case PHASE_ITER_GVN_AFTER_EA: return "Iter GVN after EA"; aoqi@0: case PHASE_ITER_GVN_AFTER_ELIMINATION: return "Iter GVN after eliminating allocations and locks"; aoqi@0: case PHASE_PHASEIDEALLOOP1: return "PhaseIdealLoop 1"; aoqi@0: case PHASE_PHASEIDEALLOOP2: return "PhaseIdealLoop 2"; aoqi@0: case PHASE_PHASEIDEALLOOP3: return "PhaseIdealLoop 3"; aoqi@0: case PHASE_CPP1: return "PhaseCPP 1"; aoqi@0: case PHASE_ITER_GVN2: return "Iter GVN 2"; aoqi@0: case PHASE_PHASEIDEALLOOP_ITERATIONS: return "PhaseIdealLoop iterations"; aoqi@0: case PHASE_OPTIMIZE_FINISHED: return "Optimize finished"; aoqi@0: case PHASE_GLOBAL_CODE_MOTION: return "Global code motion"; aoqi@0: case PHASE_FINAL_CODE: return "Final Code"; aoqi@0: case PHASE_AFTER_EA: return "After Escape Analysis"; aoqi@0: case PHASE_BEFORE_CLOOPS: return "Before CountedLoop"; aoqi@0: case PHASE_AFTER_CLOOPS: return "After CountedLoop"; aoqi@0: case PHASE_BEFORE_BEAUTIFY_LOOPS: return "Before beautify loops"; aoqi@0: case PHASE_AFTER_BEAUTIFY_LOOPS: return "After beautify loops"; aoqi@0: case PHASE_BEFORE_MATCHING: return "Before Matching"; aoqi@0: case PHASE_INCREMENTAL_INLINE: return "Incremental Inline"; aoqi@0: case PHASE_INCREMENTAL_BOXING_INLINE: return "Incremental Boxing Inline"; aoqi@0: case PHASE_END: return "End"; aoqi@0: case PHASE_FAILURE: return "Failure"; aoqi@0: default: aoqi@0: ShouldNotReachHere(); aoqi@0: return NULL; aoqi@0: } aoqi@0: } aoqi@0: }; aoqi@0: aoqi@0: #endif //SHARE_VM_OPTO_PHASETYPE_HPP