8257988: Remove JNF dependency from libsaproc/MacosxDebuggerLocal.m
Reviewed-by: ihse, cjplummer
This commit is contained in:
parent
f025bc1d5d
commit
2be60e37e0
@ -69,7 +69,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBSA, \
|
||||
LIBS := $(LIBCXX), \
|
||||
LIBS_unix := -ljava, \
|
||||
LIBS_linux := $(LIBDL), \
|
||||
LIBS_macosx := -framework Foundation -framework JavaNativeFoundation \
|
||||
LIBS_macosx := -framework Foundation \
|
||||
-framework JavaRuntimeSupport -framework Security -framework CoreFoundation, \
|
||||
LIBS_windows := dbgeng.lib $(WIN_JAVA_LIB), \
|
||||
))
|
||||
|
@ -24,8 +24,6 @@
|
||||
|
||||
#include <objc/objc-runtime.h>
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <JavaNativeFoundation/JavaNativeFoundation.h>
|
||||
#import <JavaRuntimeSupport/JavaRuntimeSupport.h>
|
||||
|
||||
#include <jni.h>
|
||||
|
||||
@ -260,6 +258,39 @@ jlong lookupByNameIncore(
|
||||
return addr;
|
||||
}
|
||||
|
||||
/* Create a pool and initiate a try block to catch any exception */
|
||||
#define JNI_COCOA_ENTER(env) \
|
||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; \
|
||||
@try {
|
||||
|
||||
/* Don't allow NSExceptions to escape to Java.
|
||||
* If there is a Java exception that has been thrown that should escape.
|
||||
* And ensure we drain the auto-release pool.
|
||||
*/
|
||||
#define JNI_COCOA_EXIT(env) \
|
||||
} \
|
||||
@catch (NSException *e) { \
|
||||
NSLog(@"%@", [e callStackSymbols]); \
|
||||
} \
|
||||
@finally { \
|
||||
[pool drain]; \
|
||||
};
|
||||
|
||||
static NSString* JavaStringToNSString(JNIEnv *env, jstring jstr) {
|
||||
|
||||
if (jstr == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
jsize len = (*env)->GetStringLength(env, jstr);
|
||||
const jchar *chars = (*env)->GetStringChars(env, jstr, NULL);
|
||||
if (chars == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
NSString *result = [NSString stringWithCharacters:(UniChar *)chars length:len];
|
||||
(*env)->ReleaseStringChars(env, jstr, chars);
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal
|
||||
* Method: lookupByName0
|
||||
@ -277,8 +308,9 @@ Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_lookupByName0(
|
||||
|
||||
jlong address = 0;
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
NSString *symbolNameString = JNFJavaToNSString(env, symbolName);
|
||||
JNI_COCOA_ENTER(env);
|
||||
|
||||
NSString *symbolNameString = JavaStringToNSString(env, symbolName);
|
||||
|
||||
print_debug("lookupInProcess called for %s\n", [symbolNameString UTF8String]);
|
||||
|
||||
@ -289,7 +321,7 @@ JNF_COCOA_ENTER(env);
|
||||
}
|
||||
|
||||
print_debug("address of symbol %s = %llx\n", [symbolNameString UTF8String], address);
|
||||
JNF_COCOA_EXIT(env);
|
||||
JNI_COCOA_EXIT(env);
|
||||
|
||||
return address;
|
||||
}
|
||||
@ -812,7 +844,7 @@ Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_attach0__I(
|
||||
{
|
||||
print_debug("attach0 called for jpid=%d\n", (int)jpid);
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
JNI_COCOA_ENTER(env);
|
||||
|
||||
kern_return_t result;
|
||||
task_t gTask = 0;
|
||||
@ -926,7 +958,7 @@ JNF_COCOA_ENTER(env);
|
||||
THROW_NEW_DEBUGGER_EXCEPTION("Can't attach symbolicator to the process");
|
||||
}
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
JNI_COCOA_EXIT(env);
|
||||
}
|
||||
|
||||
/** For core file,
|
||||
@ -1020,7 +1052,8 @@ Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_detach0(
|
||||
Prelease(ph);
|
||||
return;
|
||||
}
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
JNI_COCOA_ENTER(env);
|
||||
|
||||
task_t gTask = getTask(env, this_obj);
|
||||
kern_return_t k_res = 0;
|
||||
@ -1071,5 +1104,5 @@ JNF_COCOA_ENTER(env);
|
||||
|
||||
detach_cleanup(gTask, env, this_obj, false);
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
JNI_COCOA_EXIT(env);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user