author | rfield |
Tue, 14 Nov 2017 19:33:37 -0800 (2017-11-15) | |
changeset 47840 | e0f08a49f3e3 |
parent 47216 | 71c04702a3d5 |
child 48157 | 7c4d43c26352 |
permissions | -rw-r--r-- |
32582
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
1 |
/* |
46630
75aa3e39d02c
8182299: Enable disabled clang warnings, build on OSX 10 + Xcode 8
jwilhelm
parents:
46270
diff
changeset
|
2 |
* Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved. |
32582
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
4 |
* |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
5 |
* This code is free software; you can redistribute it and/or modify it |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation. |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
8 |
* |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
9 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
10 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
11 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
12 |
* version 2 for more details (a copy is included in the LICENSE file that |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
13 |
* accompanied this code). |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
14 |
* |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
15 |
* You should have received a copy of the GNU General Public License version |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
16 |
* 2 along with this work; if not, write to the Free Software Foundation, |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
17 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
18 |
* |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
19 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
20 |
* or visit www.oracle.com if you need additional information or have any |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
21 |
* questions. |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
22 |
* |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
23 |
*/ |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
24 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
25 |
#ifndef SHARE_VM_COMPILER_COMPILETASK_HPP |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
26 |
#define SHARE_VM_COMPILER_COMPILETASK_HPP |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
27 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
28 |
#include "code/nmethod.hpp" |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
29 |
#include "ci/ciMethod.hpp" |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
30 |
#include "compiler/compileLog.hpp" |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
31 |
#include "memory/allocation.inline.hpp" |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
32 |
#include "utilities/xmlstream.hpp" |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
33 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
34 |
// CompileTask |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
35 |
// |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
36 |
// An entry in the compile queue. It represents a pending or current |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
37 |
// compilation. |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
38 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
39 |
class CompileTask : public CHeapObj<mtCompiler> { |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
40 |
friend class VMStructs; |
35123
b0b89d83bcf5
8134994: use separate VMStructs databases for SA and JVMCI
twisti
parents:
34196
diff
changeset
|
41 |
friend class JVMCIVMStructs; |
32582
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
42 |
|
38218 | 43 |
public: |
44 |
// Different reasons for a compilation |
|
45 |
// The order is important - Reason_Whitebox and higher can not become |
|
46 |
// stale, see CompileTask::can_become_stale() |
|
47 |
// Also mapped to reason_names[] |
|
48 |
enum CompileReason { |
|
49 |
Reason_None, |
|
50 |
Reason_InvocationCount, // Simple/StackWalk-policy |
|
51 |
Reason_BackedgeCount, // Simple/StackWalk-policy |
|
52 |
Reason_Tiered, // Tiered-policy |
|
53 |
Reason_CTW, // Compile the world |
|
54 |
Reason_Replay, // ciReplay |
|
55 |
Reason_Whitebox, // Whitebox API |
|
56 |
Reason_MustBeCompiled, // Java callHelper, LinkResolver |
|
57 |
Reason_Bootstrap, // JVMCI bootstrap |
|
58 |
Reason_Count |
|
59 |
}; |
|
60 |
||
61 |
static const char* reason_name(CompileTask::CompileReason compile_reason) { |
|
62 |
static const char* reason_names[] = { |
|
63 |
"no_reason", |
|
64 |
"count", |
|
65 |
"backedge_count", |
|
66 |
"tiered", |
|
67 |
"CTW", |
|
68 |
"replay", |
|
69 |
"whitebox", |
|
70 |
"must_be_compiled", |
|
71 |
"bootstrap" |
|
72 |
}; |
|
73 |
return reason_names[compile_reason]; |
|
74 |
} |
|
75 |
||
32582
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
76 |
private: |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
77 |
static CompileTask* _task_free_list; |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
78 |
#ifdef ASSERT |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
79 |
static int _num_allocated_tasks; |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
80 |
#endif |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
81 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
82 |
Monitor* _lock; |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
83 |
uint _compile_id; |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
84 |
Method* _method; |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
85 |
jobject _method_holder; |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
86 |
int _osr_bci; |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
87 |
bool _is_complete; |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
88 |
bool _is_success; |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
89 |
bool _is_blocking; |
34196
72152eea3d39
8141330: [JVMCI] avoid deadlock between application thread and JVMCI compiler thread under -Xbatch
twisti
parents:
33593
diff
changeset
|
90 |
#if INCLUDE_JVMCI |
72152eea3d39
8141330: [JVMCI] avoid deadlock between application thread and JVMCI compiler thread under -Xbatch
twisti
parents:
33593
diff
changeset
|
91 |
bool _has_waiter; |
35547
0ee84aa8e705
8146705: Improve JVMCI support for blocking compilation
dnsimon
parents:
35123
diff
changeset
|
92 |
// Compiler thread for a blocking JVMCI compilation |
0ee84aa8e705
8146705: Improve JVMCI support for blocking compilation
dnsimon
parents:
35123
diff
changeset
|
93 |
CompilerThread* _jvmci_compiler_thread; |
34196
72152eea3d39
8141330: [JVMCI] avoid deadlock between application thread and JVMCI compiler thread under -Xbatch
twisti
parents:
33593
diff
changeset
|
94 |
#endif |
32582
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
95 |
int _comp_level; |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
96 |
int _num_inlined_bytecodes; |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
97 |
nmethodLocker* _code_handle; // holder of eventual result |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
98 |
CompileTask* _next, *_prev; |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
99 |
bool _is_free; |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
100 |
// Fields used for logging why the compilation was initiated: |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
101 |
jlong _time_queued; // in units of os::elapsed_counter() |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
102 |
Method* _hot_method; // which method actually triggered this task |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
103 |
jobject _hot_method_holder; |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
104 |
int _hot_count; // information about its invocation counter |
38218 | 105 |
CompileReason _compile_reason; // more info about the task |
32582
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
106 |
const char* _failure_reason; |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
107 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
108 |
public: |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
109 |
CompileTask() { |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
110 |
_lock = new Monitor(Mutex::nonleaf+2, "CompileTaskLock"); |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
111 |
} |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
112 |
|
33593
60764a78fa5c
8140274: methodHandles and constantPoolHandles should be passed as const references
coleenp
parents:
33160
diff
changeset
|
113 |
void initialize(int compile_id, const methodHandle& method, int osr_bci, int comp_level, |
38218 | 114 |
const methodHandle& hot_method, int hot_count, |
115 |
CompileTask::CompileReason compile_reason, bool is_blocking); |
|
32582
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
116 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
117 |
static CompileTask* allocate(); |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
118 |
static void free(CompileTask* task); |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
119 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
120 |
int compile_id() const { return _compile_id; } |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
121 |
Method* method() const { return _method; } |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
122 |
Method* hot_method() const { return _hot_method; } |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
123 |
int osr_bci() const { return _osr_bci; } |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
124 |
bool is_complete() const { return _is_complete; } |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
125 |
bool is_blocking() const { return _is_blocking; } |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
126 |
bool is_success() const { return _is_success; } |
38218 | 127 |
bool can_become_stale() const { |
128 |
switch (_compile_reason) { |
|
129 |
case Reason_BackedgeCount: |
|
130 |
case Reason_InvocationCount: |
|
131 |
case Reason_Tiered: |
|
132 |
return !_is_blocking; |
|
46630
75aa3e39d02c
8182299: Enable disabled clang warnings, build on OSX 10 + Xcode 8
jwilhelm
parents:
46270
diff
changeset
|
133 |
default: |
75aa3e39d02c
8182299: Enable disabled clang warnings, build on OSX 10 + Xcode 8
jwilhelm
parents:
46270
diff
changeset
|
134 |
return false; |
38218 | 135 |
} |
136 |
} |
|
34196
72152eea3d39
8141330: [JVMCI] avoid deadlock between application thread and JVMCI compiler thread under -Xbatch
twisti
parents:
33593
diff
changeset
|
137 |
#if INCLUDE_JVMCI |
72152eea3d39
8141330: [JVMCI] avoid deadlock between application thread and JVMCI compiler thread under -Xbatch
twisti
parents:
33593
diff
changeset
|
138 |
bool has_waiter() const { return _has_waiter; } |
72152eea3d39
8141330: [JVMCI] avoid deadlock between application thread and JVMCI compiler thread under -Xbatch
twisti
parents:
33593
diff
changeset
|
139 |
void clear_waiter() { _has_waiter = false; } |
35547
0ee84aa8e705
8146705: Improve JVMCI support for blocking compilation
dnsimon
parents:
35123
diff
changeset
|
140 |
CompilerThread* jvmci_compiler_thread() const { return _jvmci_compiler_thread; } |
0ee84aa8e705
8146705: Improve JVMCI support for blocking compilation
dnsimon
parents:
35123
diff
changeset
|
141 |
void set_jvmci_compiler_thread(CompilerThread* t) { |
0ee84aa8e705
8146705: Improve JVMCI support for blocking compilation
dnsimon
parents:
35123
diff
changeset
|
142 |
assert(is_blocking(), "must be"); |
0ee84aa8e705
8146705: Improve JVMCI support for blocking compilation
dnsimon
parents:
35123
diff
changeset
|
143 |
assert((t == NULL) != (_jvmci_compiler_thread == NULL), "must be"); |
0ee84aa8e705
8146705: Improve JVMCI support for blocking compilation
dnsimon
parents:
35123
diff
changeset
|
144 |
_jvmci_compiler_thread = t; |
0ee84aa8e705
8146705: Improve JVMCI support for blocking compilation
dnsimon
parents:
35123
diff
changeset
|
145 |
} |
34196
72152eea3d39
8141330: [JVMCI] avoid deadlock between application thread and JVMCI compiler thread under -Xbatch
twisti
parents:
33593
diff
changeset
|
146 |
#endif |
32582
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
147 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
148 |
nmethodLocker* code_handle() const { return _code_handle; } |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
149 |
void set_code_handle(nmethodLocker* l) { _code_handle = l; } |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
150 |
nmethod* code() const; // _code_handle->code() |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
151 |
void set_code(nmethod* nm); // _code_handle->set_code(nm) |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
152 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
153 |
Monitor* lock() const { return _lock; } |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
154 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
155 |
void mark_complete() { _is_complete = true; } |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
156 |
void mark_success() { _is_success = true; } |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
157 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
158 |
int comp_level() { return _comp_level;} |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
159 |
void set_comp_level(int comp_level) { _comp_level = comp_level;} |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
160 |
|
37281
c4e7456d6ae1
8144964: JVMCI compilations need to be disabled until the module system is initialized
twisti
parents:
35547
diff
changeset
|
161 |
AbstractCompiler* compiler(); |
c4e7456d6ae1
8144964: JVMCI compilations need to be disabled until the module system is initialized
twisti
parents:
35547
diff
changeset
|
162 |
|
32582
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
163 |
int num_inlined_bytecodes() const { return _num_inlined_bytecodes; } |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
164 |
void set_num_inlined_bytecodes(int n) { _num_inlined_bytecodes = n; } |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
165 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
166 |
CompileTask* next() const { return _next; } |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
167 |
void set_next(CompileTask* next) { _next = next; } |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
168 |
CompileTask* prev() const { return _prev; } |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
169 |
void set_prev(CompileTask* prev) { _prev = prev; } |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
170 |
bool is_free() const { return _is_free; } |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
171 |
void set_is_free(bool val) { _is_free = val; } |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
172 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
173 |
// RedefineClasses support |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
174 |
void metadata_do(void f(Metadata*)); |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
175 |
void mark_on_stack(); |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
176 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
177 |
private: |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
178 |
static void print_impl(outputStream* st, Method* method, int compile_id, int comp_level, |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
179 |
bool is_osr_method = false, int osr_bci = -1, bool is_blocking = false, |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
180 |
const char* msg = NULL, bool short_form = false, bool cr = true); |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
181 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
182 |
public: |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
183 |
void print(outputStream* st = tty, const char* msg = NULL, bool short_form = false, bool cr = true); |
46701
f559541c0daa
8181917: Refactor UL LogStreams to avoid using resource area
stuefe
parents:
46630
diff
changeset
|
184 |
void print_ul(const char* msg = NULL); |
32582
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
185 |
static void print(outputStream* st, const nmethod* nm, const char* msg = NULL, bool short_form = false, bool cr = true) { |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
186 |
print_impl(st, nm->method(), nm->compile_id(), nm->comp_level(), |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
187 |
nm->is_osr_method(), nm->is_osr_method() ? nm->osr_entry_bci() : -1, /*is_blocking*/ false, |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
188 |
msg, short_form, cr); |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
189 |
} |
46701
f559541c0daa
8181917: Refactor UL LogStreams to avoid using resource area
stuefe
parents:
46630
diff
changeset
|
190 |
static void print_ul(const nmethod* nm, const char* msg = NULL); |
32582
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
191 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
192 |
static void print_inline_indent(int inline_level, outputStream* st = tty); |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
193 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
194 |
void print_tty(); |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
195 |
void print_line_on_error(outputStream* st, char* buf, int buflen); |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
196 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
197 |
void log_task(xmlStream* log); |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
198 |
void log_task_queued(); |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
199 |
void log_task_start(CompileLog* log); |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
200 |
void log_task_done(CompileLog* log); |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
201 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
202 |
void set_failure_reason(const char* reason) { |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
203 |
_failure_reason = reason; |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
204 |
} |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
205 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
206 |
bool check_break_at_flags(); |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
207 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
208 |
static void print_inlining_inner(outputStream* st, ciMethod* method, int inline_level, int bci, const char* msg = NULL); |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
209 |
static void print_inlining_tty(ciMethod* method, int inline_level, int bci, const char* msg = NULL) { |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
210 |
print_inlining_inner(tty, method, inline_level, bci, msg); |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
211 |
} |
46701
f559541c0daa
8181917: Refactor UL LogStreams to avoid using resource area
stuefe
parents:
46630
diff
changeset
|
212 |
static void print_inlining_ul(ciMethod* method, int inline_level, int bci, const char* msg = NULL); |
32582
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
213 |
}; |
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
214 |
|
56619bb8bcaa
8135067: Preparatory refactorings for compiler control
neliasso
parents:
diff
changeset
|
215 |
#endif // SHARE_VM_COMPILER_COMPILETASK_HPP |