hotspot/src/share/vm/prims/jvm.cpp
changeset 37479 14a195eaf2c5
parent 37466 287c4ebd11b0
parent 37301 a936b4e01afb
child 38118 16e2f219e1b6
child 37870 ed05be00b50d
equal deleted inserted replaced
37478:ef779fb991cf 37479:14a195eaf2c5
  1938   // Return null for primitives and arrays
  1938   // Return null for primitives and arrays
  1939   if (!java_lang_Class::is_primitive(JNIHandles::resolve_non_null(cls))) {
  1939   if (!java_lang_Class::is_primitive(JNIHandles::resolve_non_null(cls))) {
  1940     Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
  1940     Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(cls));
  1941     if (k->is_instance_klass()) {
  1941     if (k->is_instance_klass()) {
  1942       instanceKlassHandle k_h(THREAD, k);
  1942       instanceKlassHandle k_h(THREAD, k);
  1943       Handle jcp = sun_reflect_ConstantPool::create(CHECK_NULL);
  1943       Handle jcp = reflect_ConstantPool::create(CHECK_NULL);
  1944       sun_reflect_ConstantPool::set_cp(jcp(), k_h->constants());
  1944       reflect_ConstantPool::set_cp(jcp(), k_h->constants());
  1945       return JNIHandles::make_local(jcp());
  1945       return JNIHandles::make_local(jcp());
  1946     }
  1946     }
  1947   }
  1947   }
  1948   return NULL;
  1948   return NULL;
  1949 }
  1949 }
  1951 
  1951 
  1952 
  1952 
  1953 JVM_ENTRY(jint, JVM_ConstantPoolGetSize(JNIEnv *env, jobject obj, jobject unused))
  1953 JVM_ENTRY(jint, JVM_ConstantPoolGetSize(JNIEnv *env, jobject obj, jobject unused))
  1954 {
  1954 {
  1955   JVMWrapper("JVM_ConstantPoolGetSize");
  1955   JVMWrapper("JVM_ConstantPoolGetSize");
  1956   constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  1956   constantPoolHandle cp = constantPoolHandle(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  1957   return cp->length();
  1957   return cp->length();
  1958 }
  1958 }
  1959 JVM_END
  1959 JVM_END
  1960 
  1960 
  1961 
  1961 
  1962 JVM_ENTRY(jclass, JVM_ConstantPoolGetClassAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  1962 JVM_ENTRY(jclass, JVM_ConstantPoolGetClassAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  1963 {
  1963 {
  1964   JVMWrapper("JVM_ConstantPoolGetClassAt");
  1964   JVMWrapper("JVM_ConstantPoolGetClassAt");
  1965   constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  1965   constantPoolHandle cp = constantPoolHandle(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  1966   bounds_check(cp, index, CHECK_NULL);
  1966   bounds_check(cp, index, CHECK_NULL);
  1967   constantTag tag = cp->tag_at(index);
  1967   constantTag tag = cp->tag_at(index);
  1968   if (!tag.is_klass() && !tag.is_unresolved_klass()) {
  1968   if (!tag.is_klass() && !tag.is_unresolved_klass()) {
  1969     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  1969     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  1970   }
  1970   }
  1974 JVM_END
  1974 JVM_END
  1975 
  1975 
  1976 JVM_ENTRY(jclass, JVM_ConstantPoolGetClassAtIfLoaded(JNIEnv *env, jobject obj, jobject unused, jint index))
  1976 JVM_ENTRY(jclass, JVM_ConstantPoolGetClassAtIfLoaded(JNIEnv *env, jobject obj, jobject unused, jint index))
  1977 {
  1977 {
  1978   JVMWrapper("JVM_ConstantPoolGetClassAtIfLoaded");
  1978   JVMWrapper("JVM_ConstantPoolGetClassAtIfLoaded");
  1979   constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  1979   constantPoolHandle cp = constantPoolHandle(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  1980   bounds_check(cp, index, CHECK_NULL);
  1980   bounds_check(cp, index, CHECK_NULL);
  1981   constantTag tag = cp->tag_at(index);
  1981   constantTag tag = cp->tag_at(index);
  1982   if (!tag.is_klass() && !tag.is_unresolved_klass()) {
  1982   if (!tag.is_klass() && !tag.is_unresolved_klass()) {
  1983     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  1983     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  1984   }
  1984   }
  2019 
  2019 
  2020 JVM_ENTRY(jobject, JVM_ConstantPoolGetMethodAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2020 JVM_ENTRY(jobject, JVM_ConstantPoolGetMethodAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2021 {
  2021 {
  2022   JVMWrapper("JVM_ConstantPoolGetMethodAt");
  2022   JVMWrapper("JVM_ConstantPoolGetMethodAt");
  2023   JvmtiVMObjectAllocEventCollector oam;
  2023   JvmtiVMObjectAllocEventCollector oam;
  2024   constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2024   constantPoolHandle cp = constantPoolHandle(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2025   bounds_check(cp, index, CHECK_NULL);
  2025   bounds_check(cp, index, CHECK_NULL);
  2026   jobject res = get_method_at_helper(cp, index, true, CHECK_NULL);
  2026   jobject res = get_method_at_helper(cp, index, true, CHECK_NULL);
  2027   return res;
  2027   return res;
  2028 }
  2028 }
  2029 JVM_END
  2029 JVM_END
  2030 
  2030 
  2031 JVM_ENTRY(jobject, JVM_ConstantPoolGetMethodAtIfLoaded(JNIEnv *env, jobject obj, jobject unused, jint index))
  2031 JVM_ENTRY(jobject, JVM_ConstantPoolGetMethodAtIfLoaded(JNIEnv *env, jobject obj, jobject unused, jint index))
  2032 {
  2032 {
  2033   JVMWrapper("JVM_ConstantPoolGetMethodAtIfLoaded");
  2033   JVMWrapper("JVM_ConstantPoolGetMethodAtIfLoaded");
  2034   JvmtiVMObjectAllocEventCollector oam;
  2034   JvmtiVMObjectAllocEventCollector oam;
  2035   constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2035   constantPoolHandle cp = constantPoolHandle(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2036   bounds_check(cp, index, CHECK_NULL);
  2036   bounds_check(cp, index, CHECK_NULL);
  2037   jobject res = get_method_at_helper(cp, index, false, CHECK_NULL);
  2037   jobject res = get_method_at_helper(cp, index, false, CHECK_NULL);
  2038   return res;
  2038   return res;
  2039 }
  2039 }
  2040 JVM_END
  2040 JVM_END
  2066 
  2066 
  2067 JVM_ENTRY(jobject, JVM_ConstantPoolGetFieldAt(JNIEnv *env, jobject obj, jobject unusedl, jint index))
  2067 JVM_ENTRY(jobject, JVM_ConstantPoolGetFieldAt(JNIEnv *env, jobject obj, jobject unusedl, jint index))
  2068 {
  2068 {
  2069   JVMWrapper("JVM_ConstantPoolGetFieldAt");
  2069   JVMWrapper("JVM_ConstantPoolGetFieldAt");
  2070   JvmtiVMObjectAllocEventCollector oam;
  2070   JvmtiVMObjectAllocEventCollector oam;
  2071   constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2071   constantPoolHandle cp = constantPoolHandle(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2072   bounds_check(cp, index, CHECK_NULL);
  2072   bounds_check(cp, index, CHECK_NULL);
  2073   jobject res = get_field_at_helper(cp, index, true, CHECK_NULL);
  2073   jobject res = get_field_at_helper(cp, index, true, CHECK_NULL);
  2074   return res;
  2074   return res;
  2075 }
  2075 }
  2076 JVM_END
  2076 JVM_END
  2077 
  2077 
  2078 JVM_ENTRY(jobject, JVM_ConstantPoolGetFieldAtIfLoaded(JNIEnv *env, jobject obj, jobject unused, jint index))
  2078 JVM_ENTRY(jobject, JVM_ConstantPoolGetFieldAtIfLoaded(JNIEnv *env, jobject obj, jobject unused, jint index))
  2079 {
  2079 {
  2080   JVMWrapper("JVM_ConstantPoolGetFieldAtIfLoaded");
  2080   JVMWrapper("JVM_ConstantPoolGetFieldAtIfLoaded");
  2081   JvmtiVMObjectAllocEventCollector oam;
  2081   JvmtiVMObjectAllocEventCollector oam;
  2082   constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2082   constantPoolHandle cp = constantPoolHandle(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2083   bounds_check(cp, index, CHECK_NULL);
  2083   bounds_check(cp, index, CHECK_NULL);
  2084   jobject res = get_field_at_helper(cp, index, false, CHECK_NULL);
  2084   jobject res = get_field_at_helper(cp, index, false, CHECK_NULL);
  2085   return res;
  2085   return res;
  2086 }
  2086 }
  2087 JVM_END
  2087 JVM_END
  2088 
  2088 
  2089 JVM_ENTRY(jobjectArray, JVM_ConstantPoolGetMemberRefInfoAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2089 JVM_ENTRY(jobjectArray, JVM_ConstantPoolGetMemberRefInfoAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2090 {
  2090 {
  2091   JVMWrapper("JVM_ConstantPoolGetMemberRefInfoAt");
  2091   JVMWrapper("JVM_ConstantPoolGetMemberRefInfoAt");
  2092   JvmtiVMObjectAllocEventCollector oam;
  2092   JvmtiVMObjectAllocEventCollector oam;
  2093   constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2093   constantPoolHandle cp = constantPoolHandle(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2094   bounds_check(cp, index, CHECK_NULL);
  2094   bounds_check(cp, index, CHECK_NULL);
  2095   constantTag tag = cp->tag_at(index);
  2095   constantTag tag = cp->tag_at(index);
  2096   if (!tag.is_field_or_method()) {
  2096   if (!tag.is_field_or_method()) {
  2097     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2097     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2098   }
  2098   }
  2114 
  2114 
  2115 JVM_ENTRY(jint, JVM_ConstantPoolGetClassRefIndexAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2115 JVM_ENTRY(jint, JVM_ConstantPoolGetClassRefIndexAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2116 {
  2116 {
  2117   JVMWrapper("JVM_ConstantPoolGetClassRefIndexAt");
  2117   JVMWrapper("JVM_ConstantPoolGetClassRefIndexAt");
  2118   JvmtiVMObjectAllocEventCollector oam;
  2118   JvmtiVMObjectAllocEventCollector oam;
  2119   constantPoolHandle cp(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2119   constantPoolHandle cp(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2120   bounds_check(cp, index, CHECK_0);
  2120   bounds_check(cp, index, CHECK_0);
  2121   constantTag tag = cp->tag_at(index);
  2121   constantTag tag = cp->tag_at(index);
  2122   if (!tag.is_field_or_method()) {
  2122   if (!tag.is_field_or_method()) {
  2123     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2123     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2124   }
  2124   }
  2128 
  2128 
  2129 JVM_ENTRY(jint, JVM_ConstantPoolGetNameAndTypeRefIndexAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2129 JVM_ENTRY(jint, JVM_ConstantPoolGetNameAndTypeRefIndexAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2130 {
  2130 {
  2131   JVMWrapper("JVM_ConstantPoolGetNameAndTypeRefIndexAt");
  2131   JVMWrapper("JVM_ConstantPoolGetNameAndTypeRefIndexAt");
  2132   JvmtiVMObjectAllocEventCollector oam;
  2132   JvmtiVMObjectAllocEventCollector oam;
  2133   constantPoolHandle cp(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2133   constantPoolHandle cp(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2134   bounds_check(cp, index, CHECK_0);
  2134   bounds_check(cp, index, CHECK_0);
  2135   constantTag tag = cp->tag_at(index);
  2135   constantTag tag = cp->tag_at(index);
  2136   if (!tag.is_invoke_dynamic() && !tag.is_field_or_method()) {
  2136   if (!tag.is_invoke_dynamic() && !tag.is_field_or_method()) {
  2137     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2137     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2138   }
  2138   }
  2142 
  2142 
  2143 JVM_ENTRY(jobjectArray, JVM_ConstantPoolGetNameAndTypeRefInfoAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2143 JVM_ENTRY(jobjectArray, JVM_ConstantPoolGetNameAndTypeRefInfoAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2144 {
  2144 {
  2145   JVMWrapper("JVM_ConstantPoolGetNameAndTypeRefInfoAt");
  2145   JVMWrapper("JVM_ConstantPoolGetNameAndTypeRefInfoAt");
  2146   JvmtiVMObjectAllocEventCollector oam;
  2146   JvmtiVMObjectAllocEventCollector oam;
  2147   constantPoolHandle cp(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2147   constantPoolHandle cp(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2148   bounds_check(cp, index, CHECK_NULL);
  2148   bounds_check(cp, index, CHECK_NULL);
  2149   constantTag tag = cp->tag_at(index);
  2149   constantTag tag = cp->tag_at(index);
  2150   if (!tag.is_name_and_type()) {
  2150   if (!tag.is_name_and_type()) {
  2151     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2151     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2152   }
  2152   }
  2163 JVM_END
  2163 JVM_END
  2164 
  2164 
  2165 JVM_ENTRY(jint, JVM_ConstantPoolGetIntAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2165 JVM_ENTRY(jint, JVM_ConstantPoolGetIntAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2166 {
  2166 {
  2167   JVMWrapper("JVM_ConstantPoolGetIntAt");
  2167   JVMWrapper("JVM_ConstantPoolGetIntAt");
  2168   constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2168   constantPoolHandle cp = constantPoolHandle(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2169   bounds_check(cp, index, CHECK_0);
  2169   bounds_check(cp, index, CHECK_0);
  2170   constantTag tag = cp->tag_at(index);
  2170   constantTag tag = cp->tag_at(index);
  2171   if (!tag.is_int()) {
  2171   if (!tag.is_int()) {
  2172     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2172     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2173   }
  2173   }
  2176 JVM_END
  2176 JVM_END
  2177 
  2177 
  2178 JVM_ENTRY(jlong, JVM_ConstantPoolGetLongAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2178 JVM_ENTRY(jlong, JVM_ConstantPoolGetLongAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2179 {
  2179 {
  2180   JVMWrapper("JVM_ConstantPoolGetLongAt");
  2180   JVMWrapper("JVM_ConstantPoolGetLongAt");
  2181   constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2181   constantPoolHandle cp = constantPoolHandle(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2182   bounds_check(cp, index, CHECK_(0L));
  2182   bounds_check(cp, index, CHECK_(0L));
  2183   constantTag tag = cp->tag_at(index);
  2183   constantTag tag = cp->tag_at(index);
  2184   if (!tag.is_long()) {
  2184   if (!tag.is_long()) {
  2185     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2185     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2186   }
  2186   }
  2189 JVM_END
  2189 JVM_END
  2190 
  2190 
  2191 JVM_ENTRY(jfloat, JVM_ConstantPoolGetFloatAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2191 JVM_ENTRY(jfloat, JVM_ConstantPoolGetFloatAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2192 {
  2192 {
  2193   JVMWrapper("JVM_ConstantPoolGetFloatAt");
  2193   JVMWrapper("JVM_ConstantPoolGetFloatAt");
  2194   constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2194   constantPoolHandle cp = constantPoolHandle(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2195   bounds_check(cp, index, CHECK_(0.0f));
  2195   bounds_check(cp, index, CHECK_(0.0f));
  2196   constantTag tag = cp->tag_at(index);
  2196   constantTag tag = cp->tag_at(index);
  2197   if (!tag.is_float()) {
  2197   if (!tag.is_float()) {
  2198     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2198     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2199   }
  2199   }
  2202 JVM_END
  2202 JVM_END
  2203 
  2203 
  2204 JVM_ENTRY(jdouble, JVM_ConstantPoolGetDoubleAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2204 JVM_ENTRY(jdouble, JVM_ConstantPoolGetDoubleAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2205 {
  2205 {
  2206   JVMWrapper("JVM_ConstantPoolGetDoubleAt");
  2206   JVMWrapper("JVM_ConstantPoolGetDoubleAt");
  2207   constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2207   constantPoolHandle cp = constantPoolHandle(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2208   bounds_check(cp, index, CHECK_(0.0));
  2208   bounds_check(cp, index, CHECK_(0.0));
  2209   constantTag tag = cp->tag_at(index);
  2209   constantTag tag = cp->tag_at(index);
  2210   if (!tag.is_double()) {
  2210   if (!tag.is_double()) {
  2211     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2211     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2212   }
  2212   }
  2215 JVM_END
  2215 JVM_END
  2216 
  2216 
  2217 JVM_ENTRY(jstring, JVM_ConstantPoolGetStringAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2217 JVM_ENTRY(jstring, JVM_ConstantPoolGetStringAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2218 {
  2218 {
  2219   JVMWrapper("JVM_ConstantPoolGetStringAt");
  2219   JVMWrapper("JVM_ConstantPoolGetStringAt");
  2220   constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2220   constantPoolHandle cp = constantPoolHandle(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2221   bounds_check(cp, index, CHECK_NULL);
  2221   bounds_check(cp, index, CHECK_NULL);
  2222   constantTag tag = cp->tag_at(index);
  2222   constantTag tag = cp->tag_at(index);
  2223   if (!tag.is_string()) {
  2223   if (!tag.is_string()) {
  2224     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2224     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2225   }
  2225   }
  2230 
  2230 
  2231 JVM_ENTRY(jstring, JVM_ConstantPoolGetUTF8At(JNIEnv *env, jobject obj, jobject unused, jint index))
  2231 JVM_ENTRY(jstring, JVM_ConstantPoolGetUTF8At(JNIEnv *env, jobject obj, jobject unused, jint index))
  2232 {
  2232 {
  2233   JVMWrapper("JVM_ConstantPoolGetUTF8At");
  2233   JVMWrapper("JVM_ConstantPoolGetUTF8At");
  2234   JvmtiVMObjectAllocEventCollector oam;
  2234   JvmtiVMObjectAllocEventCollector oam;
  2235   constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2235   constantPoolHandle cp = constantPoolHandle(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2236   bounds_check(cp, index, CHECK_NULL);
  2236   bounds_check(cp, index, CHECK_NULL);
  2237   constantTag tag = cp->tag_at(index);
  2237   constantTag tag = cp->tag_at(index);
  2238   if (!tag.is_symbol()) {
  2238   if (!tag.is_symbol()) {
  2239     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2239     THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(), "Wrong type at constant pool index");
  2240   }
  2240   }
  2245 JVM_END
  2245 JVM_END
  2246 
  2246 
  2247 JVM_ENTRY(jbyte, JVM_ConstantPoolGetTagAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2247 JVM_ENTRY(jbyte, JVM_ConstantPoolGetTagAt(JNIEnv *env, jobject obj, jobject unused, jint index))
  2248 {
  2248 {
  2249   JVMWrapper("JVM_ConstantPoolGetTagAt");
  2249   JVMWrapper("JVM_ConstantPoolGetTagAt");
  2250   constantPoolHandle cp = constantPoolHandle(THREAD, sun_reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2250   constantPoolHandle cp = constantPoolHandle(THREAD, reflect_ConstantPool::get_cp(JNIHandles::resolve_non_null(obj)));
  2251   bounds_check(cp, index, CHECK_0);
  2251   bounds_check(cp, index, CHECK_0);
  2252   constantTag tag = cp->tag_at(index);
  2252   constantTag tag = cp->tag_at(index);
  2253   jbyte result = tag.value();
  2253   jbyte result = tag.value();
  2254   // If returned tag values are not from the JVM spec, e.g. tags from 100 to 105,
  2254   // If returned tag values are not from the JVM spec, e.g. tags from 100 to 105,
  2255   // they are changed to the corresponding tags from the JVM spec, so that java code in
  2255   // they are changed to the corresponding tags from the JVM spec, so that java code in