52
53 #ifdef COMPILER1
54 #define compilerdirectives_c1_flags(cflags)
55 #else
56 #define compilerdirectives_c1_flags(cflags)
57 #endif
58
59 #ifdef COMPILER2
60 #define compilerdirectives_c2_flags(cflags) \
61 cflags(BlockLayoutByFrequency, bool, BlockLayoutByFrequency, BlockLayoutByFrequency) \
62 cflags(PrintOptoAssembly, bool, PrintOptoAssembly, PrintOptoAssembly) \
63 cflags(PrintIntrinsics, bool, PrintIntrinsics, PrintIntrinsics) \
64 NOT_PRODUCT(cflags(TraceOptoPipelining, bool, TraceOptoPipelining, TraceOptoPipelining)) \
65 NOT_PRODUCT(cflags(TraceOptoOutput, bool, TraceOptoOutput, TraceOptoOutput)) \
66 NOT_PRODUCT(cflags(PrintIdeal, bool, PrintIdeal, PrintIdeal)) \
67 NOT_PRODUCT(cflags(IGVPrintLevel, intx, PrintIdealGraphLevel, IGVPrintLevel)) \
68 cflags(TraceSpilling, bool, TraceSpilling, TraceSpilling) \
69 cflags(Vectorize, bool, false, Vectorize) \
70 cflags(VectorizeDebug, uintx, 0, VectorizeDebug) \
71 cflags(CloneMapDebug, bool, false, CloneMapDebug) \
72 cflags(MaxNodeLimit, intx, MaxNodeLimit, MaxNodeLimit)
73 #else
74 #define compilerdirectives_c2_flags(cflags)
75 #endif
76
77 class CompilerDirectives;
78 class DirectiveSet;
79
80 class DirectivesStack : AllStatic {
81 private:
82 static CompilerDirectives* _top;
83 static CompilerDirectives* _bottom;
84 static int _depth;
85
86 static void pop_inner(); // no lock version of pop
87 public:
88 static void init();
89 static DirectiveSet* getMatchingDirective(const methodHandle& mh, AbstractCompiler* comp);
90 static DirectiveSet* getDefaultDirective(AbstractCompiler* comp);
91 static void push(CompilerDirectives* directive);
92 static void pop(int count);
|
52
53 #ifdef COMPILER1
54 #define compilerdirectives_c1_flags(cflags)
55 #else
56 #define compilerdirectives_c1_flags(cflags)
57 #endif
58
59 #ifdef COMPILER2
60 #define compilerdirectives_c2_flags(cflags) \
61 cflags(BlockLayoutByFrequency, bool, BlockLayoutByFrequency, BlockLayoutByFrequency) \
62 cflags(PrintOptoAssembly, bool, PrintOptoAssembly, PrintOptoAssembly) \
63 cflags(PrintIntrinsics, bool, PrintIntrinsics, PrintIntrinsics) \
64 NOT_PRODUCT(cflags(TraceOptoPipelining, bool, TraceOptoPipelining, TraceOptoPipelining)) \
65 NOT_PRODUCT(cflags(TraceOptoOutput, bool, TraceOptoOutput, TraceOptoOutput)) \
66 NOT_PRODUCT(cflags(PrintIdeal, bool, PrintIdeal, PrintIdeal)) \
67 NOT_PRODUCT(cflags(IGVPrintLevel, intx, PrintIdealGraphLevel, IGVPrintLevel)) \
68 cflags(TraceSpilling, bool, TraceSpilling, TraceSpilling) \
69 cflags(Vectorize, bool, false, Vectorize) \
70 cflags(VectorizeDebug, uintx, 0, VectorizeDebug) \
71 cflags(CloneMapDebug, bool, false, CloneMapDebug) \
72 cflags(MaxNodeLimit, intx, MaxNodeLimit, MaxNodeLimit) \
73 NOT_PRODUCT(cflags(PrintEscapeAnalysis, bool, PrintEscapeAnalysis, PrintEscapeAnalysis)) \
74 NOT_PRODUCT(cflags(PrintEliminateAllocations, bool, PrintEliminateAllocations, PrintEliminateAllocations)) \
75 cflags(UseStackAllocation, bool, UseStackAllocation, UseStackAllocation) \
76 NOT_PRODUCT(cflags(PrintStackAllocation, bool, PrintStackAllocation, PrintStackAllocation))
77 #else
78 #define compilerdirectives_c2_flags(cflags)
79 #endif
80
81 class CompilerDirectives;
82 class DirectiveSet;
83
84 class DirectivesStack : AllStatic {
85 private:
86 static CompilerDirectives* _top;
87 static CompilerDirectives* _bottom;
88 static int _depth;
89
90 static void pop_inner(); // no lock version of pop
91 public:
92 static void init();
93 static DirectiveSet* getMatchingDirective(const methodHandle& mh, AbstractCompiler* comp);
94 static DirectiveSet* getDefaultDirective(AbstractCompiler* comp);
95 static void push(CompilerDirectives* directive);
96 static void pop(int count);
|