2 * Project: libFIRM / Recoder frontend for libFIRM
3 * File name: firmjni/Dbginfo.c
4 * Purpose: Testing callback.
5 * Author: Goetz Lindenmaier
9 * Copyright: (c) 2003 Universität Karlsruhe
10 * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE.
13 #include "Dbginfo.h" /* Generated. */
19 static jmethodID pair_id;
20 static jmethodID sets_id;
21 static JNIEnv *my_env_jni_;
22 static jclass my_cls_jni_;
30 my_dbg_info_merge_pair(ir_node *nw, ir_node *old, dbg_action info) {
32 (*my_env_jni_)->CallStaticVoidMethod(my_env_jni_, my_cls_jni_, pair_id, nw, old, info);
37 my_dbg_info_merge_sets(ir_node **new_nodes, int n_new_nodes,
38 ir_node **old_nodes, int n_old_nodes,
41 /* Convert argument arrays to java arrays. */
42 jintArray j_new_nodes = (*my_env_jni_)->NewIntArray(my_env_jni_, n_new_nodes);
43 jintArray j_old_nodes = (*my_env_jni_)->NewIntArray(my_env_jni_, n_old_nodes);
45 (*my_env_jni_)->SetIntArrayRegion(my_env_jni_, j_new_nodes, 0, n_new_nodes, (jint *)new_nodes);
47 (*my_env_jni_)->SetIntArrayRegion(my_env_jni_, j_old_nodes, 0, n_old_nodes, (jint *)old_nodes);
49 (*my_env_jni_)->CallStaticVoidMethod(my_env_jni_, my_cls_jni_, sets_id, j_new_nodes, j_old_nodes, info);
54 void Java_firmjni_Dbginfo_dbgInit (JNIEnv *env_jni_, jclass cls_jni_) {
55 pair_id = (*env_jni_)->GetStaticMethodID(env_jni_, cls_jni_, "myJavaDbgInfoMergePair", "(III)V");
56 sets_id = (*env_jni_)->GetStaticMethodID(env_jni_, cls_jni_, "myJavaDbgInfoMergeSets", "([I[II)V");
57 my_env_jni_ = env_jni_;
58 my_cls_jni_ = cls_jni_;
60 dbg_init(&my_dbg_info_merge_pair, &my_dbg_info_merge_sets, NULL);
63 /** Return the dbg object index of the given node. A new dbg object is created, if needed. */
64 jint Java_firmjni_Dbginfo_getDbgInfoIdx (JNIEnv *env, jclass clss, jint jnode)
67 ir_node *node = (ir_node*) jnode;
69 dbg_info *info = get_irn_dbg_info (node);
72 info = get_dbg_info ();
73 set_irn_dbg_info (node, info);
82 /** Return the dbg object index of the given node, or <TT>-1</TT> if none has been set. */
83 jint Java_firmjni_Dbginfo_doGetDbgInfoIdx (JNIEnv *env, jclass clss, jint jnode)
86 ir_node *node = (ir_node*) jnode;
88 dbg_info *info = get_irn_dbg_info (node);
100 /** return the name of a debug action. */
101 jstring Java_firmjni_Dbginfo_dbgActionToString (JNIEnv *env, jclass clss, jint a) {
102 return (*env)->NewStringUTF(env, dbg_action_2_str(a));