comparison src/share/vm/graal/graalJavaAccess.hpp @ 6948:e522a00b91aa

Merge with http://hg.openjdk.java.net/hsx/hsx25/hotspot/ after NPG - C++ build works
author Doug Simon <doug.simon@oracle.com>
date Mon, 12 Nov 2012 23:14:12 +0100
parents fd71ca8c5f88
children 41938af2b3d8
comparison
equal deleted inserted replaced
6711:ae13cc658b80 6948:e522a00b91aa
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 {
38 * public: 38 * public:
39 * static klassOop klass(); 39 * static Klass* klass();
40 * static jint index(oop obj); 40 * static jint index(oop obj);
41 * static jint index(Handle obj); 41 * static jint index(Handle obj);
42 * static jint index(jobject obj); 42 * static jint index(jobject obj);
43 * static void set_index(oop obj, jint x); 43 * static void set_index(oop obj, jint x);
44 * static void set_index(Handle obj, jint x); 44 * static void set_index(Handle obj, jint x);
45 * static void set_index(jobject obj, jint x); 45 * static void set_index(jobject obj, jint x);
46 * }; 46 * };
47 * 47 *
48 */ 48 */
49 49
50 #define COMPILER_CLASSES_DO(start_class, end_class, char_field, int_field, boolean_field, long_field, float_field, oop_field, static_oop_field) \ 50 #define COMPILER_CLASSES_DO(start_class, end_class, char_field, int_field, boolean_field, long_field, float_field, oop_field, static_oop_field) \
51 start_class(HotSpotResolvedJavaType) \ 51 start_class(HotSpotResolvedJavaType) \
52 oop_field(HotSpotResolvedJavaType, javaMirror, "Ljava/lang/Class;") \ 52 long_field(HotSpotResolvedJavaType, metaspaceKlass) \
53 oop_field(HotSpotResolvedJavaType, simpleName, "Ljava/lang/String;") \ 53 oop_field(HotSpotResolvedJavaType, javaMirror, "Ljava/lang/Class;") \
54 int_field(HotSpotResolvedJavaType, accessFlags) \ 54 end_class \
55 boolean_field(HotSpotResolvedJavaType, hasFinalizer) \ 55 start_class(HotSpotResolvedJavaMethod) \
56 boolean_field(HotSpotResolvedJavaType, hasFinalizableSubclass) \ 56 oop_field(HotSpotResolvedJavaMethod, name, "Ljava/lang/String;") \
57 int_field(HotSpotResolvedJavaType, superCheckOffset) \ 57 oop_field(HotSpotResolvedJavaMethod, holder, "Lcom/oracle/graal/hotspot/meta/HotSpotResolvedJavaType;") \
58 boolean_field(HotSpotResolvedJavaType, isArrayClass) \ 58 long_field(HotSpotResolvedJavaMethod, metaspaceMethod) \
59 boolean_field(HotSpotResolvedJavaType, isInstanceClass) \ 59 int_field(HotSpotResolvedJavaMethod, codeSize) \
60 boolean_field(HotSpotResolvedJavaType, isInterface) \ 60 int_field(HotSpotResolvedJavaMethod, exceptionHandlerCount) \
61 int_field(HotSpotResolvedJavaType, instanceSize) \ 61 boolean_field(HotSpotResolvedJavaMethod, canBeInlined) \
62 end_class \ 62 end_class \
63 start_class(HotSpotKlassOop) \ 63 start_class(HotSpotMethodData) \
64 oop_field(HotSpotKlassOop, type, "Lcom/oracle/graal/api/meta/ResolvedJavaType;") \ 64 long_field(HotSpotMethodData, metaspaceMethodData) \
65 end_class \ 65 int_field(HotSpotMethodData, normalDataSize) \
66 start_class(HotSpotResolvedJavaMethod) \ 66 int_field(HotSpotMethodData, extraDataSize) \
67 oop_field(HotSpotResolvedJavaMethod, name, "Ljava/lang/String;") \ 67 end_class \
68 oop_field(HotSpotResolvedJavaMethod, holder, "Lcom/oracle/graal/api/meta/ResolvedJavaType;") \ 68 start_class(HotSpotJavaType) \
69 oop_field(HotSpotResolvedJavaMethod, javaMirror, "Ljava/lang/Object;") \ 69 oop_field(HotSpotJavaType, name, "Ljava/lang/String;") \
70 int_field(HotSpotResolvedJavaMethod, codeSize) \ 70 end_class \
71 int_field(HotSpotResolvedJavaMethod, accessFlags) \ 71 start_class(HotSpotResolvedJavaField) \
72 int_field(HotSpotResolvedJavaMethod, maxLocals) \ 72 oop_field(HotSpotResolvedJavaField, constant, "Lcom/oracle/graal/api/meta/Constant;") \
73 int_field(HotSpotResolvedJavaMethod, maxStackSize) \ 73 int_field(HotSpotResolvedJavaField, offset) \
74 boolean_field(HotSpotResolvedJavaMethod, canBeInlined) \ 74 int_field(HotSpotResolvedJavaField, flags) \
75 end_class \ 75 end_class \
76 start_class(HotSpotMethodData) \ 76 start_class(HotSpotInstalledCode) \
77 oop_field(HotSpotMethodData, hotspotMirror, "Ljava/lang/Object;") \ 77 long_field(HotSpotInstalledCode, nmethod) \
78 int_field(HotSpotMethodData, normalDataSize) \ 78 oop_field(HotSpotInstalledCode, method, "Lcom/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod;") \
79 int_field(HotSpotMethodData, extraDataSize) \ 79 end_class \
80 end_class \ 80 start_class(HotSpotCodeInfo) \
81 start_class(HotSpotJavaType) \ 81 long_field(HotSpotCodeInfo, start) \
82 oop_field(HotSpotJavaType, name, "Ljava/lang/String;") \ 82 oop_field(HotSpotCodeInfo, code, "[B") \
83 end_class \ 83 end_class \
84 start_class(HotSpotResolvedJavaField) \ 84 start_class(HotSpotCompilationResult) \
85 oop_field(HotSpotResolvedJavaField, constant, "Lcom/oracle/graal/api/meta/Constant;") \ 85 oop_field(HotSpotCompilationResult, comp, "Lcom/oracle/graal/api/code/CompilationResult;") \
86 int_field(HotSpotResolvedJavaField, offset) \ 86 oop_field(HotSpotCompilationResult, method, "Lcom/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod;") \
87 int_field(HotSpotResolvedJavaField, accessFlags) \ 87 oop_field(HotSpotCompilationResult, name, "Ljava/lang/String;") \
88 end_class \ 88 oop_field(HotSpotCompilationResult, sites, "[Lcom/oracle/graal/api/code/CompilationResult$Site;") \
89 start_class(HotSpotCompiledMethod) \ 89 oop_field(HotSpotCompilationResult, exceptionHandlers, "[Lcom/oracle/graal/api/code/CompilationResult$ExceptionHandler;") \
90 long_field(HotSpotCompiledMethod, nmethod) \ 90 end_class \
91 oop_field(HotSpotCompiledMethod, method, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \ 91 start_class(ExceptionHandler) \
92 end_class \ 92 int_field(ExceptionHandler, startBCI) \
93 start_class(HotSpotCodeInfo) \ 93 int_field(ExceptionHandler, endBCI) \
94 long_field(HotSpotCodeInfo, start) \ 94 int_field(ExceptionHandler, handlerBCI) \
95 oop_field(HotSpotCodeInfo, code, "[B") \ 95 int_field(ExceptionHandler, catchTypeCPI) \
96 end_class \ 96 oop_field(ExceptionHandler, catchType, "Lcom/oracle/graal/api/meta/JavaType;") \
97 start_class(HotSpotCompilationResult) \ 97 end_class \
98 oop_field(HotSpotCompilationResult, comp, "Lcom/oracle/graal/api/code/CompilationResult;") \ 98 start_class(CompilationResult) \
99 oop_field(HotSpotCompilationResult, method, "Lcom/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod;") \ 99 int_field(CompilationResult, frameSize) \
100 int_field(HotSpotCompilationResult, entryBCI) \ 100 int_field(CompilationResult, customStackAreaOffset) \
101 oop_field(HotSpotCompilationResult, name, "Ljava/lang/String;") \ 101 oop_field(CompilationResult, targetCode, "[B") \
102 oop_field(HotSpotCompilationResult, sites, "[Lcom/oracle/graal/api/code/CompilationResult$Site;") \ 102 oop_field(CompilationResult, assumptions, "Lcom/oracle/graal/api/code/Assumptions;") \
103 oop_field(HotSpotCompilationResult, exceptionHandlers, "[Lcom/oracle/graal/api/code/CompilationResult$ExceptionHandler;") \ 103 int_field(CompilationResult, targetCodeSize) \
104 end_class \ 104 end_class \
105 start_class(ExceptionHandler) \ 105 start_class(Assumptions) \
106 int_field(ExceptionHandler, startBCI) \ 106 oop_field(Assumptions, list, "[Lcom/oracle/graal/api/code/Assumptions$Assumption;") \
107 int_field(ExceptionHandler, endBCI) \ 107 end_class \
108 int_field(ExceptionHandler, handlerBCI) \ 108 start_class(Assumptions_MethodContents) \
109 int_field(ExceptionHandler, catchTypeCPI) \ 109 oop_field(Assumptions_MethodContents, method, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \
110 oop_field(ExceptionHandler, catchType, "Lcom/oracle/graal/api/meta/JavaType;") \ 110 end_class \
111 end_class \ 111 start_class(Assumptions_ConcreteSubtype) \
112 start_class(CompilationResult) \ 112 oop_field(Assumptions_ConcreteSubtype, context, "Lcom/oracle/graal/api/meta/ResolvedJavaType;") \
113 int_field(CompilationResult, frameSize) \ 113 oop_field(Assumptions_ConcreteSubtype, subtype, "Lcom/oracle/graal/api/meta/ResolvedJavaType;") \
114 int_field(CompilationResult, customStackAreaOffset) \ 114 end_class \
115 oop_field(CompilationResult, targetCode, "[B") \ 115 start_class(Assumptions_ConcreteMethod) \
116 oop_field(CompilationResult, assumptions, "Lcom/oracle/graal/api/code/Assumptions;") \ 116 oop_field(Assumptions_ConcreteMethod, method, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \
117 int_field(CompilationResult, targetCodeSize) \ 117 oop_field(Assumptions_ConcreteMethod, context, "Lcom/oracle/graal/api/meta/ResolvedJavaType;") \
118 end_class \ 118 oop_field(Assumptions_ConcreteMethod, impl, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \
119 start_class(Assumptions) \ 119 end_class \
120 oop_field(Assumptions, list, "[Lcom/oracle/graal/api/code/Assumptions$Assumption;") \ 120 start_class(CompilationResult_Site) \
121 end_class \ 121 int_field(CompilationResult_Site, pcOffset) \
122 start_class(Assumptions_MethodContents) \ 122 end_class \
123 oop_field(Assumptions_MethodContents, method, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \ 123 start_class(CompilationResult_Call) \
124 end_class \ 124 oop_field(CompilationResult_Call, target, "Ljava/lang/Object;") \
125 start_class(Assumptions_ConcreteSubtype) \ 125 oop_field(CompilationResult_Call, debugInfo, "Lcom/oracle/graal/api/code/DebugInfo;") \
126 oop_field(Assumptions_ConcreteSubtype, context, "Lcom/oracle/graal/api/meta/ResolvedJavaType;") \ 126 end_class \
127 oop_field(Assumptions_ConcreteSubtype, subtype, "Lcom/oracle/graal/api/meta/ResolvedJavaType;") \ 127 start_class(CompilationResult_DataPatch) \
128 end_class \ 128 oop_field(CompilationResult_DataPatch, constant, "Lcom/oracle/graal/api/meta/Constant;") \
129 start_class(Assumptions_ConcreteMethod) \ 129 int_field(CompilationResult_DataPatch, alignment) \
130 oop_field(Assumptions_ConcreteMethod, method, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \ 130 end_class \
131 oop_field(Assumptions_ConcreteMethod, context, "Lcom/oracle/graal/api/meta/ResolvedJavaType;") \ 131 start_class(CompilationResult_Safepoint) \
132 oop_field(Assumptions_ConcreteMethod, impl, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \ 132 oop_field(CompilationResult_Safepoint, debugInfo, "Lcom/oracle/graal/api/code/DebugInfo;") \
133 end_class \ 133 end_class \
134 start_class(CompilationResult_Site) \ 134 start_class(CompilationResult_ExceptionHandler) \
135 int_field(CompilationResult_Site, pcOffset) \ 135 int_field(CompilationResult_ExceptionHandler, handlerPos) \
136 end_class \ 136 end_class \
137 start_class(CompilationResult_Call) \ 137 start_class(CompilationResult_Mark) \
138 oop_field(CompilationResult_Call, target, "Ljava/lang/Object;") \ 138 oop_field(CompilationResult_Mark, id, "Ljava/lang/Object;") \
139 oop_field(CompilationResult_Call, debugInfo, "Lcom/oracle/graal/api/code/DebugInfo;") \ 139 oop_field(CompilationResult_Mark, references, "[Lcom/oracle/graal/api/code/CompilationResult$Mark;") \
140 end_class \ 140 end_class \
141 start_class(CompilationResult_DataPatch) \ 141 start_class(DebugInfo) \
142 oop_field(CompilationResult_DataPatch, constant, "Lcom/oracle/graal/api/meta/Constant;") \ 142 oop_field(DebugInfo, bytecodePosition, "Lcom/oracle/graal/api/code/BytecodePosition;") \
143 int_field(CompilationResult_DataPatch, alignment) \ 143 oop_field(DebugInfo, registerRefMap, "Ljava/util/BitSet;") \
144 end_class \ 144 oop_field(DebugInfo, frameRefMap, "Ljava/util/BitSet;") \
145 start_class(CompilationResult_Safepoint) \ 145 end_class \
146 oop_field(CompilationResult_Safepoint, debugInfo, "Lcom/oracle/graal/api/code/DebugInfo;") \ 146 start_class(GraalBitMap) \
147 end_class \ 147 oop_field(GraalBitMap, words, "[J") \
148 start_class(CompilationResult_ExceptionHandler) \ 148 end_class \
149 int_field(CompilationResult_ExceptionHandler, handlerPos) \ 149 start_class(BytecodeFrame) \
150 end_class \ 150 oop_field(BytecodeFrame, values, "[Lcom/oracle/graal/api/meta/Value;") \
151 start_class(CompilationResult_Mark) \ 151 int_field(BytecodeFrame, numLocals) \
152 oop_field(CompilationResult_Mark, id, "Ljava/lang/Object;") \ 152 int_field(BytecodeFrame, numStack) \
153 oop_field(CompilationResult_Mark, references, "[Lcom/oracle/graal/api/code/CompilationResult$Mark;") \ 153 int_field(BytecodeFrame, numLocks) \
154 end_class \ 154 long_field(BytecodeFrame, leafGraphId) \
155 start_class(DebugInfo) \ 155 boolean_field(BytecodeFrame, rethrowException) \
156 oop_field(DebugInfo, bytecodePosition, "Lcom/oracle/graal/api/code/BytecodePosition;") \ 156 boolean_field(BytecodeFrame, duringCall) \
157 oop_field(DebugInfo, registerRefMap, "Ljava/util/BitSet;") \ 157 end_class \
158 oop_field(DebugInfo, frameRefMap, "Ljava/util/BitSet;") \ 158 start_class(BytecodePosition) \
159 end_class \ 159 oop_field(BytecodePosition, caller, "Lcom/oracle/graal/api/code/BytecodePosition;") \
160 start_class(GraalBitMap) \ 160 oop_field(BytecodePosition, method, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \
161 oop_field(GraalBitMap, words, "[J") \ 161 int_field(BytecodePosition, bci) \
162 end_class \ 162 end_class \
163 start_class(BytecodeFrame) \ 163 start_class(Constant) \
164 oop_field(BytecodeFrame, values, "[Lcom/oracle/graal/api/meta/Value;") \ 164 oop_field(Constant, kind, "Lcom/oracle/graal/api/meta/Kind;") \
165 int_field(BytecodeFrame, numLocals) \ 165 oop_field(Constant, object, "Ljava/lang/Object;") \
166 int_field(BytecodeFrame, numStack) \ 166 long_field(Constant, primitive) \
167 int_field(BytecodeFrame, numLocks) \ 167 end_class \
168 long_field(BytecodeFrame, leafGraphId) \ 168 start_class(Kind) \
169 boolean_field(BytecodeFrame, rethrowException) \ 169 char_field(Kind, typeChar) \
170 boolean_field(BytecodeFrame, duringCall) \ 170 static_oop_field(Kind, Boolean, "Lcom/oracle/graal/api/meta/Kind;"); \
171 end_class \ 171 static_oop_field(Kind, Byte, "Lcom/oracle/graal/api/meta/Kind;"); \
172 start_class(BytecodePosition) \ 172 static_oop_field(Kind, Char, "Lcom/oracle/graal/api/meta/Kind;"); \
173 oop_field(BytecodePosition, caller, "Lcom/oracle/graal/api/code/BytecodePosition;") \ 173 static_oop_field(Kind, Short, "Lcom/oracle/graal/api/meta/Kind;"); \
174 oop_field(BytecodePosition, method, "Lcom/oracle/graal/api/meta/ResolvedJavaMethod;") \ 174 static_oop_field(Kind, Int, "Lcom/oracle/graal/api/meta/Kind;"); \
175 int_field(BytecodePosition, bci) \ 175 static_oop_field(Kind, Long, "Lcom/oracle/graal/api/meta/Kind;"); \
176 end_class \ 176 end_class \
177 start_class(Constant) \ 177 start_class(JavaMethod) \
178 oop_field(Constant, kind, "Lcom/oracle/graal/api/meta/Kind;") \ 178 end_class \
179 oop_field(Constant, object, "Ljava/lang/Object;") \ 179 start_class(Value) \
180 long_field(Constant, primitive) \ 180 oop_field(Value, kind, "Lcom/oracle/graal/api/meta/Kind;") \
181 end_class \ 181 static_oop_field(Value, ILLEGAL, "Lcom/oracle/graal/api/meta/Value;"); \
182 start_class(Kind) \ 182 end_class \
183 char_field(Kind, typeChar) \ 183 start_class(RegisterValue) \
184 static_oop_field(Kind, Boolean, "Lcom/oracle/graal/api/meta/Kind;"); \ 184 oop_field(RegisterValue, reg, "Lcom/oracle/graal/api/code/Register;") \
185 static_oop_field(Kind, Byte, "Lcom/oracle/graal/api/meta/Kind;"); \ 185 end_class \
186 static_oop_field(Kind, Char, "Lcom/oracle/graal/api/meta/Kind;"); \ 186 start_class(code_Register) \
187 static_oop_field(Kind, Short, "Lcom/oracle/graal/api/meta/Kind;"); \ 187 int_field(code_Register, number) \
188 static_oop_field(Kind, Int, "Lcom/oracle/graal/api/meta/Kind;"); \ 188 end_class \
189 static_oop_field(Kind, Long, "Lcom/oracle/graal/api/meta/Kind;"); \ 189 start_class(StackSlot) \
190 end_class \ 190 int_field(StackSlot, offset) \
191 start_class(JavaMethod) \ 191 boolean_field(StackSlot, addFrameSize) \
192 end_class \ 192 end_class \
193 start_class(Value) \ 193 start_class(VirtualObject) \
194 oop_field(Value, kind, "Lcom/oracle/graal/api/meta/Kind;") \ 194 int_field(VirtualObject, id) \
195 static_oop_field(Value, ILLEGAL, "Lcom/oracle/graal/api/meta/Value;"); \ 195 oop_field(VirtualObject, type, "Lcom/oracle/graal/api/meta/ResolvedJavaType;") \
196 end_class \ 196 oop_field(VirtualObject, values, "[Lcom/oracle/graal/api/meta/Value;") \
197 start_class(RegisterValue) \ 197 end_class \
198 oop_field(RegisterValue, reg, "Lcom/oracle/graal/api/code/Register;") \ 198 start_class(code_MonitorValue) \
199 end_class \ 199 oop_field(code_MonitorValue, owner, "Lcom/oracle/graal/api/meta/Value;") \
200 start_class(code_Register) \ 200 oop_field(code_MonitorValue, lockData, "Lcom/oracle/graal/api/meta/Value;") \
201 int_field(code_Register, number) \ 201 boolean_field(code_MonitorValue, eliminated) \
202 end_class \ 202 end_class \
203 start_class(StackSlot) \
204 int_field(StackSlot, offset) \
205 boolean_field(StackSlot, addFrameSize) \
206 end_class \
207 start_class(VirtualObject) \
208 int_field(VirtualObject, id) \
209 oop_field(VirtualObject, type, "Lcom/oracle/graal/api/meta/JavaType;") \
210 oop_field(VirtualObject, values, "[Lcom/oracle/graal/api/meta/Value;") \
211 end_class \
212 start_class(code_MonitorValue) \
213 oop_field(code_MonitorValue, owner, "Lcom/oracle/graal/api/meta/Value;") \
214 oop_field(code_MonitorValue, lockData, "Lcom/oracle/graal/api/meta/Value;") \
215 boolean_field(code_MonitorValue, eliminated) \
216 end_class \
217 /* end*/ 203 /* end*/
218 204
219 #define START_CLASS(name) \ 205 #define START_CLASS(name) \
220 class name : AllStatic { \ 206 class name : AllStatic { \
221 private: \ 207 private: \
222 friend class GraalCompiler; \ 208 friend class GraalCompiler; \
223 static void check(oop obj) { assert(obj != NULL, "NULL field access of class " #name); assert(obj->is_a(SystemDictionary::name##_klass()), "wrong class, " #name " expected"); } \ 209 static void check(oop obj) { \
224 static void compute_offsets(); \ 210 assert(obj != NULL, "NULL field access of class " #name); \
225 public: \ 211 assert(obj->is_a(SystemDictionary::name##_klass()), "wrong class, " #name " expected"); \
226 static klassOop klass() { return SystemDictionary::name##_klass(); } 212 } \
213 static void compute_offsets(); \
214 public: \
215 static Klass* klass() { return SystemDictionary::name##_klass(); }
227 216
228 #define END_CLASS }; 217 #define END_CLASS };
229 218
230 #define FIELD(name, type, accessor) \ 219 #define FIELD(name, type, accessor) \
231 static int _##name##_offset; \ 220 static int _##name##_offset; \
232 static type name(oop obj) { check(obj); return obj->accessor(_##name##_offset); } \ 221 static type name(oop obj) { check(obj); return obj->accessor(_##name##_offset); } \
233 static type name(Handle& obj) { check(obj()); return obj->accessor(_##name##_offset); } \ 222 static type name(Handle& obj) { check(obj()); return obj->accessor(_##name##_offset); } \
234 static type name(jobject obj) { check(JNIHandles::resolve(obj)); return JNIHandles::resolve(obj)->accessor(_##name##_offset); } \ 223 static type name(jobject obj) { check(JNIHandles::resolve(obj)); return JNIHandles::resolve(obj)->accessor(_##name##_offset); } \
235 static void set_##name(oop obj, type x) { check(obj); obj->accessor##_put(_##name##_offset, x); } \ 224 static void set_##name(oop obj, type x) { check(obj); obj->accessor##_put(_##name##_offset, x); } \
236 static void set_##name(Handle& obj, type x) { check(obj()); obj->accessor##_put(_##name##_offset, x); } \ 225 static void set_##name(Handle& obj, type x) { check(obj()); obj->accessor##_put(_##name##_offset, x); } \
237 static void set_##name(jobject obj, type x) { check(JNIHandles::resolve(obj)); JNIHandles::resolve(obj)->accessor##_put(_##name##_offset, x); } 226 static void set_##name(jobject obj, type x) { check(JNIHandles::resolve(obj)); JNIHandles::resolve(obj)->accessor##_put(_##name##_offset, x); }
238 227
239 #define CHAR_FIELD(klass, name) FIELD(name, jchar, char_field) 228 #define CHAR_FIELD(klass, name) FIELD(name, jchar, char_field)
240 #define INT_FIELD(klass, name) FIELD(name, jint, int_field) 229 #define INT_FIELD(klass, name) FIELD(name, jint, int_field)
241 #define BOOLEAN_FIELD(klass, name) FIELD(name, jboolean, bool_field) 230 #define BOOLEAN_FIELD(klass, name) FIELD(name, jboolean, bool_field)
242 #define LONG_FIELD(klass, name) FIELD(name, jlong, long_field) 231 #define LONG_FIELD(klass, name) FIELD(name, jlong, long_field)
243 #define FLOAT_FIELD(klass, name) FIELD(name, jfloat, float_field) 232 #define FLOAT_FIELD(klass, name) FIELD(name, jfloat, float_field)
244 #define OOP_FIELD(klass, name, signature) FIELD(name, oop, obj_field) 233 #define OOP_FIELD(klass, name, signature) FIELD(name, oop, obj_field)
245 #define STATIC_OOP_FIELD(klassName, name, signature) \ 234 #define STATIC_OOP_FIELD(klassName, name, signature) \
246 static int _##name##_offset; \ 235 static int _##name##_offset; \
247 static oop name() { \ 236 static oop name() { \
248 instanceKlass* ik = instanceKlass::cast(klassName::klass()); \ 237 InstanceKlass* ik = InstanceKlass::cast(klassName::klass()); \
249 address addr = ik->static_field_addr(_##name##_offset - instanceMirrorKlass::offset_of_static_fields()); \ 238 address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \
250 if (UseCompressedOops) { \ 239 if (UseCompressedOops) { \
251 return oopDesc::load_decode_heap_oop((narrowOop *)addr); \ 240 return oopDesc::load_decode_heap_oop((narrowOop *)addr); \
252 } else { \ 241 } else { \
253 return oopDesc::load_decode_heap_oop((oop*)addr); \ 242 return oopDesc::load_decode_heap_oop((oop*)addr); \
254 } \ 243 } \
255 } \ 244 } \
256 static void set_##name(oop x) { \ 245 static void set_##name(oop x) { \
257 instanceKlass* ik = instanceKlass::cast(klassName::klass()); \ 246 InstanceKlass* ik = InstanceKlass::cast(klassName::klass()); \
258 address addr = ik->static_field_addr(_##name##_offset - instanceMirrorKlass::offset_of_static_fields()); \ 247 address addr = ik->static_field_addr(_##name##_offset - InstanceMirrorKlass::offset_of_static_fields()); \
259 if (UseCompressedOops) { \ 248 if (UseCompressedOops) { \
260 oop_store((narrowOop *)addr, x); \ 249 oop_store((narrowOop *)addr, x); \
261 } else { \ 250 } else { \
262 oop_store((oop*)addr, x); \ 251 oop_store((oop*)addr, x); \
263 } \ 252 } \
264 } 253 }
265 COMPILER_CLASSES_DO(START_CLASS, END_CLASS, CHAR_FIELD, INT_FIELD, BOOLEAN_FIELD, LONG_FIELD, FLOAT_FIELD, OOP_FIELD, STATIC_OOP_FIELD) 254 COMPILER_CLASSES_DO(START_CLASS, END_CLASS, CHAR_FIELD, INT_FIELD, BOOLEAN_FIELD, LONG_FIELD, FLOAT_FIELD, OOP_FIELD, STATIC_OOP_FIELD)
266 #undef START_CLASS 255 #undef START_CLASS
267 #undef END_CLASS 256 #undef END_CLASS
268 #undef FIELD 257 #undef FIELD
272 #undef LONG_FIELD 261 #undef LONG_FIELD
273 #undef FLOAT_FIELD 262 #undef FLOAT_FIELD
274 #undef OOP_FIELD 263 #undef OOP_FIELD
275 #undef STATIC_OOP_FIELD 264 #undef STATIC_OOP_FIELD
276 265
277 void compute_offset(int &dest_offset, klassOop klass_oop, const char* name, const char* signature, bool static_field); 266 void compute_offset(int &dest_offset, Klass* klass, const char* name, const char* signature, bool static_field);
278 267
279 #endif // SHARE_VM_GRAAL_GRAAL_JAVA_ACCESS_HPP 268 #endif // SHARE_VM_GRAAL_GRAAL_JAVA_ACCESS_HPP