+2008-06-16 Andrew Cagney <cagney@redhat.com>
+
+ * DwflModule.java (get_cu_dies): Add pointer parameter.
+ * cni/DwflModule.cxx (DwflModule::get_cu_dies): Update.
+ * jni/DwflModule.cxx (DwflModule::get_cu_dies): Implement, missing.
+
2008-06-15 Andrew Cagney <cagney@redhat.com>
* DwarfDie.java (get_scopevar): Return an int.
package lib.dwfl;
import java.util.LinkedList;
+import java.util.List;
/**
* A wrapper object around the libdwfl Dwfl_Module structure.
*/
public native String getDebuginfo();
- public LinkedList getCuDies(){
- return get_cu_dies();
+ public List getCuDies(){
+ List list = new LinkedList();
+ get_cu_dies(pointer, list);
+ return list;
}
- private native LinkedList get_cu_dies();
+ private static native void get_cu_dies(long pointer, List list);
public DwflDie getCompilationUnit(long addr) {
// Find the die, grab the bias as it flies by.
#include <gnu/gcj/RawData.h>
+#include <java/util/List.h>
+
+
#include "lib/dwfl/DwflModule.h"
#include "lib/dwfl/DwarfDie.h"
#include "lib/dwfl/DwflLine.h"
return dwarfDie;
}
-java::util::LinkedList*
-lib::dwfl::DwflModule::get_cu_dies()
-{
-
- java::util::LinkedList* list = new java::util::LinkedList();
-
- Dwarf_Die* cu;
- Dwarf_Die lastcu;
- Dwarf_Addr bias;
-
- cu = dwfl_module_nextcu((::Dwfl_Module*)this->pointer, NULL, &bias);
-
- fflush(stdout);
- while ( cu != NULL){
-
+void
+lib::dwfl::DwflModule::get_cu_dies(jlong pointer,
+ java::util::List *list) {
+ Dwarf_Die* cu;
+ Dwarf_Addr bias;
+ cu = dwfl_module_nextcu(DWFL_MODULE_POINTER, NULL, &bias);
+ while (cu != NULL) {
Dwarf_Die *die = (Dwarf_Die*)JvMalloc(sizeof(Dwarf_Die));
-
- memcpy(die, cu, sizeof(*die));
- lib::dwfl::DwarfDie* cuDie = lib::dwfl::DwarfDieFactory::getFactory()->makeDie((jlong)die, NULL);
- cuDie->setManageDie(true);
-
- list->add(cuDie);
-
- memcpy(&lastcu, cu, sizeof(*cu));
- cu = dwfl_module_nextcu((::Dwfl_Module*)this->pointer, &lastcu, &bias);
-
- }
-
- return list;
+ memcpy(die, cu, sizeof(*die));
+ lib::dwfl::DwarfDie* cuDie
+ = lib::dwfl::DwarfDieFactory::getFactory()->makeDie((jlong)die, NULL);
+ cuDie->setManageDie(true);
+ list->add(cuDie);
+ cu = dwfl_module_nextcu(DWFL_MODULE_POINTER, cu, &bias);
+ }
}
jlong
return dwarfDie;
}
+void
+lib::dwfl::DwflModule::get_cu_dies(::jnixx::env env, jlong pointer,
+ java::util::List list) {
+ Dwarf_Die* cu;
+ Dwarf_Addr bias;
+ cu = dwfl_module_nextcu(DWFL_MODULE_POINTER, NULL, &bias);
+
+ while (cu != NULL) {
+ Dwarf_Die *die = (Dwarf_Die*)::malloc(sizeof(Dwarf_Die));
+ memcpy(die, cu, sizeof(*die));
+ lib::dwfl::DwarfDie cuDie
+ = lib::dwfl::DwarfDieFactory::getFactory(env).makeDie(env, (jlong)die, lib::dwfl::DwflModule(env, NULL));
+ cuDie.setManageDie(env, true);
+ list.add(env, cuDie);
+ cu = dwfl_module_nextcu(DWFL_MODULE_POINTER, cu, &bias);
+ }
+}
+
jlong
lib::dwfl::DwflModule::dwflModuleAddrdie(jnixx::env env, jlong pointer,
jlong addr) {