Mercurial > hg > graal-compiler
annotate src/share/vm/compiler/abstractCompiler.cpp @ 18661:aa4f2e3629ca
Added card table PIC support
author | adlertz |
---|---|
date | Thu, 11 Dec 2014 19:35:02 +0100 |
parents | 89152779163c |
children |
rev | line source |
---|---|
0 | 1 // |
17524 | 2 // Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. |
0 | 3 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 // | |
5 // This code is free software; you can redistribute it and/or modify it | |
6 // under the terms of the GNU General Public License version 2 only, as | |
7 // published by the Free Software Foundation. | |
8 // | |
9 // This code is distributed in the hope that it will be useful, but WITHOUT | |
10 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
12 // version 2 for more details (a copy is included in the LICENSE file that | |
13 // accompanied this code). | |
14 // | |
15 // You should have received a copy of the GNU General Public License version | |
16 // 2 along with this work; if not, write to the Free Software Foundation, | |
17 // Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
18 // | |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
19 // Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
20 // or visit www.oracle.com if you need additional information or have any |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
21 // questions. |
0 | 22 // |
23 | |
24 | |
1972 | 25 #include "precompiled.hpp" |
26 #include "compiler/abstractCompiler.hpp" | |
12880
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
27 #include "compiler/compileBroker.hpp" |
1972 | 28 #include "runtime/mutexLocker.hpp" |
12880
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
29 |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
30 bool AbstractCompiler::should_perform_init() { |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
31 if (_compiler_state != initialized) { |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
32 MutexLocker only_one(CompileThread_lock); |
0 | 33 |
12880
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
34 if (_compiler_state == uninitialized) { |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
35 _compiler_state = initializing; |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
36 return true; |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
37 } else { |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
38 while (_compiler_state == initializing) { |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
39 CompileThread_lock->wait(); |
0 | 40 } |
41 } | |
12880
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
42 } |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
43 return false; |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
44 } |
0 | 45 |
12880
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
46 bool AbstractCompiler::should_perform_shutdown() { |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
47 // Since this method can be called by multiple threads, the lock ensures atomicity of |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
48 // decrementing '_num_compiler_threads' and the following operations. |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
49 MutexLocker only_one(CompileThread_lock); |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
50 _num_compiler_threads--; |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
51 assert (CompileBroker::is_compilation_disabled_forever(), "Must be set, otherwise thread waits forever"); |
0 | 52 |
12880
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
53 // Only the last thread will perform shutdown operations |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
54 if (_num_compiler_threads == 0) { |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
55 return true; |
0 | 56 } |
12880
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
57 return false; |
0 | 58 } |
12880
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
59 |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
60 void AbstractCompiler::set_state(int state) { |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
61 // Ensure that ste is only set by one thread at a time |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
62 MutexLocker only_one(CompileThread_lock); |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
63 _compiler_state = state; |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
64 CompileThread_lock->notify_all(); |
469216acdb28
8023014: CodeSweeperSweepNoFlushTest.java fails with HS crash
anoll
parents:
2092
diff
changeset
|
65 } |