< prev index next >

src/hotspot/share/prims/jvm.cpp

Print this page

        

*** 1892,1901 **** --- 1892,1926 ---- Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls)); return k->access_flags().as_int() & JVM_ACC_WRITTEN_FLAGS; } JVM_END + JVM_ENTRY(jobjectArray, JVM_GetLocalValueTypes(JNIEnv* env, jclass cls)) + { + JVMWrapper("JVM_GetLocalValueTypes"); + Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls)); + assert(k->is_instance_klass(), "must be"); + InstanceKlass* ik = InstanceKlass::cast(k); + if (ik->has_value_types_attribute()) { + Array<ValueTypes>* value_types = ik->value_types(); + int length = value_types->length(); + + objArrayOop r = oopFactory::new_objArray(SystemDictionary::String_klass(), length, CHECK_NULL); + objArrayHandle result(THREAD, r); + for (int i=0; i < length; i++) { + Symbol* vt = value_types->at(i)._class_name; + Handle s = java_lang_String::create_from_symbol(vt, CHECK_0); + result->obj_at_put(i, s()); + } + return (jobjectArray)JNIHandles::make_local(THREAD, result()); + } else { + return NULL; + } + } + JVM_END + + // Constant pool access ////////////////////////////////////////////////////////// JVM_ENTRY(jobject, JVM_GetClassConstantPool(JNIEnv *env, jclass cls)) {
< prev index next >