80 81 static inline Klass* asKlass(jobject jvmci_type) { 82 return java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(jvmci_type)); 83 } 84 85 static inline Klass* asKlass(Handle jvmci_type) { 86 return java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(jvmci_type)); 87 } 88 89 static inline Klass* asKlass(oop jvmci_type) { 90 return java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(jvmci_type)); 91 } 92 93 static inline MethodData* asMethodData(jlong metaspaceMethodData) { 94 return (MethodData*) (address) metaspaceMethodData; 95 } 96 97 static oop get_jvmci_method(methodHandle method, TRAPS); 98 99 static oop get_jvmci_type(KlassHandle klass, TRAPS); 100 }; 101 102 class JavaArgumentUnboxer : public SignatureIterator { 103 protected: 104 JavaCallArguments* _jca; 105 arrayOop _args; 106 int _index; 107 108 oop next_arg(BasicType expectedType) { 109 assert(_index < _args->length(), "out of bounds"); 110 oop arg=((objArrayOop) (_args))->obj_at(_index++); 111 assert(expectedType == T_OBJECT || java_lang_boxing_object::is_instance(arg, expectedType), "arg type mismatch"); 112 return arg; 113 } 114 115 public: 116 JavaArgumentUnboxer(Symbol* signature, JavaCallArguments* jca, arrayOop args, bool is_static) : SignatureIterator(signature) { 117 this->_return_type = T_ILLEGAL; 118 _jca = jca; 119 _index = 0; | 80 81 static inline Klass* asKlass(jobject jvmci_type) { 82 return java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(jvmci_type)); 83 } 84 85 static inline Klass* asKlass(Handle jvmci_type) { 86 return java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(jvmci_type)); 87 } 88 89 static inline Klass* asKlass(oop jvmci_type) { 90 return java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(jvmci_type)); 91 } 92 93 static inline MethodData* asMethodData(jlong metaspaceMethodData) { 94 return (MethodData*) (address) metaspaceMethodData; 95 } 96 97 static oop get_jvmci_method(methodHandle method, TRAPS); 98 99 static oop get_jvmci_type(KlassHandle klass, TRAPS); 100 101 static void invalidate_installed_code(Handle installedCode, TRAPS); 102 }; 103 104 class JavaArgumentUnboxer : public SignatureIterator { 105 protected: 106 JavaCallArguments* _jca; 107 arrayOop _args; 108 int _index; 109 110 oop next_arg(BasicType expectedType) { 111 assert(_index < _args->length(), "out of bounds"); 112 oop arg=((objArrayOop) (_args))->obj_at(_index++); 113 assert(expectedType == T_OBJECT || java_lang_boxing_object::is_instance(arg, expectedType), "arg type mismatch"); 114 return arg; 115 } 116 117 public: 118 JavaArgumentUnboxer(Symbol* signature, JavaCallArguments* jca, arrayOop args, bool is_static) : SignatureIterator(signature) { 119 this->_return_type = T_ILLEGAL; 120 _jca = jca; 121 _index = 0; |