Mercurial > hg > graal-jvmci-8
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 |