445 void destroy_local(JVMCIObject object);
446
447 // Makes a JNI global handle that is not scoped by the
448 // lifetime of a JVMCIRuntime (cf JVMCIRuntime::make_global).
449 // These JNI handles are used when translating an object
450 // between the HotSpot and JVMCI shared library heap via
451 // HotSpotJVMCIRuntime.translate(Object) and
452 // HotSpotJVMCIRuntime.unhand(Class<T>, long). Translation
453 // can happen in either direction so the referenced object
454 // can reside in either heap which is why JVMCIRuntime scoped
455 // handles cannot be used (they are specific to HotSpot heap objects).
456 JVMCIObject make_global(JVMCIObject object);
457
458 // Destroys a JNI global handle created by JVMCIEnv::make_global.
459 void destroy_global(JVMCIObject object);
460
461 // Updates the nmethod (if any) in the HotSpotNmethod.address
462 // field of `mirror` to prevent it from being called.
463 // If `deoptimize` is true, the nmethod is immediately deoptimized.
464 // The HotSpotNmethod.address field is zero upon returning.
465 void invalidate_nmethod_mirror(JVMCIObject mirror, bool deoptimze, JVMCI_TRAPS);
466
467 void initialize_installed_code(JVMCIObject installed_code, CodeBlob* cb, JVMCI_TRAPS);
468
469 private:
470 JVMCICompileState* _compile_state;
471
472 public:
473
474 // Determines if this is for the JVMCI runtime in the HotSpot
475 // heap (true) or the shared library heap (false).
476 bool is_hotspot() { return _is_hotspot; }
477
478 JVMCICompileState* compile_state() { return _compile_state; }
479 void set_compile_state(JVMCICompileState* compile_state) {
480 assert(_compile_state == nullptr, "set only once");
481 _compile_state = compile_state;
482 }
483 // Generate declarations for the initialize, new, isa, get and set methods for all the types and
484 // fields declared in the JVMCI_CLASSES_DO macro.
485
|
445 void destroy_local(JVMCIObject object);
446
447 // Makes a JNI global handle that is not scoped by the
448 // lifetime of a JVMCIRuntime (cf JVMCIRuntime::make_global).
449 // These JNI handles are used when translating an object
450 // between the HotSpot and JVMCI shared library heap via
451 // HotSpotJVMCIRuntime.translate(Object) and
452 // HotSpotJVMCIRuntime.unhand(Class<T>, long). Translation
453 // can happen in either direction so the referenced object
454 // can reside in either heap which is why JVMCIRuntime scoped
455 // handles cannot be used (they are specific to HotSpot heap objects).
456 JVMCIObject make_global(JVMCIObject object);
457
458 // Destroys a JNI global handle created by JVMCIEnv::make_global.
459 void destroy_global(JVMCIObject object);
460
461 // Updates the nmethod (if any) in the HotSpotNmethod.address
462 // field of `mirror` to prevent it from being called.
463 // If `deoptimize` is true, the nmethod is immediately deoptimized.
464 // The HotSpotNmethod.address field is zero upon returning.
465 void invalidate_nmethod_mirror(JVMCIObject mirror, bool deoptimze, nmethod::InvalidationReason invalidation_reason, JVMCI_TRAPS);
466
467 void initialize_installed_code(JVMCIObject installed_code, CodeBlob* cb, JVMCI_TRAPS);
468
469 private:
470 JVMCICompileState* _compile_state;
471
472 public:
473
474 // Determines if this is for the JVMCI runtime in the HotSpot
475 // heap (true) or the shared library heap (false).
476 bool is_hotspot() { return _is_hotspot; }
477
478 JVMCICompileState* compile_state() { return _compile_state; }
479 void set_compile_state(JVMCICompileState* compile_state) {
480 assert(_compile_state == nullptr, "set only once");
481 _compile_state = compile_state;
482 }
483 // Generate declarations for the initialize, new, isa, get and set methods for all the types and
484 // fields declared in the JVMCI_CLASSES_DO macro.
485
|