hotspot/src/share/vm/prims/jvmtiEnv.cpp
changeset 33611 9abd65805e19
parent 33589 7cbd1b2c139b
child 33638 ef49ed90010b
equal deleted inserted replaced
33602:16053580a684 33611:9abd65805e19
  2137     }
  2137     }
  2138     *signature_ptr = result;
  2138     *signature_ptr = result;
  2139   }
  2139   }
  2140   if (generic_ptr != NULL) {
  2140   if (generic_ptr != NULL) {
  2141     *generic_ptr = NULL;
  2141     *generic_ptr = NULL;
  2142     if (!isPrimitive && k->oop_is_instance()) {
  2142     if (!isPrimitive && k->is_instance_klass()) {
  2143       Symbol* soo = InstanceKlass::cast(k)->generic_signature();
  2143       Symbol* soo = InstanceKlass::cast(k)->generic_signature();
  2144       if (soo != NULL) {
  2144       if (soo != NULL) {
  2145         const char *gen_sig = soo->as_C_string();
  2145         const char *gen_sig = soo->as_C_string();
  2146         if (gen_sig != NULL) {
  2146         if (gen_sig != NULL) {
  2147           char* gen_result;
  2147           char* gen_result;
  2186      return JVMTI_ERROR_ABSENT_INFORMATION;
  2186      return JVMTI_ERROR_ABSENT_INFORMATION;
  2187   }
  2187   }
  2188   Klass* k_klass = java_lang_Class::as_Klass(k_mirror);
  2188   Klass* k_klass = java_lang_Class::as_Klass(k_mirror);
  2189   NULL_CHECK(k_klass, JVMTI_ERROR_INVALID_CLASS);
  2189   NULL_CHECK(k_klass, JVMTI_ERROR_INVALID_CLASS);
  2190 
  2190 
  2191   if (!k_klass->oop_is_instance()) {
  2191   if (!k_klass->is_instance_klass()) {
  2192     return JVMTI_ERROR_ABSENT_INFORMATION;
  2192     return JVMTI_ERROR_ABSENT_INFORMATION;
  2193   }
  2193   }
  2194 
  2194 
  2195   Symbol* sfnOop = InstanceKlass::cast(k_klass)->source_file_name();
  2195   Symbol* sfnOop = InstanceKlass::cast(k_klass)->source_file_name();
  2196   NULL_CHECK(sfnOop, JVMTI_ERROR_ABSENT_INFORMATION);
  2196   NULL_CHECK(sfnOop, JVMTI_ERROR_ABSENT_INFORMATION);
  2254   // Return CLASS_NOT_PREPARED error as per JVMTI spec.
  2254   // Return CLASS_NOT_PREPARED error as per JVMTI spec.
  2255   if (!(k->jvmti_class_status() & (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY) )) {
  2255   if (!(k->jvmti_class_status() & (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY) )) {
  2256     return JVMTI_ERROR_CLASS_NOT_PREPARED;
  2256     return JVMTI_ERROR_CLASS_NOT_PREPARED;
  2257   }
  2257   }
  2258 
  2258 
  2259   if (!k->oop_is_instance()) {
  2259   if (!k->is_instance_klass()) {
  2260     *method_count_ptr = 0;
  2260     *method_count_ptr = 0;
  2261     *methods_ptr = (jmethodID*) jvmtiMalloc(0 * sizeof(jmethodID));
  2261     *methods_ptr = (jmethodID*) jvmtiMalloc(0 * sizeof(jmethodID));
  2262     return JVMTI_ERROR_NONE;
  2262     return JVMTI_ERROR_NONE;
  2263   }
  2263   }
  2264   instanceKlassHandle instanceK_h(current_thread, k);
  2264   instanceKlassHandle instanceK_h(current_thread, k);
  2338   // Return CLASS_NOT_PREPARED error as per JVMTI spec.
  2338   // Return CLASS_NOT_PREPARED error as per JVMTI spec.
  2339   if (!(k->jvmti_class_status() & (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY) )) {
  2339   if (!(k->jvmti_class_status() & (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY) )) {
  2340     return JVMTI_ERROR_CLASS_NOT_PREPARED;
  2340     return JVMTI_ERROR_CLASS_NOT_PREPARED;
  2341   }
  2341   }
  2342 
  2342 
  2343   if (!k->oop_is_instance()) {
  2343   if (!k->is_instance_klass()) {
  2344     *field_count_ptr = 0;
  2344     *field_count_ptr = 0;
  2345     *fields_ptr = (jfieldID*) jvmtiMalloc(0 * sizeof(jfieldID));
  2345     *fields_ptr = (jfieldID*) jvmtiMalloc(0 * sizeof(jfieldID));
  2346     return JVMTI_ERROR_NONE;
  2346     return JVMTI_ERROR_NONE;
  2347   }
  2347   }
  2348 
  2348 
  2392 
  2392 
  2393     // Return CLASS_NOT_PREPARED error as per JVMTI spec.
  2393     // Return CLASS_NOT_PREPARED error as per JVMTI spec.
  2394     if (!(k->jvmti_class_status() & (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY) ))
  2394     if (!(k->jvmti_class_status() & (JVMTI_CLASS_STATUS_PREPARED|JVMTI_CLASS_STATUS_ARRAY) ))
  2395       return JVMTI_ERROR_CLASS_NOT_PREPARED;
  2395       return JVMTI_ERROR_CLASS_NOT_PREPARED;
  2396 
  2396 
  2397     if (!k->oop_is_instance()) {
  2397     if (!k->is_instance_klass()) {
  2398       *interface_count_ptr = 0;
  2398       *interface_count_ptr = 0;
  2399       *interfaces_ptr = (jclass*) jvmtiMalloc(0 * sizeof(jclass));
  2399       *interfaces_ptr = (jclass*) jvmtiMalloc(0 * sizeof(jclass));
  2400       return JVMTI_ERROR_NONE;
  2400       return JVMTI_ERROR_NONE;
  2401     }
  2401     }
  2402 
  2402 
  2526 JvmtiEnv::IsArrayClass(oop k_mirror, jboolean* is_array_class_ptr) {
  2526 JvmtiEnv::IsArrayClass(oop k_mirror, jboolean* is_array_class_ptr) {
  2527   {
  2527   {
  2528     bool result = false;
  2528     bool result = false;
  2529     if (!java_lang_Class::is_primitive(k_mirror)) {
  2529     if (!java_lang_Class::is_primitive(k_mirror)) {
  2530       Klass* k = java_lang_Class::as_Klass(k_mirror);
  2530       Klass* k = java_lang_Class::as_Klass(k_mirror);
  2531       if (k != NULL && k->oop_is_array()) {
  2531       if (k != NULL && k->is_array_klass()) {
  2532         result = true;
  2532         result = true;
  2533       }
  2533       }
  2534     }
  2534     }
  2535     *is_array_class_ptr = result;
  2535     *is_array_class_ptr = result;
  2536   }
  2536   }
  2574     if (java_lang_Class::is_primitive(k_mirror)) {
  2574     if (java_lang_Class::is_primitive(k_mirror)) {
  2575       return JVMTI_ERROR_ABSENT_INFORMATION;
  2575       return JVMTI_ERROR_ABSENT_INFORMATION;
  2576     }
  2576     }
  2577     Klass* k = java_lang_Class::as_Klass(k_mirror);
  2577     Klass* k = java_lang_Class::as_Klass(k_mirror);
  2578     NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS);
  2578     NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS);
  2579     if (!k->oop_is_instance()) {
  2579     if (!k->is_instance_klass()) {
  2580       return JVMTI_ERROR_ABSENT_INFORMATION;
  2580       return JVMTI_ERROR_ABSENT_INFORMATION;
  2581     }
  2581     }
  2582     char* sde = InstanceKlass::cast(k)->source_debug_extension();
  2582     char* sde = InstanceKlass::cast(k)->source_debug_extension();
  2583     NULL_CHECK(sde, JVMTI_ERROR_ABSENT_INFORMATION);
  2583     NULL_CHECK(sde, JVMTI_ERROR_ABSENT_INFORMATION);
  2584 
  2584