author | neliasso |
Tue, 04 Dec 2018 18:55:06 +0100 | |
changeset 52894 | 8df9cf767f79 |
parent 50525 | 767cdb97f103 |
child 53244 | 9807daeb47c4 |
permissions | -rw-r--r-- |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
1 |
/* |
46727
6e4a84748e2c
8183039: Re-examine methodHandle methods uninlined by 8144256
coleenp
parents:
46638
diff
changeset
|
2 |
* Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved. |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
4 |
* |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
5 |
* This code is free software; you can redistribute it and/or modify it |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation. |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
8 |
* |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
9 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
10 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
11 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
12 |
* version 2 for more details (a copy is included in the LICENSE file that |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
13 |
* accompanied this code). |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
14 |
* |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
15 |
* You should have received a copy of the GNU General Public License version |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
16 |
* 2 along with this work; if not, write to the Free Software Foundation, |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
17 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
18 |
* |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
19 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
20 |
* or visit www.oracle.com if you need additional information or have any |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
21 |
* questions. |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
22 |
* |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
23 |
*/ |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
24 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
25 |
#ifndef SHARE_VM_COMPILER_COMPILERDIRECTIVES_HPP |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
26 |
#define SHARE_VM_COMPILER_COMPILERDIRECTIVES_HPP |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
27 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
28 |
#include "ci/ciMetadata.hpp" |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
29 |
#include "ci/ciMethod.hpp" |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
30 |
#include "compiler/methodMatcher.hpp" |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
31 |
#include "compiler/compilerOracle.hpp" |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
32 |
#include "utilities/exceptions.hpp" |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
33 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
34 |
// Directives flag name, type, default value, compile command name |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
35 |
#define compilerdirectives_common_flags(cflags) \ |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
36 |
cflags(Enable, bool, false, X) \ |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
37 |
cflags(Exclude, bool, false, X) \ |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
38 |
cflags(BreakAtExecute, bool, false, X) \ |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
39 |
cflags(BreakAtCompile, bool, false, X) \ |
35130
223598d44a8b
8145345: LogCompilation output is empty after JEP165: Compiler Control
neliasso
parents:
35129
diff
changeset
|
40 |
cflags(Log, bool, LogCompilation, X) \ |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
41 |
cflags(PrintAssembly, bool, PrintAssembly, PrintAssembly) \ |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
42 |
cflags(PrintInlining, bool, PrintInlining, PrintInlining) \ |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
43 |
cflags(PrintNMethods, bool, PrintNMethods, PrintNMethods) \ |
36597
ee256e343585
8150646: Add support for blocking compiles though whitebox API
simonis
parents:
35135
diff
changeset
|
44 |
cflags(BackgroundCompilation, bool, BackgroundCompilation, BackgroundCompilation) \ |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
45 |
cflags(ReplayInline, bool, false, ReplayInline) \ |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
46 |
cflags(DumpReplay, bool, false, DumpReplay) \ |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
47 |
cflags(DumpInline, bool, false, DumpInline) \ |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
48 |
cflags(CompilerDirectivesIgnoreCompileCommands, bool, CompilerDirectivesIgnoreCompileCommands, X) \ |
33480
e4cef6796874
8138651: -XX:DisableIntrinsic matches intrinsics overly eagerly
zmajo
parents:
33456
diff
changeset
|
49 |
cflags(DisableIntrinsic, ccstrlist, DisableIntrinsic, DisableIntrinsic) |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
50 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
51 |
#ifdef COMPILER1 |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
52 |
#define compilerdirectives_c1_flags(cflags) |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
53 |
#else |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
54 |
#define compilerdirectives_c1_flags(cflags) |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
55 |
#endif |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
56 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
57 |
#ifdef COMPILER2 |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
58 |
#define compilerdirectives_c2_flags(cflags) \ |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
59 |
cflags(BlockLayoutByFrequency, bool, BlockLayoutByFrequency, BlockLayoutByFrequency) \ |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
60 |
cflags(PrintOptoAssembly, bool, PrintOptoAssembly, PrintOptoAssembly) \ |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
61 |
cflags(PrintIntrinsics, bool, PrintIntrinsics, PrintIntrinsics) \ |
43456
ff64053e7c5f
8172884: TraceOptoPipelining and TraceOptoOutput are broken
thartmann
parents:
42617
diff
changeset
|
62 |
NOT_PRODUCT(cflags(TraceOptoPipelining, bool, TraceOptoPipelining, TraceOptoPipelining)) \ |
ff64053e7c5f
8172884: TraceOptoPipelining and TraceOptoOutput are broken
thartmann
parents:
42617
diff
changeset
|
63 |
NOT_PRODUCT(cflags(TraceOptoOutput, bool, TraceOptoOutput, TraceOptoOutput)) \ |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
64 |
cflags(TraceSpilling, bool, TraceSpilling, TraceSpilling) \ |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
65 |
cflags(Vectorize, bool, false, Vectorize) \ |
46638
3c5c50af29a7
8183271: VectorizeDebug compiler directive command is broken
neliasso
parents:
43456
diff
changeset
|
66 |
cflags(VectorizeDebug, uintx, 0, VectorizeDebug) \ |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
67 |
cflags(CloneMapDebug, bool, false, CloneMapDebug) \ |
34174
4db2fb26dc49
8140424: don't prefix developer and notproduct flag variables with CONST_ in product builds
twisti
parents:
33480
diff
changeset
|
68 |
cflags(IGVPrintLevel, intx, PrintIdealGraphLevel, IGVPrintLevel) \ |
50525
767cdb97f103
8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
49449
diff
changeset
|
69 |
cflags(MaxNodeLimit, intx, MaxNodeLimit, MaxNodeLimit) \ |
767cdb97f103
8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
49449
diff
changeset
|
70 |
ZGC_ONLY(cflags(ZOptimizeLoadBarriers, bool, ZOptimizeLoadBarriers, ZOptimizeLoadBarriers)) |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
71 |
#else |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
72 |
#define compilerdirectives_c2_flags(cflags) |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
73 |
#endif |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
74 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
75 |
class CompilerDirectives; |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
76 |
class DirectiveSet; |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
77 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
78 |
class DirectivesStack : AllStatic { |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
79 |
private: |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
80 |
static CompilerDirectives* _top; |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
81 |
static CompilerDirectives* _bottom; |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
82 |
static int _depth; |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
83 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
84 |
static void pop_inner(); // no lock version of pop |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
85 |
public: |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
86 |
static void init(); |
46727
6e4a84748e2c
8183039: Re-examine methodHandle methods uninlined by 8144256
coleenp
parents:
46638
diff
changeset
|
87 |
static DirectiveSet* getMatchingDirective(const methodHandle& mh, AbstractCompiler* comp); |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
88 |
static DirectiveSet* getDefaultDirective(AbstractCompiler* comp); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
89 |
static void push(CompilerDirectives* directive); |
36597
ee256e343585
8150646: Add support for blocking compiles though whitebox API
simonis
parents:
35135
diff
changeset
|
90 |
static void pop(int count); |
35129
8b93709bf4e5
8144246: adding lots of directives via jcmd may produce OOM crash
neliasso
parents:
34174
diff
changeset
|
91 |
static bool check_capacity(int request_size, outputStream* st); |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
92 |
static void clear(); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
93 |
static void print(outputStream* st); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
94 |
static void release(DirectiveSet* set); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
95 |
static void release(CompilerDirectives* dir); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
96 |
}; |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
97 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
98 |
class DirectiveSet : public CHeapObj<mtCompiler> { |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
99 |
private: |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
100 |
InlineMatcher* _inlinematchers; |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
101 |
CompilerDirectives* _directive; |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
102 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
103 |
public: |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
104 |
DirectiveSet(CompilerDirectives* directive); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
105 |
~DirectiveSet(); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
106 |
CompilerDirectives* directive(); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
107 |
bool parse_and_add_inline(char* str, const char*& error_msg); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
108 |
void append_inline(InlineMatcher* m); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
109 |
bool should_inline(ciMethod* inlinee); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
110 |
bool should_not_inline(ciMethod* inlinee); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
111 |
void print_inline(outputStream* st); |
46727
6e4a84748e2c
8183039: Re-examine methodHandle methods uninlined by 8144256
coleenp
parents:
46638
diff
changeset
|
112 |
DirectiveSet* compilecommand_compatibility_init(const methodHandle& method); |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
113 |
bool is_exclusive_copy() { return _directive == NULL; } |
46727
6e4a84748e2c
8183039: Re-examine methodHandle methods uninlined by 8144256
coleenp
parents:
46638
diff
changeset
|
114 |
bool matches_inline(const methodHandle& method, int inline_action); |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
115 |
static DirectiveSet* clone(DirectiveSet const* src); |
46727
6e4a84748e2c
8183039: Re-examine methodHandle methods uninlined by 8144256
coleenp
parents:
46638
diff
changeset
|
116 |
bool is_intrinsic_disabled(const methodHandle& method); |
38699
f8bec5f6b09c
8154473: Update for CompilerDirectives to control stub generation and intrinsics
vdeshpande
parents:
38696
diff
changeset
|
117 |
static ccstrlist canonicalize_disableintrinsic(ccstrlist option_value); |
35130
223598d44a8b
8145345: LogCompilation output is empty after JEP165: Compiler Control
neliasso
parents:
35129
diff
changeset
|
118 |
void finalize(outputStream* st); |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
119 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
120 |
typedef enum { |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
121 |
#define enum_of_flags(name, type, dvalue, cc_flag) name##Index, |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
122 |
compilerdirectives_common_flags(enum_of_flags) |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
123 |
compilerdirectives_c2_flags(enum_of_flags) |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
124 |
compilerdirectives_c1_flags(enum_of_flags) |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
125 |
number_of_flags |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
126 |
} flags; |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
127 |
|
38696
441abd3b3345
8155108: CompilerControl: tests incorrectly set states for excluded methods
neliasso
parents:
36597
diff
changeset
|
128 |
bool _modified[number_of_flags]; // Records what options where set by a directive |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
129 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
130 |
#define flag_store_definition(name, type, dvalue, cc_flag) type name##Option; |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
131 |
compilerdirectives_common_flags(flag_store_definition) |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
132 |
compilerdirectives_c2_flags(flag_store_definition) |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
133 |
compilerdirectives_c1_flags(flag_store_definition) |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
134 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
135 |
// Casting to get the same function signature for all setters. Used from parser. |
38696
441abd3b3345
8155108: CompilerControl: tests incorrectly set states for excluded methods
neliasso
parents:
36597
diff
changeset
|
136 |
#define set_function_definition(name, type, dvalue, cc_flag) void set_##name(void* value) { type val = *(type*)value; name##Option = val; _modified[name##Index] = true; } |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
137 |
compilerdirectives_common_flags(set_function_definition) |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
138 |
compilerdirectives_c2_flags(set_function_definition) |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
139 |
compilerdirectives_c1_flags(set_function_definition) |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
140 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
141 |
void print_intx(outputStream* st, ccstr n, intx v, bool mod) { if (mod) { st->print("%s:" INTX_FORMAT " ", n, v); } } |
42617
9ac2fe949f27
8170416: CompilerControl: VectorizeDebug option type is incorrect
kvn
parents:
38699
diff
changeset
|
142 |
void print_uintx(outputStream* st, ccstr n, intx v, bool mod) { if (mod) { st->print("%s:" UINTX_FORMAT " ", n, v); } } |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
143 |
void print_bool(outputStream* st, ccstr n, bool v, bool mod) { if (mod) { st->print("%s:%s ", n, v ? "true" : "false"); } } |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
144 |
void print_double(outputStream* st, ccstr n, double v, bool mod) { if (mod) { st->print("%s:%f ", n, v); } } |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
145 |
void print_ccstr(outputStream* st, ccstr n, ccstr v, bool mod) { if (mod) { st->print("%s:%s ", n, v); } } |
33480
e4cef6796874
8138651: -XX:DisableIntrinsic matches intrinsics overly eagerly
zmajo
parents:
33456
diff
changeset
|
146 |
void print_ccstrlist(outputStream* st, ccstr n, ccstr v, bool mod) { print_ccstr(st, n, v, mod); } |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
147 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
148 |
void print(outputStream* st) { |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
149 |
print_inline(st); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
150 |
st->print(" "); |
38696
441abd3b3345
8155108: CompilerControl: tests incorrectly set states for excluded methods
neliasso
parents:
36597
diff
changeset
|
151 |
#define print_function_definition(name, type, dvalue, cc_flag) print_##type(st, #name, this->name##Option, true); |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
152 |
compilerdirectives_common_flags(print_function_definition) |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
153 |
compilerdirectives_c2_flags(print_function_definition) |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
154 |
compilerdirectives_c1_flags(print_function_definition) |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
155 |
st->cr(); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
156 |
} |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
157 |
}; |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
158 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
159 |
class CompilerDirectives : public CHeapObj<mtCompiler> { |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
160 |
private: |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
161 |
CompilerDirectives* _next; |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
162 |
BasicMatcher* _match; |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
163 |
int _ref_count; |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
164 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
165 |
public: |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
166 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
167 |
CompilerDirectives(); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
168 |
~CompilerDirectives(); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
169 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
170 |
CompilerDirectives* next(); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
171 |
void set_next(CompilerDirectives* next) {_next = next; } |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
172 |
|
46727
6e4a84748e2c
8183039: Re-examine methodHandle methods uninlined by 8144256
coleenp
parents:
46638
diff
changeset
|
173 |
bool match(const methodHandle& method); |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
174 |
BasicMatcher* match() { return _match; } |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
175 |
bool add_match(char* str, const char*& error_msg); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
176 |
DirectiveSet* get_for(AbstractCompiler *comp); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
177 |
void print(outputStream* st); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
178 |
bool is_default_directive() { return _next == NULL; } |
35130
223598d44a8b
8145345: LogCompilation output is empty after JEP165: Compiler Control
neliasso
parents:
35129
diff
changeset
|
179 |
void finalize(outputStream* st); |
33451
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
180 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
181 |
void inc_refcount(); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
182 |
void dec_refcount(); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
183 |
int refcount(); |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
184 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
185 |
DirectiveSet* _c1_store; |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
186 |
DirectiveSet* _c2_store; |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
187 |
}; |
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
188 |
|
0712796e4039
8137167: JEP165: Compiler Control: Implementation task
neliasso
parents:
diff
changeset
|
189 |
#endif // SHARE_VM_COMPILER_COMPILERDIRECTIVES_HPP |