comparison src/share/vm/prims/jvmtiEnv.cpp @ 6983:070d523b96a7

8001471: Klass::cast() does nothing Summary: Remove function Klass::cast() and calls to it. Reviewed-by: dholmes, coleenp
author hseigel
date Mon, 12 Nov 2012 16:15:05 -0500
parents 18fb7da42534
children 2cb439954abf f34d701e952e
comparison
equal deleted inserted replaced
6981:8c413497f434 6983:070d523b96a7
2114 char tchar = type2char(java_lang_Class::primitive_type(k_mirror)); 2114 char tchar = type2char(java_lang_Class::primitive_type(k_mirror));
2115 result = (char*) jvmtiMalloc(2); 2115 result = (char*) jvmtiMalloc(2);
2116 result[0] = tchar; 2116 result[0] = tchar;
2117 result[1] = '\0'; 2117 result[1] = '\0';
2118 } else { 2118 } else {
2119 const char* class_sig = Klass::cast(k)->signature_name(); 2119 const char* class_sig = k->signature_name();
2120 result = (char *) jvmtiMalloc(strlen(class_sig)+1); 2120 result = (char *) jvmtiMalloc(strlen(class_sig)+1);
2121 strcpy(result, class_sig); 2121 strcpy(result, class_sig);
2122 } 2122 }
2123 *signature_ptr = result; 2123 *signature_ptr = result;
2124 } 2124 }
2125 if (generic_ptr != NULL) { 2125 if (generic_ptr != NULL) {
2126 *generic_ptr = NULL; 2126 *generic_ptr = NULL;
2127 if (!isPrimitive && Klass::cast(k)->oop_is_instance()) { 2127 if (!isPrimitive && k->oop_is_instance()) {
2128 Symbol* soo = InstanceKlass::cast(k)->generic_signature(); 2128 Symbol* soo = InstanceKlass::cast(k)->generic_signature();
2129 if (soo != NULL) { 2129 if (soo != NULL) {
2130 const char *gen_sig = soo->as_C_string(); 2130 const char *gen_sig = soo->as_C_string();
2131 if (gen_sig != NULL) { 2131 if (gen_sig != NULL) {
2132 char* gen_result; 2132 char* gen_result;
2153 if (java_lang_Class::is_primitive(k_mirror)) { 2153 if (java_lang_Class::is_primitive(k_mirror)) {
2154 result |= JVMTI_CLASS_STATUS_PRIMITIVE; 2154 result |= JVMTI_CLASS_STATUS_PRIMITIVE;
2155 } else { 2155 } else {
2156 Klass* k = java_lang_Class::as_Klass(k_mirror); 2156 Klass* k = java_lang_Class::as_Klass(k_mirror);
2157 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS); 2157 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS);
2158 result = Klass::cast(k)->jvmti_class_status(); 2158 result = k->jvmti_class_status();
2159 } 2159 }
2160 *status_ptr = result; 2160 *status_ptr = result;
2161 2161
2162 return JVMTI_ERROR_NONE; 2162 return JVMTI_ERROR_NONE;
2163 } /* end GetClassStatus */ 2163 } /* end GetClassStatus */
2171 return JVMTI_ERROR_ABSENT_INFORMATION; 2171 return JVMTI_ERROR_ABSENT_INFORMATION;
2172 } 2172 }
2173 Klass* k_klass = java_lang_Class::as_Klass(k_mirror); 2173 Klass* k_klass = java_lang_Class::as_Klass(k_mirror);
2174 NULL_CHECK(k_klass, JVMTI_ERROR_INVALID_CLASS); 2174 NULL_CHECK(k_klass, JVMTI_ERROR_INVALID_CLASS);
2175 2175
2176 if (!Klass::cast(k_klass)->oop_is_instance()) { 2176 if (!k_klass->oop_is_instance()) {
2177 return JVMTI_ERROR_ABSENT_INFORMATION; 2177 return JVMTI_ERROR_ABSENT_INFORMATION;
2178 } 2178 }
2179 2179
2180 Symbol* sfnOop = InstanceKlass::cast(k_klass)->source_file_name(); 2180 Symbol* sfnOop = InstanceKlass::cast(k_klass)->source_file_name();
2181 NULL_CHECK(sfnOop, JVMTI_ERROR_ABSENT_INFORMATION); 2181 NULL_CHECK(sfnOop, JVMTI_ERROR_ABSENT_INFORMATION);
2198 JavaThread* current_thread = JavaThread::current(); 2198 JavaThread* current_thread = JavaThread::current();
2199 jint result = 0; 2199 jint result = 0;
2200 if (!java_lang_Class::is_primitive(k_mirror)) { 2200 if (!java_lang_Class::is_primitive(k_mirror)) {
2201 Klass* k = java_lang_Class::as_Klass(k_mirror); 2201 Klass* k = java_lang_Class::as_Klass(k_mirror);
2202 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS); 2202 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS);
2203 result = Klass::cast(k)->compute_modifier_flags(current_thread); 2203 result = k->compute_modifier_flags(current_thread);
2204 JavaThread* THREAD = current_thread; // pass to macros 2204 JavaThread* THREAD = current_thread; // pass to macros
2205 if (HAS_PENDING_EXCEPTION) { 2205 if (HAS_PENDING_EXCEPTION) {
2206 CLEAR_PENDING_EXCEPTION; 2206 CLEAR_PENDING_EXCEPTION;
2207 return JVMTI_ERROR_INTERNAL; 2207 return JVMTI_ERROR_INTERNAL;
2208 }; 2208 };
2209 2209
2210 // Reset the deleted ACC_SUPER bit ( deleted in compute_modifier_flags()). 2210 // Reset the deleted ACC_SUPER bit ( deleted in compute_modifier_flags()).
2211 if(Klass::cast(k)->is_super()) { 2211 if(k->is_super()) {
2212 result |= JVM_ACC_SUPER; 2212 result |= JVM_ACC_SUPER;
2213 } 2213 }
2214 } else { 2214 } else {
2215 result = (JVM_ACC_ABSTRACT | JVM_ACC_FINAL | JVM_ACC_PUBLIC); 2215 result = (JVM_ACC_ABSTRACT | JVM_ACC_FINAL | JVM_ACC_PUBLIC);
2216 } 2216 }
2235 } 2235 }
2236 Klass* k = java_lang_Class::as_Klass(k_mirror); 2236 Klass* k = java_lang_Class::as_Klass(k_mirror);
2237 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS); 2237 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS);
2238 2238
2239 // Return CLASS_NOT_PREPARED error as per JVMTI spec. 2239 // Return CLASS_NOT_PREPARED error as per JVMTI spec.
2240 if (!(Klass::cast(k)->jvmti_class_status() & (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY) )) { 2240 if (!(k->jvmti_class_status() & (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY) )) {
2241 return JVMTI_ERROR_CLASS_NOT_PREPARED; 2241 return JVMTI_ERROR_CLASS_NOT_PREPARED;
2242 } 2242 }
2243 2243
2244 if (!Klass::cast(k)->oop_is_instance()) { 2244 if (!k->oop_is_instance()) {
2245 *method_count_ptr = 0; 2245 *method_count_ptr = 0;
2246 *methods_ptr = (jmethodID*) jvmtiMalloc(0 * sizeof(jmethodID)); 2246 *methods_ptr = (jmethodID*) jvmtiMalloc(0 * sizeof(jmethodID));
2247 return JVMTI_ERROR_NONE; 2247 return JVMTI_ERROR_NONE;
2248 } 2248 }
2249 instanceKlassHandle instanceK_h(current_thread, k); 2249 instanceKlassHandle instanceK_h(current_thread, k);
2291 HandleMark hm(current_thread); 2291 HandleMark hm(current_thread);
2292 Klass* k = java_lang_Class::as_Klass(k_mirror); 2292 Klass* k = java_lang_Class::as_Klass(k_mirror);
2293 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS); 2293 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS);
2294 2294
2295 // Return CLASS_NOT_PREPARED error as per JVMTI spec. 2295 // Return CLASS_NOT_PREPARED error as per JVMTI spec.
2296 if (!(Klass::cast(k)->jvmti_class_status() & (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY) )) { 2296 if (!(k->jvmti_class_status() & (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY) )) {
2297 return JVMTI_ERROR_CLASS_NOT_PREPARED; 2297 return JVMTI_ERROR_CLASS_NOT_PREPARED;
2298 } 2298 }
2299 2299
2300 if (!Klass::cast(k)->oop_is_instance()) { 2300 if (!k->oop_is_instance()) {
2301 *field_count_ptr = 0; 2301 *field_count_ptr = 0;
2302 *fields_ptr = (jfieldID*) jvmtiMalloc(0 * sizeof(jfieldID)); 2302 *fields_ptr = (jfieldID*) jvmtiMalloc(0 * sizeof(jfieldID));
2303 return JVMTI_ERROR_NONE; 2303 return JVMTI_ERROR_NONE;
2304 } 2304 }
2305 2305
2346 HandleMark hm(current_thread); 2346 HandleMark hm(current_thread);
2347 Klass* k = java_lang_Class::as_Klass(k_mirror); 2347 Klass* k = java_lang_Class::as_Klass(k_mirror);
2348 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS); 2348 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS);
2349 2349
2350 // Return CLASS_NOT_PREPARED error as per JVMTI spec. 2350 // Return CLASS_NOT_PREPARED error as per JVMTI spec.
2351 if (!(Klass::cast(k)->jvmti_class_status() & (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY) )) 2351 if (!(k->jvmti_class_status() & (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY) ))
2352 return JVMTI_ERROR_CLASS_NOT_PREPARED; 2352 return JVMTI_ERROR_CLASS_NOT_PREPARED;
2353 2353
2354 if (!Klass::cast(k)->oop_is_instance()) { 2354 if (!k->oop_is_instance()) {
2355 *interface_count_ptr = 0; 2355 *interface_count_ptr = 0;
2356 *interfaces_ptr = (jclass*) jvmtiMalloc(0 * sizeof(jclass)); 2356 *interfaces_ptr = (jclass*) jvmtiMalloc(0 * sizeof(jclass));
2357 return JVMTI_ERROR_NONE; 2357 return JVMTI_ERROR_NONE;
2358 } 2358 }
2359 2359
2361 const int result_length = (interface_list == NULL ? 0 : interface_list->length()); 2361 const int result_length = (interface_list == NULL ? 0 : interface_list->length());
2362 jclass* result_list = (jclass*) jvmtiMalloc(result_length * sizeof(jclass)); 2362 jclass* result_list = (jclass*) jvmtiMalloc(result_length * sizeof(jclass));
2363 for (int i_index = 0; i_index < result_length; i_index += 1) { 2363 for (int i_index = 0; i_index < result_length; i_index += 1) {
2364 Klass* klass_at = interface_list->at(i_index); 2364 Klass* klass_at = interface_list->at(i_index);
2365 assert(klass_at->is_klass(), "interfaces must be Klass*s"); 2365 assert(klass_at->is_klass(), "interfaces must be Klass*s");
2366 assert(Klass::cast(klass_at)->is_interface(), "interfaces must be interfaces"); 2366 assert(klass_at->is_interface(), "interfaces must be interfaces");
2367 oop mirror_at = Klass::cast(klass_at)->java_mirror(); 2367 oop mirror_at = klass_at->java_mirror();
2368 Handle handle_at = Handle(current_thread, mirror_at); 2368 Handle handle_at = Handle(current_thread, mirror_at);
2369 result_list[i_index] = (jclass) jni_reference(handle_at); 2369 result_list[i_index] = (jclass) jni_reference(handle_at);
2370 } 2370 }
2371 *interface_count_ptr = result_length; 2371 *interface_count_ptr = result_length;
2372 *interfaces_ptr = result_list; 2372 *interfaces_ptr = result_list;
2466 JvmtiEnv::IsInterface(oop k_mirror, jboolean* is_interface_ptr) { 2466 JvmtiEnv::IsInterface(oop k_mirror, jboolean* is_interface_ptr) {
2467 { 2467 {
2468 bool result = false; 2468 bool result = false;
2469 if (!java_lang_Class::is_primitive(k_mirror)) { 2469 if (!java_lang_Class::is_primitive(k_mirror)) {
2470 Klass* k = java_lang_Class::as_Klass(k_mirror); 2470 Klass* k = java_lang_Class::as_Klass(k_mirror);
2471 if (k != NULL && Klass::cast(k)->is_interface()) { 2471 if (k != NULL && k->is_interface()) {
2472 result = true; 2472 result = true;
2473 } 2473 }
2474 } 2474 }
2475 *is_interface_ptr = result; 2475 *is_interface_ptr = result;
2476 } 2476 }
2485 JvmtiEnv::IsArrayClass(oop k_mirror, jboolean* is_array_class_ptr) { 2485 JvmtiEnv::IsArrayClass(oop k_mirror, jboolean* is_array_class_ptr) {
2486 { 2486 {
2487 bool result = false; 2487 bool result = false;
2488 if (!java_lang_Class::is_primitive(k_mirror)) { 2488 if (!java_lang_Class::is_primitive(k_mirror)) {
2489 Klass* k = java_lang_Class::as_Klass(k_mirror); 2489 Klass* k = java_lang_Class::as_Klass(k_mirror);
2490 if (k != NULL && Klass::cast(k)->oop_is_array()) { 2490 if (k != NULL && k->oop_is_array()) {
2491 result = true; 2491 result = true;
2492 } 2492 }
2493 } 2493 }
2494 *is_array_class_ptr = result; 2494 *is_array_class_ptr = result;
2495 } 2495 }
2510 JavaThread* current_thread = JavaThread::current(); 2510 JavaThread* current_thread = JavaThread::current();
2511 HandleMark hm(current_thread); 2511 HandleMark hm(current_thread);
2512 Klass* k = java_lang_Class::as_Klass(k_mirror); 2512 Klass* k = java_lang_Class::as_Klass(k_mirror);
2513 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS); 2513 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS);
2514 2514
2515 oop result_oop = Klass::cast(k)->class_loader(); 2515 oop result_oop = k->class_loader();
2516 if (result_oop == NULL) { 2516 if (result_oop == NULL) {
2517 *classloader_ptr = (jclass) jni_reference(Handle()); 2517 *classloader_ptr = (jclass) jni_reference(Handle());
2518 return JVMTI_ERROR_NONE; 2518 return JVMTI_ERROR_NONE;
2519 } 2519 }
2520 Handle result_handle = Handle(current_thread, result_oop); 2520 Handle result_handle = Handle(current_thread, result_oop);
2533 if (java_lang_Class::is_primitive(k_mirror)) { 2533 if (java_lang_Class::is_primitive(k_mirror)) {
2534 return JVMTI_ERROR_ABSENT_INFORMATION; 2534 return JVMTI_ERROR_ABSENT_INFORMATION;
2535 } 2535 }
2536 Klass* k = java_lang_Class::as_Klass(k_mirror); 2536 Klass* k = java_lang_Class::as_Klass(k_mirror);
2537 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS); 2537 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS);
2538 if (!Klass::cast(k)->oop_is_instance()) { 2538 if (!k->oop_is_instance()) {
2539 return JVMTI_ERROR_ABSENT_INFORMATION; 2539 return JVMTI_ERROR_ABSENT_INFORMATION;
2540 } 2540 }
2541 char* sde = InstanceKlass::cast(k)->source_debug_extension(); 2541 char* sde = InstanceKlass::cast(k)->source_debug_extension();
2542 NULL_CHECK(sde, JVMTI_ERROR_ABSENT_INFORMATION); 2542 NULL_CHECK(sde, JVMTI_ERROR_ABSENT_INFORMATION);
2543 2543