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
|