< prev index next >

src/share/vm/prims/jvm.cpp

Print this page




2214   return (jstring) JNIHandles::make_local(str());
2215 }
2216 JVM_END
2217 
2218 JVM_ENTRY(jbyte, JVM_ConstantPoolGetTagAt(JNIEnv *env, jobject obj, jobject unused, jint index))
2219 {
2220   JVMWrapper("JVM_ConstantPoolGetTagAt");
2221   constantPoolHandle cp = constantPoolHandle(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
2222   bounds_check(cp, index, CHECK_0);
2223   constantTag tag = cp->tag_at(index);
2224   jbyte result = tag.value();
2225   // If returned tag values are not from the JVM spec, e.g. tags from 100 to 105,
2226   // they are changed to the corresponding tags from the JVM spec, so that java code in
2227   // sun.reflect.ConstantPool will return only tags from the JVM spec, not internal ones.
2228   if (tag.is_klass_or_reference()) {
2229       result = JVM_CONSTANT_Class;
2230   } else if (tag.is_string_index()) {
2231       result = JVM_CONSTANT_String;
2232   } else if (tag.is_method_type_in_error()) {
2233       result = JVM_CONSTANT_MethodType;


2234   } else if (tag.is_method_handle_in_error()) {
2235       result = JVM_CONSTANT_MethodHandle;
2236   }
2237   return result;
2238 }
2239 JVM_END
2240 
2241 // Assertion support. //////////////////////////////////////////////////////////
2242 
2243 JVM_ENTRY(jboolean, JVM_DesiredAssertionStatus(JNIEnv *env, jclass unused, jclass cls))
2244   JVMWrapper("JVM_DesiredAssertionStatus");
2245   assert(cls != NULL, "bad class");
2246 
2247   oop r = JNIHandles::resolve(cls);
2248   assert(! java_lang_Class::is_primitive(r), "primitive classes not allowed");
2249   if (java_lang_Class::is_primitive(r)) return false;
2250 
2251   Klass* k = java_lang_Class::as_Klass(r);
2252   assert(k->is_instance_klass(), "must be an instance klass");
2253   if (!k->is_instance_klass()) return false;




2214   return (jstring) JNIHandles::make_local(str());
2215 }
2216 JVM_END
2217 
2218 JVM_ENTRY(jbyte, JVM_ConstantPoolGetTagAt(JNIEnv *env, jobject obj, jobject unused, jint index))
2219 {
2220   JVMWrapper("JVM_ConstantPoolGetTagAt");
2221   constantPoolHandle cp = constantPoolHandle(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
2222   bounds_check(cp, index, CHECK_0);
2223   constantTag tag = cp->tag_at(index);
2224   jbyte result = tag.value();
2225   // If returned tag values are not from the JVM spec, e.g. tags from 100 to 105,
2226   // they are changed to the corresponding tags from the JVM spec, so that java code in
2227   // sun.reflect.ConstantPool will return only tags from the JVM spec, not internal ones.
2228   if (tag.is_klass_or_reference()) {
2229       result = JVM_CONSTANT_Class;
2230   } else if (tag.is_string_index()) {
2231       result = JVM_CONSTANT_String;
2232   } else if (tag.is_method_type_in_error()) {
2233       result = JVM_CONSTANT_MethodType;
2234   } else if (tag.is_invoke_dynamic_in_error()) {
2235       result = JVM_CONSTANT_InvokeDynamic;
2236   } else if (tag.is_method_handle_in_error()) {
2237       result = JVM_CONSTANT_MethodHandle;
2238   }
2239   return result;
2240 }
2241 JVM_END
2242 
2243 // Assertion support. //////////////////////////////////////////////////////////
2244 
2245 JVM_ENTRY(jboolean, JVM_DesiredAssertionStatus(JNIEnv *env, jclass unused, jclass cls))
2246   JVMWrapper("JVM_DesiredAssertionStatus");
2247   assert(cls != NULL, "bad class");
2248 
2249   oop r = JNIHandles::resolve(cls);
2250   assert(! java_lang_Class::is_primitive(r), "primitive classes not allowed");
2251   if (java_lang_Class::is_primitive(r)) return false;
2252 
2253   Klass* k = java_lang_Class::as_Klass(r);
2254   assert(k->is_instance_klass(), "must be an instance klass");
2255   if (!k->is_instance_klass()) return false;


< prev index next >