31 class JVMCIJavaClasses : AllStatic { |
31 class JVMCIJavaClasses : AllStatic { |
32 public: |
32 public: |
33 static void compute_offsets(TRAPS); |
33 static void compute_offsets(TRAPS); |
34 }; |
34 }; |
35 |
35 |
36 /* This macro defines the structure of the CompilationResult - classes. |
36 /* This macro defines the structure of the JVMCI classes accessed from VM code. |
37 * It will generate classes with accessors similar to javaClasses.hpp, but with specializations for oops, Handles and jni handles. |
37 * It will generate classes with accessors similar to javaClasses.hpp, but with specializations for oops, Handles and jni handles. |
38 * |
38 * |
39 * The public interface of these classes will look like this: |
39 * The public interface of these classes will look like this: |
40 |
40 |
41 * class StackSlot : AllStatic { |
41 * class StackSlot : AllStatic { |
217 start_class(HotSpotObjectConstantImpl) \ |
217 start_class(HotSpotObjectConstantImpl) \ |
218 oop_field(HotSpotObjectConstantImpl, object, "Ljava/lang/Object;") \ |
218 oop_field(HotSpotObjectConstantImpl, object, "Ljava/lang/Object;") \ |
219 boolean_field(HotSpotObjectConstantImpl, compressed) \ |
219 boolean_field(HotSpotObjectConstantImpl, compressed) \ |
220 end_class \ |
220 end_class \ |
221 start_class(HotSpotMetaspaceConstantImpl) \ |
221 start_class(HotSpotMetaspaceConstantImpl) \ |
222 oop_field(HotSpotMetaspaceConstantImpl, metaspaceObject, "Ljdk/vm/ci/hotspot/MetaspaceWrapperObject;") \ |
222 oop_field(HotSpotMetaspaceConstantImpl, metaspaceObject, "Ljdk/vm/ci/hotspot/MetaspaceWrapperObject;") \ |
223 boolean_field(HotSpotMetaspaceConstantImpl, compressed) \ |
223 boolean_field(HotSpotMetaspaceConstantImpl, compressed) \ |
224 end_class \ |
224 end_class \ |
225 start_class(HotSpotSentinelConstant) \ |
225 start_class(HotSpotSentinelConstant) \ |
226 end_class \ |
226 end_class \ |
227 start_class(JavaKind) \ |
227 start_class(JavaKind) \ |
277 int_field(HotSpotStackFrameReference, bci) \ |
277 int_field(HotSpotStackFrameReference, bci) \ |
278 oop_field(HotSpotStackFrameReference, method, "Ljdk/vm/ci/hotspot/HotSpotResolvedJavaMethod;") \ |
278 oop_field(HotSpotStackFrameReference, method, "Ljdk/vm/ci/hotspot/HotSpotResolvedJavaMethod;") \ |
279 objArrayOop_field(HotSpotStackFrameReference, locals, "[Ljava/lang/Object;") \ |
279 objArrayOop_field(HotSpotStackFrameReference, locals, "[Ljava/lang/Object;") \ |
280 typeArrayOop_field(HotSpotStackFrameReference, localIsVirtual, "[Z") \ |
280 typeArrayOop_field(HotSpotStackFrameReference, localIsVirtual, "[Z") \ |
281 end_class \ |
281 end_class \ |
282 start_class(HotSpotMetaData) \ |
282 start_class(HotSpotMetaData) \ |
283 typeArrayOop_field(HotSpotMetaData, pcDescBytes, "[B") \ |
283 typeArrayOop_field(HotSpotMetaData, pcDescBytes, "[B") \ |
284 typeArrayOop_field(HotSpotMetaData, scopesDescBytes, "[B") \ |
284 typeArrayOop_field(HotSpotMetaData, scopesDescBytes, "[B") \ |
285 typeArrayOop_field(HotSpotMetaData, relocBytes, "[B") \ |
285 typeArrayOop_field(HotSpotMetaData, relocBytes, "[B") \ |
286 typeArrayOop_field(HotSpotMetaData, exceptionBytes, "[B") \ |
286 typeArrayOop_field(HotSpotMetaData, exceptionBytes, "[B") \ |
287 typeArrayOop_field(HotSpotMetaData, oopMaps, "[B") \ |
287 typeArrayOop_field(HotSpotMetaData, oopMaps, "[B") \ |
288 objArrayOop_field(HotSpotMetaData, metadata, "[Ljava/lang/String;") \ |
288 objArrayOop_field(HotSpotMetaData, metadata, "[Ljava/lang/String;") \ |
289 end_class \ |
289 end_class \ |
290 start_class(HotSpotOopMap) \ |
290 start_class(HotSpotOopMap) \ |
291 int_field(HotSpotOopMap, offset) \ |
291 int_field(HotSpotOopMap, offset) \ |
292 int_field(HotSpotOopMap, count) \ |
292 int_field(HotSpotOopMap, count) \ |
293 typeArrayOop_field(HotSpotOopMap, data, "[B") \ |
293 typeArrayOop_field(HotSpotOopMap, data, "[B") \ |
294 end_class \ |
294 end_class \ |
295 start_class(HotSpotConstantPool) \ |
295 start_class(HotSpotConstantPool) \ |
296 long_field(HotSpotConstantPool, metaspaceConstantPool) \ |
296 long_field(HotSpotConstantPool, metaspaceConstantPool) \ |
297 end_class \ |
297 end_class \ |
298 start_class(HotSpotJVMCIRuntime) \ |
298 start_class(HotSpotJVMCIRuntime) \ |
299 objArrayOop_field(HotSpotJVMCIRuntime, trivialPrefixes, "[Ljava/lang/String;") \ |
299 objArrayOop_field(HotSpotJVMCIRuntime, trivialPrefixes, "[Ljava/lang/String;") \ |
|
300 int_field(HotSpotJVMCIRuntime, compilationLevelAdjustment) \ |
300 end_class \ |
301 end_class \ |
301 /* end*/ |
302 /* end*/ |
302 |
303 |
303 #define START_CLASS(name) \ |
304 #define START_CLASS(name) \ |
304 class name : AllStatic { \ |
305 class name : AllStatic { \ |
307 static void check(oop obj, const char* field_name, int offset) { \ |
308 static void check(oop obj, const char* field_name, int offset) { \ |
308 assert(obj != NULL, "NULL field access of %s.%s", #name, field_name); \ |
309 assert(obj != NULL, "NULL field access of %s.%s", #name, field_name); \ |
309 assert(obj->is_a(SystemDictionary::name##_klass()), "wrong class, " #name " expected, found %s", obj->klass()->external_name()); \ |
310 assert(obj->is_a(SystemDictionary::name##_klass()), "wrong class, " #name " expected, found %s", obj->klass()->external_name()); \ |
310 assert(offset != 0, "must be valid offset"); \ |
311 assert(offset != 0, "must be valid offset"); \ |
311 } \ |
312 } \ |
312 static void compute_offsets(TRAPS); \ |
313 static void compute_offsets(TRAPS); \ |
313 public: \ |
314 public: \ |
314 static InstanceKlass* klass() { return SystemDictionary::name##_klass(); } |
315 static InstanceKlass* klass() { return SystemDictionary::name##_klass(); } |
315 |
316 |
316 #define END_CLASS }; |
317 #define END_CLASS }; |
317 |
318 |