< prev index next >

src/hotspot/share/c1/c1_GraphBuilder.hpp

Print this page




  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_VM_C1_C1_GRAPHBUILDER_HPP
  26 #define SHARE_VM_C1_C1_GRAPHBUILDER_HPP
  27 
  28 #include "c1/c1_IR.hpp"
  29 #include "c1/c1_Instruction.hpp"
  30 #include "c1/c1_ValueMap.hpp"
  31 #include "c1/c1_ValueStack.hpp"
  32 #include "ci/ciMethodData.hpp"
  33 #include "ci/ciStreams.hpp"
  34 #include "compiler/compileLog.hpp"
  35 
  36 class MemoryBuffer;
  37 
  38 class GraphBuilder VALUE_OBJ_CLASS_SPEC {
  39  private:
  40   // Per-scope data. These are pushed and popped as we descend into
  41   // inlined methods. Currently in order to generate good code in the
  42   // inliner we have to attempt to inline methods directly into the
  43   // basic block we are parsing; this adds complexity.
  44   class ScopeData: public CompilationResourceObj {
  45    private:
  46     ScopeData*  _parent;
  47     // bci-to-block mapping
  48     BlockList*   _bci2block;
  49     // Scope
  50     IRScope*     _scope;
  51     // Whether this scope or any parent scope has exception handlers
  52     bool         _has_handler;
  53     // The bytecodes
  54     ciBytecodeStream* _stream;
  55 
  56     // Work list
  57     BlockList*   _work_list;
  58 




  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 #ifndef SHARE_VM_C1_C1_GRAPHBUILDER_HPP
  26 #define SHARE_VM_C1_C1_GRAPHBUILDER_HPP
  27 
  28 #include "c1/c1_IR.hpp"
  29 #include "c1/c1_Instruction.hpp"
  30 #include "c1/c1_ValueMap.hpp"
  31 #include "c1/c1_ValueStack.hpp"
  32 #include "ci/ciMethodData.hpp"
  33 #include "ci/ciStreams.hpp"
  34 #include "compiler/compileLog.hpp"
  35 
  36 class MemoryBuffer;
  37 
  38 class GraphBuilder {
  39  private:
  40   // Per-scope data. These are pushed and popped as we descend into
  41   // inlined methods. Currently in order to generate good code in the
  42   // inliner we have to attempt to inline methods directly into the
  43   // basic block we are parsing; this adds complexity.
  44   class ScopeData: public CompilationResourceObj {
  45    private:
  46     ScopeData*  _parent;
  47     // bci-to-block mapping
  48     BlockList*   _bci2block;
  49     // Scope
  50     IRScope*     _scope;
  51     // Whether this scope or any parent scope has exception handlers
  52     bool         _has_handler;
  53     // The bytecodes
  54     ciBytecodeStream* _stream;
  55 
  56     // Work list
  57     BlockList*   _work_list;
  58 


< prev index next >