43 #include "jvmci/jvmciEnv.hpp"
44 #include "jvmci/jvmciJavaClasses.hpp"
45 #include "jvmci/jvmciCodeInstaller.hpp"
46 #include "gc/g1/heapRegion.hpp"
47 #include "runtime/javaCalls.hpp"
48 #include "runtime/deoptimization.hpp"
49 #include "runtime/vframe.hpp"
50 #include "runtime/vframe_hp.hpp"
51 #include "runtime/vmStructs.hpp"
52
53
54 // Entry to native method implementation that transitions current thread to '_thread_in_vm'.
55 #define C2V_VMENTRY(result_type, name, signature) \
56 JNIEXPORT result_type JNICALL c2v_ ## name signature { \
57 TRACE_jvmci_1("CompilerToVM::" #name); \
58 TRACE_CALL(result_type, jvmci_ ## name signature) \
59 JVMCI_VM_ENTRY_MARK; \
60
61 #define C2V_END }
62
63 oop CompilerToVM::get_jvmci_method(methodHandle method, TRAPS) {
64 if (method() != NULL) {
65 JavaValue result(T_OBJECT);
66 JavaCallArguments args;
67 args.push_long((jlong) (address) method());
68 JavaCalls::call_static(&result, SystemDictionary::HotSpotResolvedJavaMethodImpl_klass(), vmSymbols::fromMetaspace_name(), vmSymbols::method_fromMetaspace_signature(), &args, CHECK_NULL);
69
70 return (oop)result.get_jobject();
71 }
72 return NULL;
73 }
74
75 oop CompilerToVM::get_jvmci_type(KlassHandle klass, TRAPS) {
76 if (klass() != NULL) {
77 JavaValue result(T_OBJECT);
78 JavaCallArguments args;
79 args.push_oop(klass->java_mirror());
80 JavaCalls::call_static(&result, SystemDictionary::HotSpotResolvedObjectTypeImpl_klass(), vmSymbols::fromMetaspace_name(), vmSymbols::klass_fromMetaspace_signature(), &args, CHECK_NULL);
81
82 return (oop)result.get_jobject();
83 }
|
43 #include "jvmci/jvmciEnv.hpp"
44 #include "jvmci/jvmciJavaClasses.hpp"
45 #include "jvmci/jvmciCodeInstaller.hpp"
46 #include "gc/g1/heapRegion.hpp"
47 #include "runtime/javaCalls.hpp"
48 #include "runtime/deoptimization.hpp"
49 #include "runtime/vframe.hpp"
50 #include "runtime/vframe_hp.hpp"
51 #include "runtime/vmStructs.hpp"
52
53
54 // Entry to native method implementation that transitions current thread to '_thread_in_vm'.
55 #define C2V_VMENTRY(result_type, name, signature) \
56 JNIEXPORT result_type JNICALL c2v_ ## name signature { \
57 TRACE_jvmci_1("CompilerToVM::" #name); \
58 TRACE_CALL(result_type, jvmci_ ## name signature) \
59 JVMCI_VM_ENTRY_MARK; \
60
61 #define C2V_END }
62
63 oop CompilerToVM::get_jvmci_method(const methodHandle& method, TRAPS) {
64 if (method() != NULL) {
65 JavaValue result(T_OBJECT);
66 JavaCallArguments args;
67 args.push_long((jlong) (address) method());
68 JavaCalls::call_static(&result, SystemDictionary::HotSpotResolvedJavaMethodImpl_klass(), vmSymbols::fromMetaspace_name(), vmSymbols::method_fromMetaspace_signature(), &args, CHECK_NULL);
69
70 return (oop)result.get_jobject();
71 }
72 return NULL;
73 }
74
75 oop CompilerToVM::get_jvmci_type(KlassHandle klass, TRAPS) {
76 if (klass() != NULL) {
77 JavaValue result(T_OBJECT);
78 JavaCallArguments args;
79 args.push_oop(klass->java_mirror());
80 JavaCalls::call_static(&result, SystemDictionary::HotSpotResolvedObjectTypeImpl_klass(), vmSymbols::fromMetaspace_name(), vmSymbols::klass_fromMetaspace_signature(), &args, CHECK_NULL);
81
82 return (oop)result.get_jobject();
83 }
|