clean up native init
This commit is contained in:
parent
b3fbbe0edb
commit
b504165e64
|
@ -2,8 +2,35 @@
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
void die(JNIEnv *java_env) {
|
||||
jclass Object =
|
||||
java_env->FindClass("java/lang/Object");
|
||||
|
||||
jclass NativeTranslatorTest =
|
||||
java_env->FindClass("com/ibm/wala/cast/test/TestNativeTranslator");
|
||||
|
||||
jmethodID testInit =
|
||||
java_env->GetMethodID(NativeTranslatorTest, "<init>", "()V");
|
||||
|
||||
jmethodID toString =
|
||||
java_env->GetMethodID(Object, "toString", "()Ljava/lang/String;");
|
||||
|
||||
jthrowable real_ex = java_env->ExceptionOccurred();
|
||||
|
||||
jstring msg = (jstring) java_env->CallObjectMethod(real_ex, toString);
|
||||
|
||||
jboolean f = true;
|
||||
const char *text = java_env->GetStringUTFChars(msg, &f);
|
||||
|
||||
printf("exception: %s\n", text);
|
||||
|
||||
java_env->ReleaseStringUTFChars(msg, text);
|
||||
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
char buf[ strlen(argv[1]) + 1 ];
|
||||
char *buf = (char *)malloc((strlen(argv[1]) + 100) * sizeof(char));
|
||||
strcpy(buf, argv[1]);
|
||||
|
||||
printf("%s\n", buf);
|
||||
|
@ -12,40 +39,22 @@ int main(int argc, char **argv) {
|
|||
|
||||
jclass NativeTranslatorTest =
|
||||
java_env->FindClass("com/ibm/wala/cast/test/TestNativeTranslator");
|
||||
if (java_env->ExceptionCheck()) { die(java_env); }
|
||||
|
||||
jmethodID testInit =
|
||||
java_env->GetMethodID(NativeTranslatorTest, "<init>", "()V");
|
||||
if (java_env->ExceptionCheck()) { die(java_env); }
|
||||
|
||||
jobject test =
|
||||
java_env->NewObject(NativeTranslatorTest, testInit);
|
||||
if (java_env->ExceptionCheck()) { die(java_env); }
|
||||
|
||||
jmethodID testAst =
|
||||
java_env->GetMethodID(NativeTranslatorTest, "testNativeCAst", "()V");
|
||||
if (java_env->ExceptionCheck()) { die(java_env); }
|
||||
|
||||
java_env->CallVoidMethod(test, testAst);
|
||||
if (java_env->ExceptionCheck()) {
|
||||
jclass Object =
|
||||
java_env->FindClass("java/lang/Object");
|
||||
|
||||
jmethodID testInit =
|
||||
java_env->GetMethodID(NativeTranslatorTest, "<init>", "()V");
|
||||
if (java_env->ExceptionCheck()) { die(java_env); }
|
||||
|
||||
jmethodID toString =
|
||||
java_env->GetMethodID(Object, "toString", "()Ljava/lang/String;");
|
||||
|
||||
jthrowable real_ex = java_env->ExceptionOccurred();
|
||||
|
||||
jstring msg = (jstring) java_env->CallObjectMethod(real_ex, toString);
|
||||
|
||||
jboolean f = true;
|
||||
const char *text = java_env->GetStringUTFChars(msg, &f);
|
||||
|
||||
printf("exception: %s\n", text);
|
||||
|
||||
java_env->ReleaseStringUTFChars(msg, text);
|
||||
|
||||
exit(-1);
|
||||
} else {
|
||||
exit(0);
|
||||
}
|
||||
exit(0);
|
||||
}
|
||||
|
|
|
@ -105,6 +105,9 @@ private:
|
|||
jmethodID codeSetLabelledGotoTarget;
|
||||
jobject callReference;
|
||||
|
||||
static bool initialized;
|
||||
static void initialize(JNIEnv *java_env);
|
||||
|
||||
public:
|
||||
|
||||
#define _INCLUDE_CONSTANTS
|
||||
|
|
|
@ -69,6 +69,11 @@ static const char *GlobalCls = XLATOR_PKG "AbstractGlobalEntity";
|
|||
CAstWrapper::CAstWrapper(JNIEnv *env, Exceptions &ex, jobject xlator)
|
||||
: java_ex(ex), env(env), xlator(xlator)
|
||||
{
|
||||
if (!initialized) {
|
||||
initialized = true;
|
||||
initialize(env);
|
||||
}
|
||||
|
||||
this->CAstNode = env->FindClass( __CNN );
|
||||
this->CAstInterface = env->FindClass( __CTN );
|
||||
this->HashSet = env->FindClass("java/util/HashSet");
|
||||
|
|
|
@ -3,15 +3,10 @@
|
|||
|
||||
#include "CAstWrapper.h"
|
||||
#include "Exceptions.h"
|
||||
#include "com_ibm_wala_cast_ir_translator_NativeBridge.h"
|
||||
|
||||
extern "C" {
|
||||
bool CAstWrapper::initialized = false;
|
||||
|
||||
JNIEXPORT void JNICALL
|
||||
Java_com_ibm_wala_cast_ir_translator_NativeBridge_initialize(
|
||||
JNIEnv *env,
|
||||
jclass cls)
|
||||
{
|
||||
void CAstWrapper::initialize(JNIEnv *env) {
|
||||
TRY(exp, env)
|
||||
|
||||
jclass CAstNode = env->FindClass( "com/ibm/wala/cast/tree/CAstNode" );
|
||||
|
@ -38,4 +33,3 @@ Java_com_ibm_wala_cast_ir_translator_NativeBridge_initialize(
|
|||
CATCH()
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue