Mercurial > hg > graal-jvmci-8
annotate jvmci/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java @ 23740:724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Tue, 23 Aug 2016 22:46:08 +0200 |
parents | c61554b3f6df |
children | 6c8eaf47db9a |
rev | line source |
---|---|
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1 /* |
22773
9273bb6ba33e
Simplify code installation interface: Use CompiledCode class instead of CompilationResult and DataSection.
Roland Schatz <roland.schatz@oracle.com>
parents:
22770
diff
changeset
|
2 * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
4 * |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
7 * published by the Free Software Foundation. |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
8 * |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
13 * accompanied this code). |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
14 * |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
18 * |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
21 * questions. |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
22 */ |
22672
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22658
diff
changeset
|
23 package jdk.vm.ci.hotspot; |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
24 |
23393
1d4ce2d19e52
clean up and minimize JVMCI (JDK-8156835)
Doug Simon <doug.simon@oracle.com>
parents:
23392
diff
changeset
|
25 import static jdk.vm.ci.common.InitTimer.timer; |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
26 |
22626
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
27 import java.io.IOException; |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
28 import java.io.OutputStream; |
23306
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
29 import java.io.PrintStream; |
23740
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
30 import java.util.ArrayList; |
22562
28fe5850735e
removed HotSpotVMEventListener.completeInitialization; moved implementation of -Djvmci.printconfig=true to JVMCI; moved javadoc to method from static initializer
Doug Simon <doug.simon@oracle.com>
parents:
22550
diff
changeset
|
31 import java.util.Collections; |
28fe5850735e
removed HotSpotVMEventListener.completeInitialization; moved implementation of -Djvmci.printconfig=true to JVMCI; moved javadoc to method from static initializer
Doug Simon <doug.simon@oracle.com>
parents:
22550
diff
changeset
|
32 import java.util.HashMap; |
23740
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
33 import java.util.List; |
22562
28fe5850735e
removed HotSpotVMEventListener.completeInitialization; moved implementation of -Djvmci.printconfig=true to JVMCI; moved javadoc to method from static initializer
Doug Simon <doug.simon@oracle.com>
parents:
22550
diff
changeset
|
34 import java.util.Map; |
28fe5850735e
removed HotSpotVMEventListener.completeInitialization; moved implementation of -Djvmci.printconfig=true to JVMCI; moved javadoc to method from static initializer
Doug Simon <doug.simon@oracle.com>
parents:
22550
diff
changeset
|
35 import java.util.Objects; |
28fe5850735e
removed HotSpotVMEventListener.completeInitialization; moved implementation of -Djvmci.printconfig=true to JVMCI; moved javadoc to method from static initializer
Doug Simon <doug.simon@oracle.com>
parents:
22550
diff
changeset
|
36 import java.util.TreeMap; |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
37 |
22672
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22658
diff
changeset
|
38 import jdk.vm.ci.code.Architecture; |
22770
1fbfcc0334d3
JVMCI PrintCompilation support should reuse CompileBroker logic
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22767
diff
changeset
|
39 import jdk.vm.ci.code.CompilationRequestResult; |
22773
9273bb6ba33e
Simplify code installation interface: Use CompiledCode class instead of CompilationResult and DataSection.
Roland Schatz <roland.schatz@oracle.com>
parents:
22770
diff
changeset
|
40 import jdk.vm.ci.code.CompiledCode; |
22672
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22658
diff
changeset
|
41 import jdk.vm.ci.code.InstalledCode; |
23393
1d4ce2d19e52
clean up and minimize JVMCI (JDK-8156835)
Doug Simon <doug.simon@oracle.com>
parents:
23392
diff
changeset
|
42 import jdk.vm.ci.common.InitTimer; |
23392
b3a816d3b844
Backed out changeset: a920338dd4d4
Doug Simon <doug.simon@oracle.com>
parents:
23391
diff
changeset
|
43 import jdk.vm.ci.common.JVMCIError; |
23379
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
44 import jdk.vm.ci.hotspot.services.HotSpotJVMCICompilerFactory; |
23700
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
45 import jdk.vm.ci.hotspot.services.HotSpotJVMCICompilerFactory.CompilationLevel; |
23363
56479400913e
jdk.vm.ci needs to securely export services (JDK-8155023)
Doug Simon <doug.simon@oracle.com>
parents:
23319
diff
changeset
|
46 import jdk.vm.ci.hotspot.services.HotSpotVMEventListener; |
22672
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22658
diff
changeset
|
47 import jdk.vm.ci.meta.JavaKind; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22658
diff
changeset
|
48 import jdk.vm.ci.meta.JavaType; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22658
diff
changeset
|
49 import jdk.vm.ci.meta.ResolvedJavaType; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22658
diff
changeset
|
50 import jdk.vm.ci.runtime.JVMCI; |
1bbd4a7c274b
Rename jdk.internal.jvmci to jdk.vm.ci
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22658
diff
changeset
|
51 import jdk.vm.ci.runtime.JVMCIBackend; |
22697
57646377e480
Rename Compiler to JVMCICompiler and expose it from JVMCIRuntime.
Roland Schatz <roland.schatz@oracle.com>
parents:
22694
diff
changeset
|
52 import jdk.vm.ci.runtime.JVMCICompiler; |
23379
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
53 import jdk.vm.ci.runtime.services.JVMCICompilerFactory; |
22761
f2206f5bb62e
removed @ServiceProvider mechanism (GRAAL-1380)
Doug Simon <doug.simon@oracle.com>
parents:
22758
diff
changeset
|
54 import jdk.vm.ci.services.Services; |
22767
d88299d598d6
Add support for passing back bailout messages
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22761
diff
changeset
|
55 import sun.misc.VM; |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
56 |
22562
28fe5850735e
removed HotSpotVMEventListener.completeInitialization; moved implementation of -Djvmci.printconfig=true to JVMCI; moved javadoc to method from static initializer
Doug Simon <doug.simon@oracle.com>
parents:
22550
diff
changeset
|
57 /** |
28fe5850735e
removed HotSpotVMEventListener.completeInitialization; moved implementation of -Djvmci.printconfig=true to JVMCI; moved javadoc to method from static initializer
Doug Simon <doug.simon@oracle.com>
parents:
22550
diff
changeset
|
58 * HotSpot implementation of a JVMCI runtime. |
22694
023981d7f257
Fix deadlock between JVMCI.initialize and HotSpotJVMCIRuntime.runtime
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22672
diff
changeset
|
59 * |
023981d7f257
Fix deadlock between JVMCI.initialize and HotSpotJVMCIRuntime.runtime
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22672
diff
changeset
|
60 * The initialization of this class is very fragile since it's initialized both through |
023981d7f257
Fix deadlock between JVMCI.initialize and HotSpotJVMCIRuntime.runtime
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22672
diff
changeset
|
61 * {@link JVMCI#initialize()} or through calling {@link HotSpotJVMCIRuntime#runtime()} and |
023981d7f257
Fix deadlock between JVMCI.initialize and HotSpotJVMCIRuntime.runtime
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22672
diff
changeset
|
62 * {@link HotSpotJVMCIRuntime#runtime()} is also called by {@link JVMCI#initialize()}. So this class |
023981d7f257
Fix deadlock between JVMCI.initialize and HotSpotJVMCIRuntime.runtime
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22672
diff
changeset
|
63 * can't have a static initializer and any required initialization must be done as part of |
023981d7f257
Fix deadlock between JVMCI.initialize and HotSpotJVMCIRuntime.runtime
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22672
diff
changeset
|
64 * {@link #runtime()}. This allows the initialization to funnel back through |
023981d7f257
Fix deadlock between JVMCI.initialize and HotSpotJVMCIRuntime.runtime
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22672
diff
changeset
|
65 * {@link JVMCI#initialize()} without deadlocking. |
22562
28fe5850735e
removed HotSpotVMEventListener.completeInitialization; moved implementation of -Djvmci.printconfig=true to JVMCI; moved javadoc to method from static initializer
Doug Simon <doug.simon@oracle.com>
parents:
22550
diff
changeset
|
66 */ |
23393
1d4ce2d19e52
clean up and minimize JVMCI (JDK-8156835)
Doug Simon <doug.simon@oracle.com>
parents:
23392
diff
changeset
|
67 public final class HotSpotJVMCIRuntime implements HotSpotJVMCIRuntimeProvider { |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
68 |
22509
267eecd6d92a
suppressed -Xlint:try warnings
Doug Simon <doug.simon@oracle.com>
parents:
22486
diff
changeset
|
69 @SuppressWarnings("try") |
22462
7a7dd51e7e0b
Ensure that calling HotSpotJVMCIRuntime.runtime() initializes JVMCI correctly
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22454
diff
changeset
|
70 static class DelayedInit { |
7a7dd51e7e0b
Ensure that calling HotSpotJVMCIRuntime.runtime() initializes JVMCI correctly
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22454
diff
changeset
|
71 private static final HotSpotJVMCIRuntime instance; |
7a7dd51e7e0b
Ensure that calling HotSpotJVMCIRuntime.runtime() initializes JVMCI correctly
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22454
diff
changeset
|
72 |
7a7dd51e7e0b
Ensure that calling HotSpotJVMCIRuntime.runtime() initializes JVMCI correctly
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22454
diff
changeset
|
73 static { |
22658
61bb5fa12458
Remove StartupEventListener interface.
Roland Schatz <roland.schatz@oracle.com>
parents:
22657
diff
changeset
|
74 try (InitTimer t = timer("HotSpotJVMCIRuntime.<init>")) { |
61bb5fa12458
Remove StartupEventListener interface.
Roland Schatz <roland.schatz@oracle.com>
parents:
22657
diff
changeset
|
75 instance = new HotSpotJVMCIRuntime(); |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
76 } |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
77 } |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
78 } |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
79 |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
80 /** |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
81 * Gets the singleton {@link HotSpotJVMCIRuntime} object. |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
82 */ |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
83 public static HotSpotJVMCIRuntime runtime() { |
22694
023981d7f257
Fix deadlock between JVMCI.initialize and HotSpotJVMCIRuntime.runtime
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22672
diff
changeset
|
84 JVMCI.initialize(); |
22462
7a7dd51e7e0b
Ensure that calling HotSpotJVMCIRuntime.runtime() initializes JVMCI correctly
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22454
diff
changeset
|
85 return DelayedInit.instance; |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
86 } |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
87 |
22758
a130b51efb07
removed @Option mechanism from JVMCI (GRAAL-1371)
Doug Simon <doug.simon@oracle.com>
parents:
22697
diff
changeset
|
88 /** |
23306
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
89 * A list of all supported JVMCI options. |
22758
a130b51efb07
removed @Option mechanism from JVMCI (GRAAL-1371)
Doug Simon <doug.simon@oracle.com>
parents:
22697
diff
changeset
|
90 */ |
23306
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
91 public enum Option { |
23319
c1935b089c01
8151470: [JVMCI] remove up-call to HotSpotJVMCICompilerConfig.selectCompiler
Roland Schatz <roland.schatz@oracle.com>
parents:
23306
diff
changeset
|
92 Compiler(String.class, null, "Selects the system compiler."), |
23393
1d4ce2d19e52
clean up and minimize JVMCI (JDK-8156835)
Doug Simon <doug.simon@oracle.com>
parents:
23392
diff
changeset
|
93 // Note: The following one is not used (see InitTimer.ENABLED). It is added here |
1d4ce2d19e52
clean up and minimize JVMCI (JDK-8156835)
Doug Simon <doug.simon@oracle.com>
parents:
23392
diff
changeset
|
94 // so that -Djvmci.PrintFlags=true shows the option. |
23306
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
95 InitTimer(boolean.class, false, "Specifies if initialization timing is enabled."), |
23701
5d149c67c230
make -Djvmci.PrintConfig exit the VM (consistent with -Djvmci.PrintFlags)
Doug Simon <doug.simon@oracle.com>
parents:
23700
diff
changeset
|
96 PrintConfig(boolean.class, false, "Prints VM configuration available via JVMCI and exits."), |
23306
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
97 PrintFlags(boolean.class, false, "Prints all JVMCI flags and exits."), |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
98 ShowFlags(boolean.class, false, "Prints all JVMCI flags and continues."), |
23384
f102ee538647
Remove stable constant handling from ConstantReflectionProvider (JDK-8156552).
Roland Schatz <roland.schatz@oracle.com>
parents:
23383
diff
changeset
|
99 TraceMethodDataFilter(String.class, null, ""); |
23306
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
100 |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
101 /** |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
102 * The prefix for system properties that are JVMCI options. |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
103 */ |
23740
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
104 private static final String JVMCI_OPTION_PROPERTY_PREFIX = "jvmci."; |
23306
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
105 |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
106 /** |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
107 * Marker for uninitialized flags. |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
108 */ |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
109 private static final String UNINITIALIZED = "UNINITIALIZED"; |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
110 |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
111 private final Class<?> type; |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
112 private Object value; |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
113 private final Object defaultValue; |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
114 private boolean isDefault; |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
115 private final String help; |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
116 |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
117 Option(Class<?> type, Object defaultValue, String help) { |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
118 assert Character.isUpperCase(name().charAt(0)) : "Option name must start with upper-case letter: " + name(); |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
119 this.type = type; |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
120 this.value = UNINITIALIZED; |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
121 this.defaultValue = defaultValue; |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
122 this.help = help; |
22758
a130b51efb07
removed @Option mechanism from JVMCI (GRAAL-1371)
Doug Simon <doug.simon@oracle.com>
parents:
22697
diff
changeset
|
123 } |
23306
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
124 |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
125 @SuppressFBWarnings(value = "ES_COMPARING_STRINGS_WITH_EQ", justification = "sentinel must be String since it's a static final in an enum") |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
126 private Object getValue() { |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
127 if (value == UNINITIALIZED) { |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
128 String propertyValue = VM.getSavedProperty(JVMCI_OPTION_PROPERTY_PREFIX + name()); |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
129 if (propertyValue == null) { |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
130 this.value = defaultValue; |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
131 this.isDefault = true; |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
132 } else { |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
133 if (type == boolean.class) { |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
134 this.value = Boolean.parseBoolean(propertyValue); |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
135 } else if (type == String.class) { |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
136 this.value = propertyValue; |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
137 } else { |
23392
b3a816d3b844
Backed out changeset: a920338dd4d4
Doug Simon <doug.simon@oracle.com>
parents:
23391
diff
changeset
|
138 throw new JVMCIError("Unexpected option type " + type); |
23306
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
139 } |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
140 this.isDefault = false; |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
141 } |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
142 // Saved properties should not be interned - let's be sure |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
143 assert value != UNINITIALIZED; |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
144 } |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
145 return value; |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
146 } |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
147 |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
148 /** |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
149 * Returns the option's value as boolean. |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
150 * |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
151 * @return option's value |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
152 */ |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
153 public boolean getBoolean() { |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
154 return (boolean) getValue(); |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
155 } |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
156 |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
157 /** |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
158 * Returns the option's value as String. |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
159 * |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
160 * @return option's value |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
161 */ |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
162 public String getString() { |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
163 return (String) getValue(); |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
164 } |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
165 |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
166 /** |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
167 * Prints all option flags to {@code out}. |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
168 * |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
169 * @param out stream to print to |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
170 */ |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
171 public static void printFlags(PrintStream out) { |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
172 out.println("[List of JVMCI options]"); |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
173 for (Option option : values()) { |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
174 Object value = option.getValue(); |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
175 String assign = option.isDefault ? ":=" : " ="; |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
176 out.printf("%9s %-40s %s %-14s %s%n", option.type.getSimpleName(), option, assign, value, option.help); |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
177 } |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
178 } |
22758
a130b51efb07
removed @Option mechanism from JVMCI (GRAAL-1371)
Doug Simon <doug.simon@oracle.com>
parents:
22697
diff
changeset
|
179 } |
a130b51efb07
removed @Option mechanism from JVMCI (GRAAL-1371)
Doug Simon <doug.simon@oracle.com>
parents:
22697
diff
changeset
|
180 |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
181 public static HotSpotJVMCIBackendFactory findFactory(String architecture) { |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
182 for (HotSpotJVMCIBackendFactory factory : Services.load(HotSpotJVMCIBackendFactory.class)) { |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
183 if (factory.getArchitecture().equalsIgnoreCase(architecture)) { |
22429
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22422
diff
changeset
|
184 return factory; |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
185 } |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
186 } |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
187 |
23392
b3a816d3b844
Backed out changeset: a920338dd4d4
Doug Simon <doug.simon@oracle.com>
parents:
23391
diff
changeset
|
188 throw new JVMCIError("No JVMCI runtime available for the %s architecture", architecture); |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
189 } |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
190 |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
191 /** |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
192 * Gets the kind of a word value on the {@linkplain #getHostJVMCIBackend() host} backend. |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
193 */ |
22536
dc1aeef79e7e
Refactoring: Rename Kind to JavaKind.
Roland Schatz <roland.schatz@oracle.com>
parents:
22509
diff
changeset
|
194 public static JavaKind getHostWordKind() { |
22567
bfd5fdca1ce9
Clean separation between backend and frontend wordKind.
Roland Schatz <roland.schatz@oracle.com>
parents:
22562
diff
changeset
|
195 return runtime().getHostJVMCIBackend().getCodeCache().getTarget().wordJavaKind; |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
196 } |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
197 |
22546
f95eb4e457af
made HotSpotJVMCIRuntime.compilerToVm final (GRAAL-1255)
Doug Simon <doug.simon@oracle.com>
parents:
22536
diff
changeset
|
198 protected final CompilerToVM compilerToVm; |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
199 |
23679
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
200 protected final HotSpotVMConfigStore configStore; |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
201 protected final HotSpotVMConfig config; |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
202 private final JVMCIBackend hostBackend; |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
203 |
23379
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
204 private final JVMCICompilerFactory compilerFactory; |
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
205 private final HotSpotJVMCICompilerFactory hsCompilerFactory; |
22697
57646377e480
Rename Compiler to JVMCICompiler and expose it from JVMCIRuntime.
Roland Schatz <roland.schatz@oracle.com>
parents:
22694
diff
changeset
|
206 private volatile JVMCICompiler compiler; |
23393
1d4ce2d19e52
clean up and minimize JVMCI (JDK-8156835)
Doug Simon <doug.simon@oracle.com>
parents:
23392
diff
changeset
|
207 protected final HotSpotJVMCIMetaAccessContext metaAccessContext; |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
208 |
23379
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
209 /** |
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
210 * Stores the result of {@link HotSpotJVMCICompilerFactory#getCompilationLevelAdjustment} so |
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
211 * that it can be read from the VM. |
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
212 */ |
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
213 @SuppressWarnings("unused") private final int compilationLevelAdjustment; |
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
214 |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
215 private final Map<Class<? extends Architecture>, JVMCIBackend> backends = new HashMap<>(); |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
216 |
23740
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
217 private volatile List<HotSpotVMEventListener> vmEventListeners; |
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
218 |
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
219 private Iterable<HotSpotVMEventListener> getVmEventListeners() { |
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
220 if (vmEventListeners == null) { |
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
221 synchronized (this) { |
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
222 if (vmEventListeners == null) { |
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
223 List<HotSpotVMEventListener> listeners = new ArrayList<>(); |
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
224 for (HotSpotVMEventListener vmEventListener : Services.load(HotSpotVMEventListener.class)) { |
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
225 listeners.add(vmEventListener); |
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
226 } |
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
227 vmEventListeners = listeners; |
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
228 } |
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
229 } |
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
230 } |
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
231 return vmEventListeners; |
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
232 } |
21616
4c146c9367b6
recast VM compilation request via JVMCI to be a HotSpot JVMCI event, removing the last direct reference to a Graal class in the VM (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21604
diff
changeset
|
233 |
23379
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
234 /** |
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
235 * Stores the result of {@link HotSpotJVMCICompilerFactory#getTrivialPrefixes()} so that it can |
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
236 * be read from the VM. |
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
237 */ |
22656
d634e615b00d
Lazily initialize compiler on first compilation request.
Roland Schatz <roland.schatz@oracle.com>
parents:
22634
diff
changeset
|
238 @SuppressWarnings("unused") private final String[] trivialPrefixes; |
22575
569c82ebb96e
Replace JVMCICompileWithC1Only with package based controls
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22567
diff
changeset
|
239 |
22509
267eecd6d92a
suppressed -Xlint:try warnings
Doug Simon <doug.simon@oracle.com>
parents:
22486
diff
changeset
|
240 @SuppressWarnings("try") |
23700
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
241 @SuppressFBWarnings(value = "DM_EXIT", justification = "PrintFlags is meant to exit the VM") |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
242 private HotSpotJVMCIRuntime() { |
22547
10a9e989850e
made CompilertoVM a final concrete class and removed CompilerToVMImpl (GRAAL-1255)
Doug Simon <doug.simon@oracle.com>
parents:
22546
diff
changeset
|
243 compilerToVm = new CompilerToVM(); |
22562
28fe5850735e
removed HotSpotVMEventListener.completeInitialization; moved implementation of -Djvmci.printconfig=true to JVMCI; moved javadoc to method from static initializer
Doug Simon <doug.simon@oracle.com>
parents:
22550
diff
changeset
|
244 |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
245 try (InitTimer t = timer("HotSpotVMConfig<init>")) { |
23679
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
246 configStore = new HotSpotVMConfigStore(compilerToVm); |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
247 config = new HotSpotVMConfig(configStore); |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
248 } |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
249 |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
250 String hostArchitecture = config.getHostArchitectureName(); |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
251 |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
252 HotSpotJVMCIBackendFactory factory; |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
253 try (InitTimer t = timer("find factory:", hostArchitecture)) { |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
254 factory = findFactory(hostArchitecture); |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
255 } |
22429
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22422
diff
changeset
|
256 |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
257 try (InitTimer t = timer("create JVMCI backend:", hostArchitecture)) { |
22613
9409f7cec59a
Remove dependency from HotSpotJVMCIRuntime to CompilerFactory.
Roland Schatz <roland.schatz@oracle.com>
parents:
22593
diff
changeset
|
258 hostBackend = registerBackend(factory.createJVMCIBackend(this, null)); |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
259 } |
21616
4c146c9367b6
recast VM compilation request via JVMCI to be a HotSpot JVMCI event, removing the last direct reference to a Graal class in the VM (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21604
diff
changeset
|
260 |
23393
1d4ce2d19e52
clean up and minimize JVMCI (JDK-8156835)
Doug Simon <doug.simon@oracle.com>
parents:
23392
diff
changeset
|
261 metaAccessContext = new HotSpotJVMCIMetaAccessContext(); |
22562
28fe5850735e
removed HotSpotVMEventListener.completeInitialization; moved implementation of -Djvmci.printconfig=true to JVMCI; moved javadoc to method from static initializer
Doug Simon <doug.simon@oracle.com>
parents:
22550
diff
changeset
|
262 |
23306
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
263 boolean printFlags = Option.PrintFlags.getBoolean(); |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
264 boolean showFlags = Option.ShowFlags.getBoolean(); |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
265 if (printFlags || showFlags) { |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
266 Option.printFlags(System.out); |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
267 if (printFlags) { |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
268 System.exit(0); |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
269 } |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
270 } |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
271 |
7b09dede4552
JVMCI options should not use System.getProperty() directly (JDK-8146820)
Doug Simon <doug.simon@oracle.com>
parents:
22779
diff
changeset
|
272 if (Option.PrintConfig.getBoolean()) { |
23700
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
273 printConfig(configStore, compilerToVm); |
23701
5d149c67c230
make -Djvmci.PrintConfig exit the VM (consistent with -Djvmci.PrintFlags)
Doug Simon <doug.simon@oracle.com>
parents:
23700
diff
changeset
|
274 System.exit(0); |
22562
28fe5850735e
removed HotSpotVMEventListener.completeInitialization; moved implementation of -Djvmci.printconfig=true to JVMCI; moved javadoc to method from static initializer
Doug Simon <doug.simon@oracle.com>
parents:
22550
diff
changeset
|
275 } |
22656
d634e615b00d
Lazily initialize compiler on first compilation request.
Roland Schatz <roland.schatz@oracle.com>
parents:
22634
diff
changeset
|
276 |
23379
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
277 compilerFactory = HotSpotJVMCICompilerConfig.getCompilerFactory(); |
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
278 if (compilerFactory instanceof HotSpotJVMCICompilerFactory) { |
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
279 hsCompilerFactory = (HotSpotJVMCICompilerFactory) compilerFactory; |
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
280 trivialPrefixes = hsCompilerFactory.getTrivialPrefixes(); |
23679
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
281 switch (hsCompilerFactory.getCompilationLevelAdjustment()) { |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
282 case None: |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
283 compilationLevelAdjustment = config.compLevelAdjustmentNone; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
284 break; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
285 case ByHolder: |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
286 compilationLevelAdjustment = config.compLevelAdjustmentByHolder; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
287 break; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
288 case ByFullSignature: |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
289 compilationLevelAdjustment = config.compLevelAdjustmentByFullSignature; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
290 break; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
291 default: |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
292 compilationLevelAdjustment = config.compLevelAdjustmentNone; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
293 break; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
294 } |
23379
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
295 } else { |
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
296 hsCompilerFactory = null; |
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
297 trivialPrefixes = null; |
23679
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
298 compilationLevelAdjustment = config.compLevelAdjustmentNone; |
23379
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
299 } |
22422
a98a02bad801
Add simple interface to control caching policy for ResolvedJavaTypes
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22420
diff
changeset
|
300 } |
a98a02bad801
Add simple interface to control caching policy for ResolvedJavaTypes
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22420
diff
changeset
|
301 |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
302 private JVMCIBackend registerBackend(JVMCIBackend backend) { |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
303 Class<? extends Architecture> arch = backend.getCodeCache().getTarget().arch.getClass(); |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
304 JVMCIBackend oldValue = backends.put(arch, backend); |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
305 assert oldValue == null : "cannot overwrite existing backend for architecture " + arch.getSimpleName(); |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
306 return backend; |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
307 } |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
308 |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
309 public ResolvedJavaType fromClass(Class<?> javaClass) { |
22422
a98a02bad801
Add simple interface to control caching policy for ResolvedJavaTypes
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22420
diff
changeset
|
310 return metaAccessContext.fromClass(javaClass); |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
311 } |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
312 |
23679
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
313 public HotSpotVMConfigStore getConfigStore() { |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
314 return configStore; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
315 } |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
316 |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
317 public HotSpotVMConfig getConfig() { |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
318 return config; |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
319 } |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
320 |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
321 public CompilerToVM getCompilerToVM() { |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
322 return compilerToVm; |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
323 } |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
324 |
22697
57646377e480
Rename Compiler to JVMCICompiler and expose it from JVMCIRuntime.
Roland Schatz <roland.schatz@oracle.com>
parents:
22694
diff
changeset
|
325 public JVMCICompiler getCompiler() { |
22656
d634e615b00d
Lazily initialize compiler on first compilation request.
Roland Schatz <roland.schatz@oracle.com>
parents:
22634
diff
changeset
|
326 if (compiler == null) { |
22657
9203f93ffeb0
Fix race condition in lazy compiler initialization.
Roland Schatz <roland.schatz@oracle.com>
parents:
22656
diff
changeset
|
327 synchronized (this) { |
9203f93ffeb0
Fix race condition in lazy compiler initialization.
Roland Schatz <roland.schatz@oracle.com>
parents:
22656
diff
changeset
|
328 if (compiler == null) { |
23379
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
329 compiler = compilerFactory.createCompiler(this); |
22657
9203f93ffeb0
Fix race condition in lazy compiler initialization.
Roland Schatz <roland.schatz@oracle.com>
parents:
22656
diff
changeset
|
330 } |
9203f93ffeb0
Fix race condition in lazy compiler initialization.
Roland Schatz <roland.schatz@oracle.com>
parents:
22656
diff
changeset
|
331 } |
22656
d634e615b00d
Lazily initialize compiler on first compilation request.
Roland Schatz <roland.schatz@oracle.com>
parents:
22634
diff
changeset
|
332 } |
22429
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22422
diff
changeset
|
333 return compiler; |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22422
diff
changeset
|
334 } |
a1b0a76567c7
Select default compiler from jvmci.compiler system property.
Roland Schatz <roland.schatz@oracle.com>
parents:
22422
diff
changeset
|
335 |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
336 public JavaType lookupType(String name, HotSpotResolvedObjectType accessingType, boolean resolve) { |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
337 Objects.requireNonNull(accessingType, "cannot resolve type without an accessing class"); |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
338 // If the name represents a primitive type we can short-circuit the lookup. |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
339 if (name.length() == 1) { |
22536
dc1aeef79e7e
Refactoring: Rename Kind to JavaKind.
Roland Schatz <roland.schatz@oracle.com>
parents:
22509
diff
changeset
|
340 JavaKind kind = JavaKind.fromPrimitiveOrVoidTypeChar(name.charAt(0)); |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
341 return fromClass(kind.toJavaClass()); |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
342 } |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
343 |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
344 // Resolve non-primitive types in the VM. |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
345 HotSpotResolvedObjectTypeImpl hsAccessingType = (HotSpotResolvedObjectTypeImpl) accessingType; |
22454
76af33d4d504
Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22429
diff
changeset
|
346 final HotSpotResolvedObjectTypeImpl klass = compilerToVm.lookupType(name, hsAccessingType.mirror(), resolve); |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
347 |
22454
76af33d4d504
Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22429
diff
changeset
|
348 if (klass == null) { |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
349 assert resolve == false; |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
350 return HotSpotUnresolvedJavaType.create(this, name); |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
351 } |
22454
76af33d4d504
Make jvmci redefinition safe
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22429
diff
changeset
|
352 return klass; |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
353 } |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
354 |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
355 public JVMCIBackend getHostJVMCIBackend() { |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
356 return hostBackend; |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
357 } |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
358 |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
359 public <T extends Architecture> JVMCIBackend getJVMCIBackend(Class<T> arch) { |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
360 assert arch != Architecture.class; |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
361 return backends.get(arch); |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
362 } |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
363 |
22562
28fe5850735e
removed HotSpotVMEventListener.completeInitialization; moved implementation of -Djvmci.printconfig=true to JVMCI; moved javadoc to method from static initializer
Doug Simon <doug.simon@oracle.com>
parents:
22550
diff
changeset
|
364 public Map<Class<? extends Architecture>, JVMCIBackend> getJVMCIBackends() { |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
365 return Collections.unmodifiableMap(backends); |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
366 } |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
367 |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
368 /** |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
369 * Called from the VM. |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
370 */ |
21616
4c146c9367b6
recast VM compilation request via JVMCI to be a HotSpot JVMCI event, removing the last direct reference to a Graal class in the VM (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21604
diff
changeset
|
371 @SuppressWarnings({"unused"}) |
23379
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
372 private int adjustCompilationLevel(Class<?> declaringClass, String name, String signature, boolean isOsr, int level) { |
23679
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
373 CompilationLevel curLevel; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
374 if (level == config.compilationLevelNone) { |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
375 curLevel = CompilationLevel.None; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
376 } else if (level == config.compilationLevelSimple) { |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
377 curLevel = CompilationLevel.Simple; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
378 } else if (level == config.compilationLevelLimitedProfile) { |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
379 curLevel = CompilationLevel.LimitedProfile; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
380 } else if (level == config.compilationLevelFullProfile) { |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
381 curLevel = CompilationLevel.FullProfile; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
382 } else if (level == config.compilationLevelFullOptimization) { |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
383 curLevel = CompilationLevel.FullOptimization; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
384 } else { |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
385 throw JVMCIError.shouldNotReachHere(); |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
386 } |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
387 |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
388 switch (hsCompilerFactory.adjustCompilationLevel(declaringClass, name, signature, isOsr, curLevel)) { |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
389 case None: |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
390 return config.compilationLevelNone; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
391 case Simple: |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
392 return config.compilationLevelSimple; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
393 case LimitedProfile: |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
394 return config.compilationLevelLimitedProfile; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
395 case FullProfile: |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
396 return config.compilationLevelFullProfile; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
397 case FullOptimization: |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
398 return config.compilationLevelFullOptimization; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
399 default: |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
400 return level; |
b5557b757040
fix HotSpotVMConfig startup performance (JDK-8159167)
Doug Simon <doug.simon@oracle.com>
parents:
23394
diff
changeset
|
401 } |
23379
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
402 } |
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
403 |
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
404 /** |
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
405 * Called from the VM. |
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
406 */ |
24505bf61633
allow JVMCI compiler to change the compilation policy for a method (JDK-8152311)
Doug Simon <doug.simon@oracle.com>
parents:
23363
diff
changeset
|
407 @SuppressWarnings({"unused"}) |
23394
7743f81f8c4a
clean up and minimize JVMCI (JDK-8156835) - part 2
Doug Simon <doug.simon@oracle.com>
parents:
23393
diff
changeset
|
408 private HotSpotCompilationRequestResult compileMethod(HotSpotResolvedJavaMethod method, int entryBCI, long jvmciEnv, int id) { |
22779
b41377216cf9
JVMCICompiler.compileMethod should always return non-null
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22773
diff
changeset
|
409 CompilationRequestResult result = getCompiler().compileMethod(new HotSpotCompilationRequest(method, entryBCI, jvmciEnv, id)); |
b41377216cf9
JVMCICompiler.compileMethod should always return non-null
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22773
diff
changeset
|
410 assert result != null : "compileMethod must always return something"; |
23394
7743f81f8c4a
clean up and minimize JVMCI (JDK-8156835) - part 2
Doug Simon <doug.simon@oracle.com>
parents:
23393
diff
changeset
|
411 HotSpotCompilationRequestResult hsResult; |
7743f81f8c4a
clean up and minimize JVMCI (JDK-8156835) - part 2
Doug Simon <doug.simon@oracle.com>
parents:
23393
diff
changeset
|
412 if (result instanceof HotSpotCompilationRequestResult) { |
7743f81f8c4a
clean up and minimize JVMCI (JDK-8156835) - part 2
Doug Simon <doug.simon@oracle.com>
parents:
23393
diff
changeset
|
413 hsResult = (HotSpotCompilationRequestResult) result; |
7743f81f8c4a
clean up and minimize JVMCI (JDK-8156835) - part 2
Doug Simon <doug.simon@oracle.com>
parents:
23393
diff
changeset
|
414 } else { |
7743f81f8c4a
clean up and minimize JVMCI (JDK-8156835) - part 2
Doug Simon <doug.simon@oracle.com>
parents:
23393
diff
changeset
|
415 Object failure = result.getFailure(); |
7743f81f8c4a
clean up and minimize JVMCI (JDK-8156835) - part 2
Doug Simon <doug.simon@oracle.com>
parents:
23393
diff
changeset
|
416 if (failure != null) { |
7743f81f8c4a
clean up and minimize JVMCI (JDK-8156835) - part 2
Doug Simon <doug.simon@oracle.com>
parents:
23393
diff
changeset
|
417 boolean retry = false; // Be conservative with unknown compiler |
7743f81f8c4a
clean up and minimize JVMCI (JDK-8156835) - part 2
Doug Simon <doug.simon@oracle.com>
parents:
23393
diff
changeset
|
418 hsResult = HotSpotCompilationRequestResult.failure(failure.toString(), retry); |
7743f81f8c4a
clean up and minimize JVMCI (JDK-8156835) - part 2
Doug Simon <doug.simon@oracle.com>
parents:
23393
diff
changeset
|
419 } else { |
7743f81f8c4a
clean up and minimize JVMCI (JDK-8156835) - part 2
Doug Simon <doug.simon@oracle.com>
parents:
23393
diff
changeset
|
420 int inlinedBytecodes = -1; |
7743f81f8c4a
clean up and minimize JVMCI (JDK-8156835) - part 2
Doug Simon <doug.simon@oracle.com>
parents:
23393
diff
changeset
|
421 hsResult = HotSpotCompilationRequestResult.success(inlinedBytecodes); |
7743f81f8c4a
clean up and minimize JVMCI (JDK-8156835) - part 2
Doug Simon <doug.simon@oracle.com>
parents:
23393
diff
changeset
|
422 } |
7743f81f8c4a
clean up and minimize JVMCI (JDK-8156835) - part 2
Doug Simon <doug.simon@oracle.com>
parents:
23393
diff
changeset
|
423 } |
7743f81f8c4a
clean up and minimize JVMCI (JDK-8156835) - part 2
Doug Simon <doug.simon@oracle.com>
parents:
23393
diff
changeset
|
424 |
7743f81f8c4a
clean up and minimize JVMCI (JDK-8156835) - part 2
Doug Simon <doug.simon@oracle.com>
parents:
23393
diff
changeset
|
425 return hsResult; |
21616
4c146c9367b6
recast VM compilation request via JVMCI to be a HotSpot JVMCI event, removing the last direct reference to a Graal class in the VM (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21604
diff
changeset
|
426 } |
4c146c9367b6
recast VM compilation request via JVMCI to be a HotSpot JVMCI event, removing the last direct reference to a Graal class in the VM (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21604
diff
changeset
|
427 |
4c146c9367b6
recast VM compilation request via JVMCI to be a HotSpot JVMCI event, removing the last direct reference to a Graal class in the VM (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21604
diff
changeset
|
428 /** |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
429 * Shuts down the runtime. |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
430 * |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
431 * Called from the VM. |
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
432 */ |
21616
4c146c9367b6
recast VM compilation request via JVMCI to be a HotSpot JVMCI event, removing the last direct reference to a Graal class in the VM (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21604
diff
changeset
|
433 @SuppressWarnings({"unused"}) |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
434 private void shutdown() throws Exception { |
23740
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
435 for (HotSpotVMEventListener vmEventListener : getVmEventListeners()) { |
21780
3d15183f3c93
Introduce Compiler interface in jvmci. Use it from jvmci.hotspot.CompilationTask
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21675
diff
changeset
|
436 vmEventListener.notifyShutdown(); |
3d15183f3c93
Introduce Compiler interface in jvmci. Use it from jvmci.hotspot.CompilationTask
Gilles Duboscq <gilles.m.duboscq@oracle.com>
parents:
21675
diff
changeset
|
437 } |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
438 } |
22299
7b4a47fcc4c0
Move most of jdk.internal.jvmci.debug back into com.oracle.graal.debug
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22054
diff
changeset
|
439 |
22593
cabc2b8bc3f1
Make HotSpotCodeCacheProvider.installMethod throw an exception if code installation fails
twisti
parents:
22581
diff
changeset
|
440 /** |
23383
0226d6bcb0d2
Notify the compiler on completion of a bootstrap (JDK-8156034)
Josef Eisl <josef.eisl@jku.at>
parents:
23379
diff
changeset
|
441 * Notify on completion of a bootstrap. |
0226d6bcb0d2
Notify the compiler on completion of a bootstrap (JDK-8156034)
Josef Eisl <josef.eisl@jku.at>
parents:
23379
diff
changeset
|
442 * |
0226d6bcb0d2
Notify the compiler on completion of a bootstrap (JDK-8156034)
Josef Eisl <josef.eisl@jku.at>
parents:
23379
diff
changeset
|
443 * Called from the VM. |
0226d6bcb0d2
Notify the compiler on completion of a bootstrap (JDK-8156034)
Josef Eisl <josef.eisl@jku.at>
parents:
23379
diff
changeset
|
444 */ |
0226d6bcb0d2
Notify the compiler on completion of a bootstrap (JDK-8156034)
Josef Eisl <josef.eisl@jku.at>
parents:
23379
diff
changeset
|
445 @SuppressWarnings({"unused"}) |
0226d6bcb0d2
Notify the compiler on completion of a bootstrap (JDK-8156034)
Josef Eisl <josef.eisl@jku.at>
parents:
23379
diff
changeset
|
446 private void bootstrapFinished() throws Exception { |
23740
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
447 for (HotSpotVMEventListener vmEventListener : getVmEventListeners()) { |
23383
0226d6bcb0d2
Notify the compiler on completion of a bootstrap (JDK-8156034)
Josef Eisl <josef.eisl@jku.at>
parents:
23379
diff
changeset
|
448 vmEventListener.notifyBootstrapFinished(); |
0226d6bcb0d2
Notify the compiler on completion of a bootstrap (JDK-8156034)
Josef Eisl <josef.eisl@jku.at>
parents:
23379
diff
changeset
|
449 } |
0226d6bcb0d2
Notify the compiler on completion of a bootstrap (JDK-8156034)
Josef Eisl <josef.eisl@jku.at>
parents:
23379
diff
changeset
|
450 } |
0226d6bcb0d2
Notify the compiler on completion of a bootstrap (JDK-8156034)
Josef Eisl <josef.eisl@jku.at>
parents:
23379
diff
changeset
|
451 |
0226d6bcb0d2
Notify the compiler on completion of a bootstrap (JDK-8156034)
Josef Eisl <josef.eisl@jku.at>
parents:
23379
diff
changeset
|
452 /** |
22593
cabc2b8bc3f1
Make HotSpotCodeCacheProvider.installMethod throw an exception if code installation fails
twisti
parents:
22581
diff
changeset
|
453 * Notify on successful install into the CodeCache. |
cabc2b8bc3f1
Make HotSpotCodeCacheProvider.installMethod throw an exception if code installation fails
twisti
parents:
22581
diff
changeset
|
454 * |
cabc2b8bc3f1
Make HotSpotCodeCacheProvider.installMethod throw an exception if code installation fails
twisti
parents:
22581
diff
changeset
|
455 * @param hotSpotCodeCacheProvider |
cabc2b8bc3f1
Make HotSpotCodeCacheProvider.installMethod throw an exception if code installation fails
twisti
parents:
22581
diff
changeset
|
456 * @param installedCode |
22773
9273bb6ba33e
Simplify code installation interface: Use CompiledCode class instead of CompilationResult and DataSection.
Roland Schatz <roland.schatz@oracle.com>
parents:
22770
diff
changeset
|
457 * @param compiledCode |
22593
cabc2b8bc3f1
Make HotSpotCodeCacheProvider.installMethod throw an exception if code installation fails
twisti
parents:
22581
diff
changeset
|
458 */ |
22773
9273bb6ba33e
Simplify code installation interface: Use CompiledCode class instead of CompilationResult and DataSection.
Roland Schatz <roland.schatz@oracle.com>
parents:
22770
diff
changeset
|
459 void notifyInstall(HotSpotCodeCacheProvider hotSpotCodeCacheProvider, InstalledCode installedCode, CompiledCode compiledCode) { |
23740
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
460 for (HotSpotVMEventListener vmEventListener : getVmEventListeners()) { |
22773
9273bb6ba33e
Simplify code installation interface: Use CompiledCode class instead of CompilationResult and DataSection.
Roland Schatz <roland.schatz@oracle.com>
parents:
22770
diff
changeset
|
461 vmEventListener.notifyInstall(hotSpotCodeCacheProvider, installedCode, compiledCode); |
22299
7b4a47fcc4c0
Move most of jdk.internal.jvmci.debug back into com.oracle.graal.debug
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22054
diff
changeset
|
462 } |
7b4a47fcc4c0
Move most of jdk.internal.jvmci.debug back into com.oracle.graal.debug
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
22054
diff
changeset
|
463 } |
22562
28fe5850735e
removed HotSpotVMEventListener.completeInitialization; moved implementation of -Djvmci.printconfig=true to JVMCI; moved javadoc to method from static initializer
Doug Simon <doug.simon@oracle.com>
parents:
22550
diff
changeset
|
464 |
23700
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
465 @SuppressFBWarnings(value = "DM_DEFAULT_ENCODING", justification = "no localization here please!") |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
466 private static void printConfigLine(CompilerToVM vm, String format, Object... args) { |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
467 String line = String.format(format, args); |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
468 byte[] lineBytes = line.getBytes(); |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
469 vm.writeDebugOutput(lineBytes, 0, lineBytes.length); |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
470 vm.flushDebugOutput(); |
22562
28fe5850735e
removed HotSpotVMEventListener.completeInitialization; moved implementation of -Djvmci.printconfig=true to JVMCI; moved javadoc to method from static initializer
Doug Simon <doug.simon@oracle.com>
parents:
22550
diff
changeset
|
471 } |
28fe5850735e
removed HotSpotVMEventListener.completeInitialization; moved implementation of -Djvmci.printconfig=true to JVMCI; moved javadoc to method from static initializer
Doug Simon <doug.simon@oracle.com>
parents:
22550
diff
changeset
|
472 |
23700
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
473 private static void printConfig(HotSpotVMConfigStore store, CompilerToVM vm) { |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
474 TreeMap<String, VMField> fields = new TreeMap<>(store.getFields()); |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
475 for (VMField field : fields.values()) { |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
476 if (!field.isStatic()) { |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
477 printConfigLine(vm, "[vmconfig:instance field] %s %s {offset=%d[0x%x]}%n", field.type, field.name, field.offset, field.offset); |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
478 } else { |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
479 String value = field.value == null ? "null" : String.format("%d[0x%x]", field.value, field.value); |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
480 printConfigLine(vm, "[vmconfig:static field] %s %s = %s {address=0x%x}%n", field.type, field.name, value, field.address); |
22562
28fe5850735e
removed HotSpotVMEventListener.completeInitialization; moved implementation of -Djvmci.printconfig=true to JVMCI; moved javadoc to method from static initializer
Doug Simon <doug.simon@oracle.com>
parents:
22550
diff
changeset
|
481 } |
23700
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
482 } |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
483 TreeMap<String, VMFlag> flags = new TreeMap<>(store.getFlags()); |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
484 for (VMFlag flag : flags.values()) { |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
485 printConfigLine(vm, "[vmconfig:flag] %s %s = %s%n", flag.type, flag.name, flag.value); |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
486 } |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
487 TreeMap<String, Long> addresses = new TreeMap<>(store.getAddresses()); |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
488 for (Map.Entry<String, Long> e : addresses.entrySet()) { |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
489 printConfigLine(vm, "[vmconfig:address] %s = %d[0x%x]%n", e.getKey(), e.getValue(), e.getValue()); |
22562
28fe5850735e
removed HotSpotVMEventListener.completeInitialization; moved implementation of -Djvmci.printconfig=true to JVMCI; moved javadoc to method from static initializer
Doug Simon <doug.simon@oracle.com>
parents:
22550
diff
changeset
|
490 } |
23700
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
491 TreeMap<String, Long> constants = new TreeMap<>(store.getConstants()); |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
492 for (Map.Entry<String, Long> e : constants.entrySet()) { |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
493 printConfigLine(vm, "[vmconfig:constant] %s = %d[0x%x]%n", e.getKey(), e.getValue(), e.getValue()); |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
494 } |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
495 TreeMap<String, Long> typeSizes = new TreeMap<>(store.getTypeSizes()); |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
496 for (Map.Entry<String, Long> e : typeSizes.entrySet()) { |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
497 printConfigLine(vm, "[vmconfig:type size] %s = %d%n", e.getKey(), e.getValue()); |
9e1235406b59
[Findbugs] various warnings reported for JVMCI sources (JDK-8159613)
Doug Simon <doug.simon@oracle.com>
parents:
23679
diff
changeset
|
498 } |
23740
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
499 for (VMIntrinsicMethod e : store.getIntrinsics()) { |
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
500 printConfigLine(vm, "[vmconfig:intrinsic] %d = %s.%s %s%n", e.id, e.declaringClass, e.name, e.descriptor); |
724fbad94ee3
expose Hotspot intrinsics and HotSpotIntrinsicCandidate info to JVMCI compilers (JDK-8164358)
Doug Simon <doug.simon@oracle.com>
parents:
23721
diff
changeset
|
501 } |
22562
28fe5850735e
removed HotSpotVMEventListener.completeInitialization; moved implementation of -Djvmci.printconfig=true to JVMCI; moved javadoc to method from static initializer
Doug Simon <doug.simon@oracle.com>
parents:
22550
diff
changeset
|
502 } |
22626
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
503 |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
504 public OutputStream getLogStream() { |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
505 return new OutputStream() { |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
506 |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
507 @Override |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
508 public void write(byte[] b, int off, int len) throws IOException { |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
509 if (b == null) { |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
510 throw new NullPointerException(); |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
511 } else if (off < 0 || off > b.length || len < 0 || (off + len) > b.length || (off + len) < 0) { |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
512 throw new IndexOutOfBoundsException(); |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
513 } else if (len == 0) { |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
514 return; |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
515 } |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
516 compilerToVm.writeDebugOutput(b, off, len); |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
517 } |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
518 |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
519 @Override |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
520 public void write(int b) throws IOException { |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
521 write(new byte[]{(byte) b}, 0, 1); |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
522 } |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
523 |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
524 @Override |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
525 public void flush() throws IOException { |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
526 compilerToVm.flushDebugOutput(); |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
527 } |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
528 }; |
b6b46b741102
added HotSpotJVMCIRuntimeProvider.getLogStream() and made CompilerToVM.writeDebugOutput and CompilerToVm.flushDebugOutput package-private
Doug Simon <doug.simon@oracle.com>
parents:
22623
diff
changeset
|
529 } |
22634
02d95720c455
added HotSpotJVMCIRuntimeProvider.collectCounters and made CompilerToVM.collectCounters package-private
Doug Simon <doug.simon@oracle.com>
parents:
22626
diff
changeset
|
530 |
02d95720c455
added HotSpotJVMCIRuntimeProvider.collectCounters and made CompilerToVM.collectCounters package-private
Doug Simon <doug.simon@oracle.com>
parents:
22626
diff
changeset
|
531 /** |
02d95720c455
added HotSpotJVMCIRuntimeProvider.collectCounters and made CompilerToVM.collectCounters package-private
Doug Simon <doug.simon@oracle.com>
parents:
22626
diff
changeset
|
532 * Collects the current values of all JVMCI benchmark counters, summed up over all threads. |
02d95720c455
added HotSpotJVMCIRuntimeProvider.collectCounters and made CompilerToVM.collectCounters package-private
Doug Simon <doug.simon@oracle.com>
parents:
22626
diff
changeset
|
533 */ |
02d95720c455
added HotSpotJVMCIRuntimeProvider.collectCounters and made CompilerToVM.collectCounters package-private
Doug Simon <doug.simon@oracle.com>
parents:
22626
diff
changeset
|
534 public long[] collectCounters() { |
02d95720c455
added HotSpotJVMCIRuntimeProvider.collectCounters and made CompilerToVM.collectCounters package-private
Doug Simon <doug.simon@oracle.com>
parents:
22626
diff
changeset
|
535 return compilerToVm.collectCounters(); |
02d95720c455
added HotSpotJVMCIRuntimeProvider.collectCounters and made CompilerToVM.collectCounters package-private
Doug Simon <doug.simon@oracle.com>
parents:
22626
diff
changeset
|
536 } |
21551
5324104ac4f3
moved com.oracle.graal.hotspot.jvmci classes to com.oracle.jvmci.hotspot module (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
537 } |