comparison src/share/vm/graal/graalJavaAccess.hpp @ 6674:fd71ca8c5f88

VM infrstructure for OnStackReplacement
author Lukas Stadler <lukas.stadler@jku.at>
date Wed, 07 Nov 2012 13:18:04 +0100
parents 2463eb24b644
children e522a00b91aa
comparison
equal deleted inserted replaced
6673:a52320a6bbda 6674:fd71ca8c5f88
27 void graal_compute_offsets(); 27 void graal_compute_offsets();
28 28
29 #include "classfile/systemDictionary.hpp" 29 #include "classfile/systemDictionary.hpp"
30 #include "oops/instanceMirrorKlass.hpp" 30 #include "oops/instanceMirrorKlass.hpp"
31 31
32 /* This macro defines the structure of the InstalledCode - classes. 32 /* This macro defines the structure of the CompilationResult - classes.
33 * It will generate classes with accessors similar to javaClasses.hpp, but with specializations for oops, Handles and jni handles. 33 * It will generate classes with accessors similar to javaClasses.hpp, but with specializations for oops, Handles and jni handles.
34 * 34 *
35 * The public interface of these classes will look like this: 35 * The public interface of these classes will look like this:
36 36
37 * class StackSlot : AllStatic { 37 * class StackSlot : AllStatic {
70 int_field(HotSpotResolvedJavaMethod, codeSize) \ 70 int_field(HotSpotResolvedJavaMethod, codeSize) \
71 int_field(HotSpotResolvedJavaMethod, accessFlags) \ 71 int_field(HotSpotResolvedJavaMethod, accessFlags) \
72 int_field(HotSpotResolvedJavaMethod, maxLocals) \ 72 int_field(HotSpotResolvedJavaMethod, maxLocals) \
73 int_field(HotSpotResolvedJavaMethod, maxStackSize) \ 73 int_field(HotSpotResolvedJavaMethod, maxStackSize) \
74 boolean_field(HotSpotResolvedJavaMethod, canBeInlined) \ 74 boolean_field(HotSpotResolvedJavaMethod, canBeInlined) \
75 end_class \ 75 end_class \
76 start_class(HotSpotMethodData) \ 76 start_class(HotSpotMethodData) \
77 oop_field(HotSpotMethodData, hotspotMirror, "Ljava/lang/Object;") \ 77 oop_field(HotSpotMethodData, hotspotMirror, "Ljava/lang/Object;") \
78 int_field(HotSpotMethodData, normalDataSize) \ 78 int_field(HotSpotMethodData, normalDataSize) \
79 int_field(HotSpotMethodData, extraDataSize) \ 79 int_field(HotSpotMethodData, extraDataSize) \
80 end_class \ 80 end_class \
81 start_class(HotSpotJavaType) \ 81 start_class(HotSpotJavaType) \
82 oop_field(HotSpotJavaType, name, "Ljava/lang/String;") \ 82 oop_field(HotSpotJavaType, name, "Ljava/lang/String;") \
83 end_class \ 83 end_class \
84 start_class(HotSpotResolvedJavaField) \ 84 start_class(HotSpotResolvedJavaField) \
85 oop_field(HotSpotResolvedJavaField, constant, "Lcom/oracle/graal/api/meta/Constant;") \ 85 oop_field(HotSpotResolvedJavaField, constant, "Lcom/oracle/graal/api/meta/Constant;") \
86 int_field(HotSpotResolvedJavaField, offset) \ 86 int_field(HotSpotResolvedJavaField, offset) \
87 int_field(HotSpotResolvedJavaField, accessFlags) \ 87 int_field(HotSpotResolvedJavaField, accessFlags) \
88 end_class \ 88 end_class \
89 start_class(HotSpotCompiledMethod) \ 89 start_class(HotSpotCompiledMethod) \
90 long_field(HotSpotCompiledMethod, nmethod) \ 90 long_field(HotSpotCompiledMethod, nmethod) \
91 oop_field(HotSpotCompiledMethod, method, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;")\ 91 oop_field(HotSpotCompiledMethod, method, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \
92 end_class \ 92 end_class \
93 start_class(HotSpotCodeInfo) \ 93 start_class(HotSpotCodeInfo) \
94 long_field(HotSpotCodeInfo, start) \ 94 long_field(HotSpotCodeInfo, start) \
95 oop_field(HotSpotCodeInfo, code, "[B") \ 95 oop_field(HotSpotCodeInfo, code, "[B") \
96 end_class \ 96 end_class \
97 start_class(HotSpotCompilationResult) \ 97 start_class(HotSpotCompilationResult) \
98 oop_field(HotSpotCompilationResult, comp, "Lcom/oracle/graal/api/code/CompilationResult;") \ 98 oop_field(HotSpotCompilationResult, comp, "Lcom/oracle/graal/api/code/CompilationResult;") \
99 oop_field(HotSpotCompilationResult, method, "Lcom/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod;") \ 99 oop_field(HotSpotCompilationResult, method, "Lcom/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod;") \
100 oop_field(HotSpotCompilationResult, name, "Ljava/lang/String;") \ 100 int_field(HotSpotCompilationResult, entryBCI) \
101 oop_field(HotSpotCompilationResult, name, "Ljava/lang/String;") \
101 oop_field(HotSpotCompilationResult, sites, "[Lcom/oracle/graal/api/code/CompilationResult$Site;") \ 102 oop_field(HotSpotCompilationResult, sites, "[Lcom/oracle/graal/api/code/CompilationResult$Site;") \
102 oop_field(HotSpotCompilationResult, exceptionHandlers, "[Lcom/oracle/graal/api/code/CompilationResult$ExceptionHandler;") \ 103 oop_field(HotSpotCompilationResult, exceptionHandlers, "[Lcom/oracle/graal/api/code/CompilationResult$ExceptionHandler;") \
103 end_class \ 104 end_class \
104 start_class(ExceptionHandler) \ 105 start_class(ExceptionHandler) \
105 int_field(ExceptionHandler, startBCI) \ 106 int_field(ExceptionHandler, startBCI) \
106 int_field(ExceptionHandler, endBCI) \ 107 int_field(ExceptionHandler, endBCI) \
107 int_field(ExceptionHandler, handlerBCI) \ 108 int_field(ExceptionHandler, handlerBCI) \
108 int_field(ExceptionHandler, catchTypeCPI) \ 109 int_field(ExceptionHandler, catchTypeCPI) \
109 oop_field(ExceptionHandler, catchType, "Lcom/oracle/graal/api/meta/JavaType;") \ 110 oop_field(ExceptionHandler, catchType, "Lcom/oracle/graal/api/meta/JavaType;") \
110 end_class \ 111 end_class \
111 start_class(InstalledCode) \ 112 start_class(CompilationResult) \
112 int_field(InstalledCode, frameSize) \ 113 int_field(CompilationResult, frameSize) \
113 int_field(InstalledCode, customStackAreaOffset) \ 114 int_field(CompilationResult, customStackAreaOffset) \
114 oop_field(InstalledCode, targetCode, "[B") \ 115 oop_field(CompilationResult, targetCode, "[B") \
115 oop_field(InstalledCode, assumptions, "Lcom/oracle/graal/api/code/Assumptions;") \ 116 oop_field(CompilationResult, assumptions, "Lcom/oracle/graal/api/code/Assumptions;") \
116 int_field(InstalledCode, targetCodeSize) \ 117 int_field(CompilationResult, targetCodeSize) \
117 end_class \ 118 end_class \
118 start_class(Assumptions) \ 119 start_class(Assumptions) \
119 oop_field(Assumptions, list, "[Lcom/oracle/graal/api/code/Assumptions$Assumption;") \ 120 oop_field(Assumptions, list, "[Lcom/oracle/graal/api/code/Assumptions$Assumption;") \
120 end_class \ 121 end_class \
121 start_class(Assumptions_MethodContents) \ 122 start_class(Assumptions_MethodContents) \
122 oop_field(Assumptions_MethodContents, method, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \ 123 oop_field(Assumptions_MethodContents, method, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \
123 end_class \ 124 end_class \
124 start_class(Assumptions_ConcreteSubtype) \ 125 start_class(Assumptions_ConcreteSubtype) \
125 oop_field(Assumptions_ConcreteSubtype, context, "Lcom/oracle/graal/api/meta/ResolvedJavaType;") \ 126 oop_field(Assumptions_ConcreteSubtype, context, "Lcom/oracle/graal/api/meta/ResolvedJavaType;") \
126 oop_field(Assumptions_ConcreteSubtype, subtype, "Lcom/oracle/graal/api/meta/ResolvedJavaType;") \ 127 oop_field(Assumptions_ConcreteSubtype, subtype, "Lcom/oracle/graal/api/meta/ResolvedJavaType;") \
127 end_class \ 128 end_class \
128 start_class(Assumptions_ConcreteMethod) \ 129 start_class(Assumptions_ConcreteMethod) \
129 oop_field(Assumptions_ConcreteMethod, method, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \ 130 oop_field(Assumptions_ConcreteMethod, method, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \
130 oop_field(Assumptions_ConcreteMethod, context, "Lcom/oracle/graal/api/meta/ResolvedJavaType;") \ 131 oop_field(Assumptions_ConcreteMethod, context, "Lcom/oracle/graal/api/meta/ResolvedJavaType;") \
131 oop_field(Assumptions_ConcreteMethod, impl, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \ 132 oop_field(Assumptions_ConcreteMethod, impl, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \
132 end_class \ 133 end_class \
133 start_class(InstalledCode_Site) \ 134 start_class(CompilationResult_Site) \
134 int_field(InstalledCode_Site, pcOffset) \ 135 int_field(CompilationResult_Site, pcOffset) \
135 end_class \ 136 end_class \
136 start_class(InstalledCode_Call) \ 137 start_class(CompilationResult_Call) \
137 oop_field(InstalledCode_Call, target, "Ljava/lang/Object;") \ 138 oop_field(CompilationResult_Call, target, "Ljava/lang/Object;") \
138 oop_field(InstalledCode_Call, debugInfo, "Lcom/oracle/graal/api/code/DebugInfo;") \ 139 oop_field(CompilationResult_Call, debugInfo, "Lcom/oracle/graal/api/code/DebugInfo;") \
139 end_class \ 140 end_class \
140 start_class(InstalledCode_DataPatch) \ 141 start_class(CompilationResult_DataPatch) \
141 oop_field(InstalledCode_DataPatch, constant, "Lcom/oracle/graal/api/meta/Constant;") \ 142 oop_field(CompilationResult_DataPatch, constant, "Lcom/oracle/graal/api/meta/Constant;") \
142 int_field(InstalledCode_DataPatch, alignment) \ 143 int_field(CompilationResult_DataPatch, alignment) \
143 end_class \ 144 end_class \
144 start_class(InstalledCode_Safepoint) \ 145 start_class(CompilationResult_Safepoint) \
145 oop_field(InstalledCode_Safepoint, debugInfo, "Lcom/oracle/graal/api/code/DebugInfo;") \ 146 oop_field(CompilationResult_Safepoint, debugInfo, "Lcom/oracle/graal/api/code/DebugInfo;") \
146 end_class \ 147 end_class \
147 start_class(InstalledCode_ExceptionHandler) \ 148 start_class(CompilationResult_ExceptionHandler) \
148 int_field(InstalledCode_ExceptionHandler, handlerPos) \ 149 int_field(CompilationResult_ExceptionHandler, handlerPos) \
149 end_class \ 150 end_class \
150 start_class(InstalledCode_Mark) \ 151 start_class(CompilationResult_Mark) \
151 oop_field(InstalledCode_Mark, id, "Ljava/lang/Object;") \ 152 oop_field(CompilationResult_Mark, id, "Ljava/lang/Object;") \
152 oop_field(InstalledCode_Mark, references, "[Lcom/oracle/graal/api/code/CompilationResult$Mark;") \ 153 oop_field(CompilationResult_Mark, references, "[Lcom/oracle/graal/api/code/CompilationResult$Mark;") \
153 end_class \ 154 end_class \
154 start_class(DebugInfo) \ 155 start_class(DebugInfo) \
155 oop_field(DebugInfo, bytecodePosition, "Lcom/oracle/graal/api/code/BytecodePosition;") \ 156 oop_field(DebugInfo, bytecodePosition, "Lcom/oracle/graal/api/code/BytecodePosition;") \
156 oop_field(DebugInfo, registerRefMap, "Ljava/util/BitSet;") \ 157 oop_field(DebugInfo, registerRefMap, "Ljava/util/BitSet;") \
157 oop_field(DebugInfo, frameRefMap, "Ljava/util/BitSet;") \ 158 oop_field(DebugInfo, frameRefMap, "Ljava/util/BitSet;") \
158 end_class \ 159 end_class \
159 start_class(GraalBitMap) \ 160 start_class(GraalBitMap) \
160 oop_field(GraalBitMap, words, "[J") \ 161 oop_field(GraalBitMap, words, "[J") \
161 end_class \ 162 end_class \
162 start_class(BytecodeFrame) \ 163 start_class(BytecodeFrame) \
163 oop_field(BytecodeFrame, values, "[Lcom/oracle/graal/api/meta/Value;") \ 164 oop_field(BytecodeFrame, values, "[Lcom/oracle/graal/api/meta/Value;") \
164 int_field(BytecodeFrame, numLocals) \ 165 int_field(BytecodeFrame, numLocals) \
165 int_field(BytecodeFrame, numStack) \ 166 int_field(BytecodeFrame, numStack) \
166 int_field(BytecodeFrame, numLocks) \ 167 int_field(BytecodeFrame, numLocks) \
167 long_field(BytecodeFrame, leafGraphId) \ 168 long_field(BytecodeFrame, leafGraphId) \
168 boolean_field(BytecodeFrame, rethrowException) \ 169 boolean_field(BytecodeFrame, rethrowException) \
169 boolean_field(BytecodeFrame, duringCall) \ 170 boolean_field(BytecodeFrame, duringCall) \
170 end_class \ 171 end_class \
171 start_class(BytecodePosition) \ 172 start_class(BytecodePosition) \
172 oop_field(BytecodePosition, caller, "Lcom/oracle/graal/api/code/BytecodePosition;") \ 173 oop_field(BytecodePosition, caller, "Lcom/oracle/graal/api/code/BytecodePosition;") \
173 oop_field(BytecodePosition, method, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \ 174 oop_field(BytecodePosition, method, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \
174 int_field(BytecodePosition, bci) \ 175 int_field(BytecodePosition, bci) \
175 end_class \ 176 end_class \
176 start_class(Constant) \ 177 start_class(Constant) \
177 oop_field(Constant, kind, "Lcom/oracle/graal/api/meta/Kind;") \ 178 oop_field(Constant, kind, "Lcom/oracle/graal/api/meta/Kind;") \
178 oop_field(Constant, object, "Ljava/lang/Object;") \ 179 oop_field(Constant, object, "Ljava/lang/Object;") \
179 long_field(Constant, primitive) \ 180 long_field(Constant, primitive) \
180 end_class \ 181 end_class \
181 start_class(Kind) \ 182 start_class(Kind) \
182 char_field(Kind, typeChar) \ 183 char_field(Kind, typeChar) \
183 static_oop_field(Kind, Boolean, "Lcom/oracle/graal/api/meta/Kind;"); \ 184 static_oop_field(Kind, Boolean, "Lcom/oracle/graal/api/meta/Kind;"); \
184 static_oop_field(Kind, Byte, "Lcom/oracle/graal/api/meta/Kind;"); \ 185 static_oop_field(Kind, Byte, "Lcom/oracle/graal/api/meta/Kind;"); \
185 static_oop_field(Kind, Char, "Lcom/oracle/graal/api/meta/Kind;"); \ 186 static_oop_field(Kind, Char, "Lcom/oracle/graal/api/meta/Kind;"); \
186 static_oop_field(Kind, Short, "Lcom/oracle/graal/api/meta/Kind;"); \ 187 static_oop_field(Kind, Short, "Lcom/oracle/graal/api/meta/Kind;"); \
187 static_oop_field(Kind, Int, "Lcom/oracle/graal/api/meta/Kind;"); \ 188 static_oop_field(Kind, Int, "Lcom/oracle/graal/api/meta/Kind;"); \
188 static_oop_field(Kind, Long, "Lcom/oracle/graal/api/meta/Kind;"); \ 189 static_oop_field(Kind, Long, "Lcom/oracle/graal/api/meta/Kind;"); \
189 end_class \ 190 end_class \
190 start_class(JavaMethod) \ 191 start_class(JavaMethod) \
191 end_class \ 192 end_class \
192 start_class(Value) \ 193 start_class(Value) \
193 oop_field(Value, kind, "Lcom/oracle/graal/api/meta/Kind;") \ 194 oop_field(Value, kind, "Lcom/oracle/graal/api/meta/Kind;") \
194 static_oop_field(Value, ILLEGAL, "Lcom/oracle/graal/api/meta/Value;"); \ 195 static_oop_field(Value, ILLEGAL, "Lcom/oracle/graal/api/meta/Value;"); \
195 end_class \ 196 end_class \
196 start_class(RegisterValue) \ 197 start_class(RegisterValue) \
197 oop_field(RegisterValue, reg, "Lcom/oracle/graal/api/code/Register;") \ 198 oop_field(RegisterValue, reg, "Lcom/oracle/graal/api/code/Register;") \
198 end_class \ 199 end_class \
199 start_class(code_Register) \ 200 start_class(code_Register) \
200 int_field(code_Register, number) \ 201 int_field(code_Register, number) \
201 end_class \ 202 end_class \
202 start_class(StackSlot) \ 203 start_class(StackSlot) \
203 int_field(StackSlot, offset) \ 204 int_field(StackSlot, offset) \
204 boolean_field(StackSlot, addFrameSize) \ 205 boolean_field(StackSlot, addFrameSize) \
205 end_class \ 206 end_class \
206 start_class(VirtualObject) \ 207 start_class(VirtualObject) \
207 int_field(VirtualObject, id) \ 208 int_field(VirtualObject, id) \
208 oop_field(VirtualObject, type, "Lcom/oracle/graal/api/meta/JavaType;") \ 209 oop_field(VirtualObject, type, "Lcom/oracle/graal/api/meta/JavaType;") \
209 oop_field(VirtualObject, values, "[Lcom/oracle/graal/api/meta/Value;") \ 210 oop_field(VirtualObject, values, "[Lcom/oracle/graal/api/meta/Value;") \
210 end_class \ 211 end_class \
211 start_class(code_MonitorValue) \ 212 start_class(code_MonitorValue) \
212 oop_field(code_MonitorValue, owner, "Lcom/oracle/graal/api/meta/Value;") \ 213 oop_field(code_MonitorValue, owner, "Lcom/oracle/graal/api/meta/Value;") \
213 oop_field(code_MonitorValue, lockData, "Lcom/oracle/graal/api/meta/Value;") \ 214 oop_field(code_MonitorValue, lockData, "Lcom/oracle/graal/api/meta/Value;") \
214 boolean_field(code_MonitorValue, eliminated) \ 215 boolean_field(code_MonitorValue, eliminated) \
215 end_class \ 216 end_class \
216 /* end*/ 217 /* end*/
217 218
218 #define START_CLASS(name) \ 219 #define START_CLASS(name) \
219 class name : AllStatic { \ 220 class name : AllStatic { \
220 private: \ 221 private: \