< prev index next >

src/share/vm/jvmci/jvmciCompilerToVM.hpp

Print this page




 118   }
 119 
 120   static inline Klass* asKlass(Handle jvmci_type) {
 121     return java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(jvmci_type));
 122   }
 123 
 124   static inline Klass* asKlass(oop jvmci_type) {
 125     return java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(jvmci_type));
 126   }
 127 
 128   static inline Klass* asKlass(jlong metaspaceKlass) {
 129     return (Klass*) (address) metaspaceKlass;
 130   }
 131 
 132   static inline MethodData* asMethodData(jlong metaspaceMethodData) {
 133     return (MethodData*) (address) metaspaceMethodData;
 134   }
 135 
 136   static oop get_jvmci_method(const methodHandle& method, TRAPS);
 137 
 138   static oop get_jvmci_type(KlassHandle klass, TRAPS);
 139 };
 140 
 141 class JavaArgumentUnboxer : public SignatureIterator {
 142  protected:
 143   JavaCallArguments*  _jca;
 144   arrayOop _args;
 145   int _index;
 146 
 147   Handle next_arg(BasicType expectedType) {
 148     assert(_index < _args->length(), "out of bounds");
 149     oop arg=((objArrayOop) (_args))->obj_at(_index++);
 150     assert(expectedType == T_OBJECT || java_lang_boxing_object::is_instance(arg, expectedType), "arg type mismatch");
 151     return Handle(Thread::current(), arg);
 152   }
 153 
 154  public:
 155   JavaArgumentUnboxer(Symbol* signature, JavaCallArguments*  jca, arrayOop args, bool is_static) : SignatureIterator(signature) {
 156     this->_return_type = T_ILLEGAL;
 157     _jca = jca;
 158     _index = 0;




 118   }
 119 
 120   static inline Klass* asKlass(Handle jvmci_type) {
 121     return java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(jvmci_type));
 122   }
 123 
 124   static inline Klass* asKlass(oop jvmci_type) {
 125     return java_lang_Class::as_Klass(HotSpotResolvedObjectTypeImpl::javaClass(jvmci_type));
 126   }
 127 
 128   static inline Klass* asKlass(jlong metaspaceKlass) {
 129     return (Klass*) (address) metaspaceKlass;
 130   }
 131 
 132   static inline MethodData* asMethodData(jlong metaspaceMethodData) {
 133     return (MethodData*) (address) metaspaceMethodData;
 134   }
 135 
 136   static oop get_jvmci_method(const methodHandle& method, TRAPS);
 137 
 138   static oop get_jvmci_type(Klass* klass, TRAPS);
 139 };
 140 
 141 class JavaArgumentUnboxer : public SignatureIterator {
 142  protected:
 143   JavaCallArguments*  _jca;
 144   arrayOop _args;
 145   int _index;
 146 
 147   Handle next_arg(BasicType expectedType) {
 148     assert(_index < _args->length(), "out of bounds");
 149     oop arg=((objArrayOop) (_args))->obj_at(_index++);
 150     assert(expectedType == T_OBJECT || java_lang_boxing_object::is_instance(arg, expectedType), "arg type mismatch");
 151     return Handle(Thread::current(), arg);
 152   }
 153 
 154  public:
 155   JavaArgumentUnboxer(Symbol* signature, JavaCallArguments*  jca, arrayOop args, bool is_static) : SignatureIterator(signature) {
 156     this->_return_type = T_ILLEGAL;
 157     _jca = jca;
 158     _index = 0;


< prev index next >