public inbox for frysk-cvs@sourceware.org
help / color / mirror / Atom feed
* [SCM]  master: swagiaal: Break points and List command now use ObjectDeclaration.
@ 2008-04-21 20:50 swagiaal
  0 siblings, 0 replies; only message in thread
From: swagiaal @ 2008-04-21 20:50 UTC (permalink / raw)
  To: frysk-cvs

The branch, master has been updated
       via  25c50d7c90d78aeb0260139293eeab2b8d1eec5c (commit)
      from  c9b6156e7b4d4ab4ccb29024e22625901595c15b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit 25c50d7c90d78aeb0260139293eeab2b8d1eec5c
Author: Sami Wagiaalla <swagiaal@redhat.com>
Date:   Mon Apr 21 16:50:29 2008 -0400

    swagiaal: Break points and List command now use ObjectDeclaration.
    
    frysk-core/frysk/debuginfo/ChangeLog
    +2008-04-21  Sami Wagiaalla  <swagiaal@redhat.com>
    +
    +	* ObjectDeclarationSearchEngine.java(getSymbolDie): now
    +	returns ObjectDeclaration.
    +
    
    frysk-core/frysk/hpd/ChangeLog
    +2008-04-21  Sami Wagiaalla  <swagiaal@redhat.com>
    +
    +	* BreakpointCommand.java: Now understands ObjectDeclaration.
    +	* ListCommand.java: Ditto.
    +
    
    frysk-core/frysk/rt/ChangeLog
    +2008-04-21  Sami Wagiaalla  <swagiaal@redhat.com>
    +
    +	* FunctionBreakpoint.java: Now uses ObjectDeclaration.
    +	* BreakpointManager.java: Ditto.
    +
    
    frysk-core/frysk/scopes/ChangeLog
    +2008-04-21  Sami Wagiaalla  <swagiaal@redhat.com>
    +
    +	* ConcreteInlinedFunction.java: New class.
    +	* TestScopeFactory.java: Test handling of concrete inlined
    +	instances.
    +	* ScopeFactory.java: Handle concrete inlined instances.
    +	* OutOfLineFunction.java: implemented BreakPointLocation interface.
    +	* InlinedSubroutine.java: implemented getInlinedInstances().
    +
    
    frysk-core/frysk/value/ChangeLog
    +2008-04-21  Sami Wagiaalla  <swagiaal@redhat.com>
    +
    +	* BreakPointLocation.java: New interface.
    +
    
    frysk-sys/lib/dwfl/ChangeLog
    +2008-04-21  Sami Wagiaalla  <swagiaal@redhat.com>
    +
    +	* DwarfDie.java: wrapped getEntryPC()
    +

-----------------------------------------------------------------------

Summary of changes:
 frysk-core/frysk/debuginfo/ChangeLog               |    5 ++
 .../debuginfo/ObjectDeclarationSearchEngine.java   |   30 +++++++--
 frysk-core/frysk/hpd/BreakpointCommand.java        |    4 +-
 frysk-core/frysk/hpd/ChangeLog                     |    5 ++
 frysk-core/frysk/hpd/ListCommand.java              |   71 +++++++++++---------
 frysk-core/frysk/rt/BreakpointManager.java         |    5 +-
 frysk-core/frysk/rt/ChangeLog                      |    5 ++
 frysk-core/frysk/rt/FunctionBreakpoint.java        |   36 ++++++++++
 frysk-core/frysk/scopes/ChangeLog                  |    9 +++
 ...ubroutine.java => ConcreteInlinedFunction.java} |   10 ++-
 frysk-core/frysk/scopes/Function.java              |   20 +++---
 frysk-core/frysk/scopes/InlinedSubroutine.java     |   15 ++++
 frysk-core/frysk/scopes/OutOfLineFunction.java     |   13 +++-
 frysk-core/frysk/scopes/ScopeFactory.java          |   16 +++--
 frysk-core/frysk/scopes/TestScopeFactory.java      |   14 +++-
 .../BreakPointLocation.java}                       |   12 +---
 frysk-core/frysk/value/ChangeLog                   |    4 +
 frysk-sys/lib/dwfl/ChangeLog                       |    4 +
 frysk-sys/lib/dwfl/DwarfDie.java                   |    7 ++
 19 files changed, 206 insertions(+), 79 deletions(-)
 copy frysk-core/frysk/scopes/{InlinedSubroutine.java => ConcreteInlinedFunction.java} (88%)
 copy frysk-core/frysk/{scopes/InlinedSubroutine.java => value/BreakPointLocation.java} (89%)

First 500 lines of diff:
diff --git a/frysk-core/frysk/debuginfo/ChangeLog b/frysk-core/frysk/debuginfo/ChangeLog
index 9858055..54398b0 100644
--- a/frysk-core/frysk/debuginfo/ChangeLog
+++ b/frysk-core/frysk/debuginfo/ChangeLog
@@ -1,3 +1,8 @@
+2008-04-21  Sami Wagiaalla  <swagiaal@redhat.com>
+
+	* ObjectDeclarationSearchEngine.java(getSymbolDie): now
+	returns ObjectDeclaration.  
+	
 2008-04-18  Mark Wielaard  <mwielaard@redhat.com>
 
 	* TestDebugInfoStackTrace.java (testBacktrace): Resolved bug #4468.
diff --git a/frysk-core/frysk/debuginfo/ObjectDeclarationSearchEngine.java b/frysk-core/frysk/debuginfo/ObjectDeclarationSearchEngine.java
index e1524cf..5eaa273 100644
--- a/frysk-core/frysk/debuginfo/ObjectDeclarationSearchEngine.java
+++ b/frysk-core/frysk/debuginfo/ObjectDeclarationSearchEngine.java
@@ -63,6 +63,8 @@ import frysk.isa.registers.Registers;
 import frysk.isa.registers.RegistersFactory;
 import frysk.proc.Task;
 import frysk.scopes.Scope;
+import frysk.scopes.ScopeFactory;
+import frysk.scopes.Variable;
 import frysk.symtab.SymbolObjectDeclaration;
 import frysk.value.ObjectDeclaration;
 import frysk.value.Value;
@@ -93,15 +95,31 @@ public class ObjectDeclarationSearchEngine implements ExprSymTab{
      * - return ObjectDeclaration
      * ...   
      */
-    public DwarfDie getSymbolDie(String input) {
+    public ObjectDeclaration getSymbolDie(String name) {
+	
+	ObjectDeclaration result;
+	
 	Elf elf = new Elf(new File(task.getProc().getExeFile().getSysRootedPath()), ElfCommand.ELF_C_READ);
 	Dwarf dwarf = new Dwarf(elf, DwarfCommand.READ, null);
 	
-	DwarfDie result = DwarfDie.getDecl(dwarf, input);
-	if (result == null)
-	    throw new RuntimeException("symbol " + input + " not found.");
-	else
-	    return result;
+	DwarfDie resultDie = DwarfDie.getDecl(dwarf, name);
+	TypeFactory typeFactory = new TypeFactory(task.getISA());
+	
+	if (resultDie == null)
+	    throw new RuntimeException("symbol " + name + " not found.");
+	
+	
+	try {
+	    result =  (ObjectDeclaration) ScopeFactory.theFactory.getScope(resultDie, typeFactory);
+	} catch (IllegalArgumentException e) {
+	    try {
+		result = new Variable(resultDie);
+	    } catch (Exception e2) { 
+		throw new ObjectDeclarationNotFoundException(name);
+	    }
+	}
+	
+	return (ObjectDeclaration)result;
     }
  
     /**
diff --git a/frysk-core/frysk/hpd/BreakpointCommand.java b/frysk-core/frysk/hpd/BreakpointCommand.java
index f364fbb..efe1ee0 100644
--- a/frysk-core/frysk/hpd/BreakpointCommand.java
+++ b/frysk-core/frysk/hpd/BreakpointCommand.java
@@ -45,7 +45,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
-import lib.dwfl.DwarfDie;
 import frysk.debuginfo.DebugInfoFrame;
 import frysk.debuginfo.DebugInfoStackFactory;
 import frysk.debuginfo.ObjectDeclarationSearchEngine;
@@ -57,6 +56,7 @@ import frysk.rt.FunctionBreakpoint;
 import frysk.rt.LineBreakpoint;
 import frysk.rt.SourceBreakpoint;
 import frysk.rt.SourceBreakpointObserver;
+import frysk.value.ObjectDeclaration;
 
 class BreakpointCommand extends ParameterizedCommand {
 
@@ -145,7 +145,7 @@ class BreakpointCommand extends ParameterizedCommand {
 		ObjectDeclarationSearchEngine declarationSearchEngine = new ObjectDeclarationSearchEngine(frame);
 		
 		if (declarationSearchEngine != null) {
-		    DwarfDie die;
+		    ObjectDeclaration die;
 		    try {
 			die = declarationSearchEngine.getSymbolDie(breakpt);
 		    } catch (RuntimeException e) {
diff --git a/frysk-core/frysk/hpd/ChangeLog b/frysk-core/frysk/hpd/ChangeLog
index 5a769e9..bf0caf2 100644
--- a/frysk-core/frysk/hpd/ChangeLog
+++ b/frysk-core/frysk/hpd/ChangeLog
@@ -1,3 +1,8 @@
+2008-04-21  Sami Wagiaalla  <swagiaal@redhat.com>
+
+	* BreakpointCommand.java: Now understands ObjectDeclaration.
+	* ListCommand.java: Ditto.
+
 2008-04-18  Mark Wielaard  <mwielaard@redhat.com>
 
 	* TestEvalCommands.java (testPrintLocationFails): Enable test
diff --git a/frysk-core/frysk/hpd/ListCommand.java b/frysk-core/frysk/hpd/ListCommand.java
index 79b5fd5..5e54527 100644
--- a/frysk-core/frysk/hpd/ListCommand.java
+++ b/frysk-core/frysk/hpd/ListCommand.java
@@ -40,23 +40,22 @@
 package frysk.hpd;
 
 import java.io.File;
-import java.util.List;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.LineNumberReader;
-
-import frysk.scopes.SourceLocation;
-
 import java.util.Iterator;
-import lib.dwfl.DwarfDie;
-import lib.dwfl.DwTag; 
+import java.util.List;
+
 import lib.dwfl.DwflLine;
 import frysk.debuginfo.DebugInfoFrame;
+import frysk.debuginfo.ObjectDeclarationNotFoundException;
 import frysk.debuginfo.ObjectDeclarationSearchEngine;
 import frysk.dwfl.DwflCache;
+import frysk.proc.Task;
+import frysk.scopes.Function;
+import frysk.scopes.SourceLocation;
 import frysk.sysroot.SysRoot;
 import frysk.sysroot.SysRootCache;
-import frysk.proc.Task;
 
 /**
  * Implement the "list" source command.
@@ -208,33 +207,39 @@ class ListCommand extends ParameterizedCommand {
 
 	if ((cmdParm).compareTo("$EXEC") == 0)
 	    return frame.getLine().getLine();
-	else {
-	    DwarfDie funcDie = null;
-	    
-	    ObjectDeclarationSearchEngine declarationSearchEngine = new ObjectDeclarationSearchEngine(frame);
-		
-	    if (declarationSearchEngine != null) {
-		funcDie = declarationSearchEngine
-		.getSymbolDie(cmdParm);
-	    }
-	    if (funcDie.getTag().hashCode() == DwTag.SUBPROGRAM_) {
-		DwflLine dwflLine = DwflCache.getDwfl(frame.getTask())
-		.getSourceLine(frame.getAdjustedAddress());
-		if (dwflLine != null) {
-		    SysRoot sysRoot = new SysRoot(SysRootCache.getSysRoot(frame.getTask()));
-		    file = sysRoot.getSourcePathViaSysRoot
-		    (new File(dwflLine.getCompilationDir()),
-			    funcDie.getDeclFile()).getSysRootedFile();
-		}
-		else
-		    file = funcDie.getDeclFile();
-		return (int)funcDie.getDeclLine();
-	    }
-	    else {
-		cli.addMessage("function " + cmdParm + " not found.",
-			Message.TYPE_ERROR);
-		return line;
+
+	Function function = null;
+
+	ObjectDeclarationSearchEngine declarationSearchEngine = new ObjectDeclarationSearchEngine(frame);
+
+	try {
+	    function = (Function) declarationSearchEngine.getSymbolDie(cmdParm);
+	} catch (ObjectDeclarationNotFoundException e) {
+	    function  = null;
+	}catch (ClassCastException e) {
+	    function  = null;
+	}
+	
+	if (function != null ) {
+	    DwflLine dwflLine = DwflCache.getDwfl(frame.getTask())
+		    .getSourceLine(frame.getAdjustedAddress());
+	    if (dwflLine != null) {
+		SysRoot sysRoot = new SysRoot(SysRootCache.getSysRoot(frame
+			.getTask()));
+		file = sysRoot.getSourcePathViaSysRoot(
+			new File(dwflLine.getCompilationDir()),
+			function.getSourceLocation().getFile())
+			.getSysRootedFile();
+	    } else {
+		file = function.getSourceLocation().getFile();
 	    }
+	    return (int) function.getSourceLocation().getLine();
+
+	} else {
+	    cli.addMessage("function " + cmdParm + " not found.",
+		    Message.TYPE_ERROR);
+	    return line;
+
 	}
     }
 }
diff --git a/frysk-core/frysk/rt/BreakpointManager.java b/frysk-core/frysk/rt/BreakpointManager.java
index bf4233d..8582d3c 100644
--- a/frysk-core/frysk/rt/BreakpointManager.java
+++ b/frysk-core/frysk/rt/BreakpointManager.java
@@ -58,8 +58,7 @@ import frysk.symtab.DwflSymbol;
 import frysk.symtab.PLTEntry;
 import frysk.symtab.SymbolFactory;
 import frysk.util.CountDownLatch;
-
-import lib.dwfl.DwarfDie;
+import frysk.value.ObjectDeclaration;
 
 /**
  * Class for managing user breakpoints. In particular it defers
@@ -197,7 +196,7 @@ public class BreakpointManager extends Observable {
      * performed.
      * @return FunctionBreakpoint object
      */
-    public FunctionBreakpoint addFunctionBreakpoint(String name, DwarfDie die) {
+    public FunctionBreakpoint addFunctionBreakpoint(String name, ObjectDeclaration die) {
 	FunctionBreakpoint sourceBreakpoint =
 	    new FunctionBreakpoint(CountManager.getNextId(), name, die);
 	addBreakpoint(sourceBreakpoint);
diff --git a/frysk-core/frysk/rt/ChangeLog b/frysk-core/frysk/rt/ChangeLog
index 5f2319f..fe65348 100644
--- a/frysk-core/frysk/rt/ChangeLog
+++ b/frysk-core/frysk/rt/ChangeLog
@@ -1,3 +1,8 @@
+2008-04-21  Sami Wagiaalla  <swagiaal@redhat.com>
+
+	* FunctionBreakpoint.java: Now uses ObjectDeclaration.
+	* BreakpointManager.java: Ditto.
+
 2008-04-16  Andrew Cagney  <cagney@redhat.com>
 
 	* LineBreakpoint.java (LineBreakpoint(int,File,int,int)): New.
diff --git a/frysk-core/frysk/rt/FunctionBreakpoint.java b/frysk-core/frysk/rt/FunctionBreakpoint.java
index ca3fd44..84198a2 100644
--- a/frysk-core/frysk/rt/FunctionBreakpoint.java
+++ b/frysk-core/frysk/rt/FunctionBreakpoint.java
@@ -42,13 +42,18 @@ package frysk.rt;
 
 import java.io.PrintWriter;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.ListIterator;
 
 import lib.dwfl.DwarfDie;
 import lib.dwfl.die.InlinedSubroutine;
 import frysk.proc.Task;
+import frysk.scopes.ConcreteInlinedFunction;
+import frysk.scopes.Function;
+import frysk.scopes.OutOfLineFunction;
 import frysk.symtab.SymbolFactory;
+import frysk.value.ObjectDeclaration;
 
 public class FunctionBreakpoint
   extends SourceBreakpoint {
@@ -56,6 +61,7 @@ public class FunctionBreakpoint
     protected final DwarfDie die;
 
     private boolean containsInlineInstances = false;
+    private Function function;
 
     /**
      * Set a breakpoint based on a DwarfDie or just a name.
@@ -66,7 +72,37 @@ public class FunctionBreakpoint
         this.die = die;
     }
 
+    public FunctionBreakpoint(int id, String name, ObjectDeclaration function) {
+        super(id);
+        this.name = name;
+        this.function = (Function) function;
+        this.die = null;
+    }
+
     public LinkedList getBreakpointRawAddresses(Task task) {
+	
+	if (function != null) {
+	    if (function instanceof OutOfLineFunction) {
+		long address = ((OutOfLineFunction) function).getBreakPointAddress();
+		LinkedList addrs = new LinkedList();
+		addrs.add(new Long(address));
+		return addrs;
+	    }
+	    
+	    if (function instanceof frysk.scopes.InlinedSubroutine) {
+		LinkedList inlinedInstances = ((frysk.scopes.InlinedSubroutine)function).getInlinedInstances();
+		Iterator iterator = inlinedInstances.iterator();
+		LinkedList addrs = new LinkedList();
+		while (iterator.hasNext()) {
+		    ConcreteInlinedFunction concreteInlinedFunction = (ConcreteInlinedFunction) iterator.next();
+		    addrs.add(new Long(concreteInlinedFunction.getBreakPointAddress()));
+		}
+		return addrs;
+	    }
+	    
+	    
+	}
+	
 	if (die != null) {
 	    ArrayList entryAddrs = die.getEntryBreakpoints();
 	    ArrayList inlineDies = null;
diff --git a/frysk-core/frysk/scopes/ChangeLog b/frysk-core/frysk/scopes/ChangeLog
index 0d06053..98d86cb 100644
--- a/frysk-core/frysk/scopes/ChangeLog
+++ b/frysk-core/frysk/scopes/ChangeLog
@@ -1,3 +1,12 @@
+2008-04-21  Sami Wagiaalla  <swagiaal@redhat.com>
+
+	* ConcreteInlinedFunction.java: New class.
+	* TestScopeFactory.java: Test handling of concrete inlined
+	instances.
+	* ScopeFactory.java: Handle concrete inlined instances.
+	* OutOfLineFunction.java: implemented BreakPointLocation interface.
+	* InlinedSubroutine.java: implemented getInlinedInstances().
+
 2008-04-16  Andrew Cagney  <cagney@redhat.com>
 
 	* TestDie.java: Use frysk.config.Prefix.
diff --git a/frysk-core/frysk/scopes/InlinedSubroutine.java b/frysk-core/frysk/scopes/ConcreteInlinedFunction.java
similarity index 88%
copy from frysk-core/frysk/scopes/InlinedSubroutine.java
copy to frysk-core/frysk/scopes/ConcreteInlinedFunction.java
index 0b0086f..c3e350c 100644
--- a/frysk-core/frysk/scopes/InlinedSubroutine.java
+++ b/frysk-core/frysk/scopes/ConcreteInlinedFunction.java
@@ -41,11 +41,17 @@ package frysk.scopes;
 
 import lib.dwfl.DwarfDie;
 import frysk.debuginfo.TypeFactory;
+import frysk.value.BreakPointLocation;
 
-public class InlinedSubroutine extends Function{
+public class ConcreteInlinedFunction extends InlinedSubroutine implements BreakPointLocation{
 
-    public InlinedSubroutine(DwarfDie die, TypeFactory typeFactory) {
+    public ConcreteInlinedFunction(DwarfDie die, TypeFactory typeFactory) {
 	super(die, typeFactory);
     }
 
+    public long getBreakPointAddress() {
+	return getDie().getLowPC();
+    }
+
+    
 }
diff --git a/frysk-core/frysk/scopes/Function.java b/frysk-core/frysk/scopes/Function.java
index 39c9036..89c225f 100644
--- a/frysk-core/frysk/scopes/Function.java
+++ b/frysk-core/frysk/scopes/Function.java
@@ -170,17 +170,20 @@ public class Function extends NamedScope {
      * - a regular funciton which has been inlined by the compiler
      */
     public boolean isInlined(){
+	
 	DwTag dwTag = getDie().getTag();
-	long inlineAttribute = getDie().getAttrConstant(DwAt.INLINE);
 	
-	// Declared inlined and inlined by compiler
-	if(dwTag.equals(DwTag.INLINED_SUBROUTINE) && inlineAttribute == DwInl.DECLARED_INLINED_){
+	// Concrete inlined instance
+	if(dwTag.equals(DwTag.INLINED_SUBROUTINE)){
 	    return true;
 	}
 	
-	// Declared inlined and inlined by compiler... but has INLINED attribute instead
-	// of DECLARED_INLINED_
-	if(dwTag.equals(DwTag.INLINED_SUBROUTINE) && inlineAttribute == DwInl.INLINED_){
+	long inlineAttribute = getDie().getAttrConstant(DwAt.INLINE);
+	
+	// Declared inlined and inlined by compiler
+	// but has DW_TAG_SUBPROGRAM
+	// this is an abstract instance of an inlineable function  
+	if(dwTag.equals(DwTag.SUBPROGRAM) && inlineAttribute == DwInl.DECLARED_INLINED_){
 	    return true;
 	}
 	
@@ -189,11 +192,6 @@ public class Function extends NamedScope {
 	    return true;
 	}
 	
-	// Declared inlined and not inlined by compiler
-	if(dwTag.equals(DwTag.INLINED_SUBROUTINE) && inlineAttribute == DwInl.DECLARED_NOT_INLINED_){
-	    return false;
-	}
-	
 	// Declared regular and not inlined by compiler
 	if(dwTag.equals(DwTag.SUBPROGRAM) && inlineAttribute == DwInl.NOT_INLINED_){
 	    return false;
diff --git a/frysk-core/frysk/scopes/InlinedSubroutine.java b/frysk-core/frysk/scopes/InlinedSubroutine.java
index 0b0086f..149af91 100644
--- a/frysk-core/frysk/scopes/InlinedSubroutine.java
+++ b/frysk-core/frysk/scopes/InlinedSubroutine.java
@@ -39,6 +39,10 @@
 
 package frysk.scopes;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedList;
+
 import lib.dwfl.DwarfDie;
 import frysk.debuginfo.TypeFactory;
 
@@ -48,4 +52,15 @@ public class InlinedSubroutine extends Function{
 	super(die, typeFactory);
     }
 
+    public LinkedList getInlinedInstances(){
+	LinkedList inlinedInstances = new LinkedList();
+	
+	ArrayList arrayList = getDie().getInlinedInstances();
+	Iterator iterator = arrayList.iterator();
+	while (iterator.hasNext()) {
+	    DwarfDie die = (DwarfDie) iterator.next();
+	    inlinedInstances.add(ScopeFactory.theFactory.getScope(die, typeFactory));
+	}
+	return inlinedInstances;
+    }
 }
diff --git a/frysk-core/frysk/scopes/OutOfLineFunction.java b/frysk-core/frysk/scopes/OutOfLineFunction.java
index 6c76dc6..4b71275 100644
--- a/frysk-core/frysk/scopes/OutOfLineFunction.java
+++ b/frysk-core/frysk/scopes/OutOfLineFunction.java
@@ -45,15 +45,24 @@ package frysk.scopes;
 
 import lib.dwfl.DwarfDie;
 import frysk.debuginfo.TypeFactory;
+import frysk.value.BreakPointLocation;
 
 /**
- * A Subprogram refers to a concrete (not inlined) instance of a function.
+ * This refers to a concrete (not inlined) instance of a function.
  */
-public class OutOfLineFunction extends Function
+public class OutOfLineFunction extends Function implements BreakPointLocation
 {
 
+    DwarfDie die;
+    
     public OutOfLineFunction(DwarfDie die, TypeFactory typeFactory) {
 	super(die, typeFactory);
+	this.die = die;
+    }
+
+    public long getBreakPointAddress() {
+//	return die.getEntryPc();
+	return ((Long)die.getEntryBreakpoints().get(0)).longValue();
     }
 
 }
diff --git a/frysk-core/frysk/scopes/ScopeFactory.java b/frysk-core/frysk/scopes/ScopeFactory.java
index 4cd54e0..b8750a2 100644
--- a/frysk-core/frysk/scopes/ScopeFactory.java
+++ b/frysk-core/frysk/scopes/ScopeFactory.java
@@ -63,26 +63,28 @@ public class ScopeFactory {
 	// the die that is constant.
 	// Or DwarfDieFactory should prevent creation of
 	// redundant Die objects
- 	Scope scope = (Scope) scopes.get(die);
-	
+
+	Object key = die;
+	Scope scope = (Scope) scopes.get(key);
 	if (scope == null) {
 	    scope = createScope(die, typeFactory);
-	    this.scopes.put(die, scope);
+	    this.scopes.put(key, scope);
 	}
 	return scope;
     }
 
     private Scope createScope(DwarfDie die, TypeFactory typeFactory) {
-
+	
 	switch (die.getTag().hashCode()) {
 	
 	case DwTag.INLINED_SUBROUTINE_:
+	    return new ConcreteInlinedFunction(die, typeFactory);
 	case DwTag.SUBPROGRAM_:
-	    OutOfLineFunction subprogram = new OutOfLineFunction(die, typeFactory);
-	    if(subprogram.isInlined()){
+	    Function function = new Function(die, typeFactory);
+	    if(function.isInlined()){
 		return new InlinedSubroutine(die,typeFactory);
 	    }
-	    return subprogram;
+	    return new OutOfLineFunction(die,typeFactory);
 	case DwTag.LEXICAL_BLOCK_:
 	    return new LexicalBlock(die, typeFactory);
 	case DwTag.COMPILE_UNIT_:


hooks/post-receive
--
frysk system monitor/debugger


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-04-21 20:50 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-04-21 20:50 [SCM] master: swagiaal: Break points and List command now use ObjectDeclaration swagiaal

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).