]> sourceware.org Git - frysk.git/commitdiff
Implement missing jni/get_cu_dies.
authorAndrew Cagney <cagney@redhat.com>
Tue, 17 Jun 2008 04:13:05 +0000 (00:13 -0400)
committerAndrew Cagney <cagney@redhat.com>
Wed, 18 Jun 2008 13:20:35 +0000 (09:20 -0400)
frysk-sys/lib/dwfl/ChangeLog
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.

frysk-sys/lib/dwfl/ChangeLog
frysk-sys/lib/dwfl/DwflModule.java
frysk-sys/lib/dwfl/cni/DwflModule.cxx
frysk-sys/lib/dwfl/jni/DwflModule.cxx

index c44bebeb7dd6ec43368e35d736643f9f5d0e9b2e..6e7a38407e0020737f7168801154ace75f4ef3f7 100644 (file)
@@ -1,3 +1,9 @@
+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.
index b262ec4a7a34f6b0abbcd204a017b8673ca438f1..01b728c492c2f50cf3568c26fba44fce844592dc 100644 (file)
@@ -40,6 +40,7 @@
 package lib.dwfl;
 
 import java.util.LinkedList;
+import java.util.List;
 
 /**
  * A wrapper object around the libdwfl Dwfl_Module structure.
@@ -142,10 +143,12 @@ public class DwflModule {
      */
     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.
index ad85344d0c65112b55b0f9d5342b9a37bb35303d..7f252bcf11ad0e572cf4f8c3b38552dcfaa555c4 100644 (file)
@@ -45,6 +45,9 @@
 
 #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"
@@ -443,35 +446,21 @@ lib::dwfl::DwflModule::offdie(jlong die, jlong offset){
   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
index 09092ceda55890b35f3223ca1d616c88acb02413..ca42e433910aa8be9fe947077529f09bc9326bf8 100644 (file)
@@ -396,6 +396,24 @@ lib::dwfl::DwflModule::offdie(jnixx::env env, jlong die, jlong offset) {
   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) {
This page took 0.0314 seconds and 5 git commands to generate.