2560 jclass result_jnihandle = (jclass) jni_reference(result_handle);
2561 *classloader_ptr = result_jnihandle;
2562 }
2563 return JVMTI_ERROR_NONE;
2564 } /* end GetClassLoader */
2565
2566
2567 // k_mirror - may be primitive, this must be checked
2568 // source_debug_extension_ptr - pre-checked for NULL
2569 jvmtiError
2570 JvmtiEnv::GetSourceDebugExtension(oop k_mirror, char** source_debug_extension_ptr) {
2571 {
2572 if (java_lang_Class::is_primitive(k_mirror)) {
2573 return JVMTI_ERROR_ABSENT_INFORMATION;
2574 }
2575 Klass* k = java_lang_Class::as_Klass(k_mirror);
2576 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS);
2577 if (!k->is_instance_klass()) {
2578 return JVMTI_ERROR_ABSENT_INFORMATION;
2579 }
2580 char* sde = InstanceKlass::cast(k)->source_debug_extension();
2581 NULL_CHECK(sde, JVMTI_ERROR_ABSENT_INFORMATION);
2582
2583 {
2584 *source_debug_extension_ptr = (char *) jvmtiMalloc(strlen(sde)+1);
2585 strcpy(*source_debug_extension_ptr, sde);
2586 }
2587 }
2588
2589 return JVMTI_ERROR_NONE;
2590 } /* end GetSourceDebugExtension */
2591
2592 //
2593 // Object functions
2594 //
2595
2596 // hash_code_ptr - pre-checked for NULL
2597 jvmtiError
2598 JvmtiEnv::GetObjectHashCode(jobject object, jint* hash_code_ptr) {
2599 oop mirror = JNIHandles::resolve_external_guard(object);
2600 NULL_CHECK(mirror, JVMTI_ERROR_INVALID_OBJECT);
|
2560 jclass result_jnihandle = (jclass) jni_reference(result_handle);
2561 *classloader_ptr = result_jnihandle;
2562 }
2563 return JVMTI_ERROR_NONE;
2564 } /* end GetClassLoader */
2565
2566
2567 // k_mirror - may be primitive, this must be checked
2568 // source_debug_extension_ptr - pre-checked for NULL
2569 jvmtiError
2570 JvmtiEnv::GetSourceDebugExtension(oop k_mirror, char** source_debug_extension_ptr) {
2571 {
2572 if (java_lang_Class::is_primitive(k_mirror)) {
2573 return JVMTI_ERROR_ABSENT_INFORMATION;
2574 }
2575 Klass* k = java_lang_Class::as_Klass(k_mirror);
2576 NULL_CHECK(k, JVMTI_ERROR_INVALID_CLASS);
2577 if (!k->is_instance_klass()) {
2578 return JVMTI_ERROR_ABSENT_INFORMATION;
2579 }
2580 const char* sde = InstanceKlass::cast(k)->source_debug_extension();
2581 NULL_CHECK(sde, JVMTI_ERROR_ABSENT_INFORMATION);
2582
2583 {
2584 *source_debug_extension_ptr = (char *) jvmtiMalloc(strlen(sde)+1);
2585 strcpy(*source_debug_extension_ptr, sde);
2586 }
2587 }
2588
2589 return JVMTI_ERROR_NONE;
2590 } /* end GetSourceDebugExtension */
2591
2592 //
2593 // Object functions
2594 //
2595
2596 // hash_code_ptr - pre-checked for NULL
2597 jvmtiError
2598 JvmtiEnv::GetObjectHashCode(jobject object, jint* hash_code_ptr) {
2599 oop mirror = JNIHandles::resolve_external_guard(object);
2600 NULL_CHECK(mirror, JVMTI_ERROR_INVALID_OBJECT);
|