Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/src/share/classes/java/lang/Compiler.java
38829 views
1
/*
2
* Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation. Oracle designates this
8
* particular file as subject to the "Classpath" exception as provided
9
* by Oracle in the LICENSE file that accompanied this code.
10
*
11
* This code is distributed in the hope that it will be useful, but WITHOUT
12
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14
* version 2 for more details (a copy is included in the LICENSE file that
15
* accompanied this code).
16
*
17
* You should have received a copy of the GNU General Public License version
18
* 2 along with this work; if not, write to the Free Software Foundation,
19
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20
*
21
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22
* or visit www.oracle.com if you need additional information or have any
23
* questions.
24
*/
25
26
package java.lang;
27
28
/**
29
* The {@code Compiler} class is provided to support Java-to-native-code
30
* compilers and related services. By design, the {@code Compiler} class does
31
* nothing; it serves as a placeholder for a JIT compiler implementation.
32
*
33
* <p> When the Java Virtual Machine first starts, it determines if the system
34
* property {@code java.compiler} exists. (System properties are accessible
35
* through {@link System#getProperty(String)} and {@link
36
* System#getProperty(String, String)}. If so, it is assumed to be the name of
37
* a library (with a platform-dependent exact location and type); {@link
38
* System#loadLibrary} is called to load that library. If this loading
39
* succeeds, the function named {@code java_lang_Compiler_start()} in that
40
* library is called.
41
*
42
* <p> If no compiler is available, these methods do nothing.
43
*
44
* @author Frank Yellin
45
* @since JDK1.0
46
*/
47
public final class Compiler {
48
private Compiler() {} // don't make instances
49
50
private static native void initialize();
51
52
private static native void registerNatives();
53
54
static {
55
registerNatives();
56
java.security.AccessController.doPrivileged(
57
new java.security.PrivilegedAction<Void>() {
58
public Void run() {
59
boolean loaded = false;
60
String jit = System.getProperty("java.compiler");
61
if ((jit != null) && (!jit.equals("NONE")) &&
62
(!jit.equals("")))
63
{
64
try {
65
System.loadLibrary(jit);
66
initialize();
67
loaded = true;
68
} catch (UnsatisfiedLinkError e) {
69
System.err.println("Warning: JIT compiler \"" +
70
jit + "\" not found. Will use interpreter.");
71
}
72
}
73
String info = System.getProperty("java.vm.info");
74
if (loaded) {
75
System.setProperty("java.vm.info", info + ", " + jit);
76
} else {
77
System.setProperty("java.vm.info", info + ", nojit");
78
}
79
return null;
80
}
81
});
82
}
83
84
/**
85
* Compiles the specified class.
86
*
87
* @param clazz
88
* A class
89
*
90
* @return {@code true} if the compilation succeeded; {@code false} if the
91
* compilation failed or no compiler is available
92
*
93
* @throws NullPointerException
94
* If {@code clazz} is {@code null}
95
*/
96
public static native boolean compileClass(Class<?> clazz);
97
98
/**
99
* Compiles all classes whose name matches the specified string.
100
*
101
* @param string
102
* The name of the classes to compile
103
*
104
* @return {@code true} if the compilation succeeded; {@code false} if the
105
* compilation failed or no compiler is available
106
*
107
* @throws NullPointerException
108
* If {@code string} is {@code null}
109
*/
110
public static native boolean compileClasses(String string);
111
112
/**
113
* Examines the argument type and its fields and perform some documented
114
* operation. No specific operations are required.
115
*
116
* @param any
117
* An argument
118
*
119
* @return A compiler-specific value, or {@code null} if no compiler is
120
* available
121
*
122
* @throws NullPointerException
123
* If {@code any} is {@code null}
124
*/
125
public static native Object command(Object any);
126
127
/**
128
* Cause the Compiler to resume operation.
129
*/
130
public static native void enable();
131
132
/**
133
* Cause the Compiler to cease operation.
134
*/
135
public static native void disable();
136
}
137
138