* Proposed frysk.rt.Display @ 2007-05-09 18:36 Adam Jocksch 2007-05-09 18:45 ` Sami Wagiaalla 0 siblings, 1 reply; 6+ messages in thread From: Adam Jocksch @ 2007-05-09 18:36 UTC (permalink / raw) To: frysk From a discussion with Andrew: > What is needed here is a higher level abstraction, a frysk.rt.Display (I'm not using Watch as that implies hardware > WatchPoint) object, say, that worries about scope rules, and changing location, and being able to save/restore > itself. The display object, when the program stops, would know to re-instantiate the underlying Variable (if still in > scope) when the process stops. So, mulling it over it sounds like frysk.rt.Display needs to have the following - an isInScope() method or something akin to it in functionality - some reference to the Variable itself. I'm guess that something like private Variable myVar is probably not what's needed here; so should we be storing the variable's Location? or the higher level source#line#col? - all of the value-access functionality already implemented in Variable (or a way to get a Variable from a Display, then call get Int or whatever on it) The second point is probably the trickiest one, and the point where I have the least idea of what would be sufficient/best. Adam ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Proposed frysk.rt.Display 2007-05-09 18:36 Proposed frysk.rt.Display Adam Jocksch @ 2007-05-09 18:45 ` Sami Wagiaalla 2007-05-09 18:47 ` Adam Jocksch 0 siblings, 1 reply; 6+ messages in thread From: Sami Wagiaalla @ 2007-05-09 18:45 UTC (permalink / raw) To: Adam Jocksch; +Cc: frysk Can you provide more context here please. What is the problem the proposed Display object is solving ? Adam Jocksch wrote: > From a discussion with Andrew: > > What is needed here is a higher level abstraction, a > frysk.rt.Display (I'm not using Watch as that implies hardware > > WatchPoint) object, say, that worries about scope rules, and > changing location, and being able to save/restore > > itself. The display object, when the program stops, would know to > re-instantiate the underlying Variable (if still in > > scope) when the process stops. > > So, mulling it over it sounds like frysk.rt.Display needs to have the > following > - an isInScope() method or something akin to it in functionality > - some reference to the Variable itself. I'm guess that something > like private Variable myVar is probably not what's > needed here; so should we be storing the variable's Location? or > the higher level source#line#col? > - all of the value-access functionality already implemented in > Variable (or a way to get a Variable from a Display, > then call get Int or whatever on it) > > The second point is probably the trickiest one, and the point where I > have the least idea of what would be sufficient/best. > > Adam ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Proposed frysk.rt.Display 2007-05-09 18:45 ` Sami Wagiaalla @ 2007-05-09 18:47 ` Adam Jocksch 2007-05-10 15:23 ` Sami Wagiaalla 2007-05-10 18:38 ` Andrew Cagney 0 siblings, 2 replies; 6+ messages in thread From: Adam Jocksch @ 2007-05-09 18:47 UTC (permalink / raw) To: Sami Wagiaalla; +Cc: frysk Sami Wagiaalla wrote: > Can you provide more context here please. > What is the problem the proposed Display object is solving ? > The problem is that a Variable object has no concept of when it is in or out of scope, as well as when it changes from being in memory to being in a register. The Display class will act as a sort of intermediary between Variable and classes that wish to access Variables (such as variable watches in the source window), such that they will not need to worry about checking whether the variable is still in scope, in memory or in a register, etc. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Proposed frysk.rt.Display 2007-05-09 18:47 ` Adam Jocksch @ 2007-05-10 15:23 ` Sami Wagiaalla 2007-05-10 18:38 ` Andrew Cagney 1 sibling, 0 replies; 6+ messages in thread From: Sami Wagiaalla @ 2007-05-10 15:23 UTC (permalink / raw) To: Adam Jocksch; +Cc: frysk > The problem is that a Variable object has no concept of when it is in > or out of scope, as well as when it changes from being in memory to > being in a register. The Display class will act as a sort of > intermediary between Variable and classes that wish to access > Variables (such as variable watches in the source window), such that > they will not need to worry about checking whether the variable is > still in scope, in memory or in a register, etc. Ah cool... thanx :) ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Proposed frysk.rt.Display 2007-05-09 18:47 ` Adam Jocksch 2007-05-10 15:23 ` Sami Wagiaalla @ 2007-05-10 18:38 ` Andrew Cagney 2007-05-11 13:44 ` Stan Cox 1 sibling, 1 reply; 6+ messages in thread From: Andrew Cagney @ 2007-05-10 18:38 UTC (permalink / raw) To: Adam Jocksch; +Cc: Sami Wagiaalla, frysk Adam, This is a good summary, even the text to put at the top of the task as the description :-) First thing I think we've identified is that frysk.value.Variable is misleading, should be renamed to .Value -- compiler people are familar with lval and rval as extensions of that :-) It also leads to things like getRegisterVariable -> getRegisterValue - more sane :-) That leaves Variable for you and sami to fight over. I wonder though if for this object, something like VariableMonitor, or VariableTracker will be more meaningful. Anyway, the technical challenge here, I think, is defining the test-cases that are needed to push this object through each of its possible state transitions. I put it that way as, that way the test-cases define the objects requirements through hard evidence - and we don't end up with code that probably isn't needed. So, assuming for now that there's .getValue(), and a constructor, the most basic of tests would be, given: int x = 0; x = 1; // breakpoint #1 x = 2; // breakpoint #2 run to breakpoint 1, create the object, continue to breakpoint #2, check the object changed. With this unit test running we can then start to expand the cases this code needs to cover. -- A side line here, the obvious way to implement this is by creating high-level FileLineBreakpoint()s using hard-wired addresses. Lets be a little inovative though :-) Instead why not add to frysk.testbed code to find a pattern given a file (perhaps there's a library method available), and then create a FilePatternBreakpoint instead for instance, something like: new FilePatternBreakpoint(new File(getSrcDir(), "path-to.c"), "x = 1;") going forward I think this will greatly simplify the authoring and clarity of these tests. Andrew Adam Jocksch wrote: > Sami Wagiaalla wrote: >> Can you provide more context here please. >> What is the problem the proposed Display object is solving ? >> > The problem is that a Variable object has no concept of when it is in > or out of scope, as well as when it changes from being in memory to > being in a register. The Display class will act as a sort of > intermediary between Variable and classes that wish to access > Variables (such as variable watches in the source window), such that > they will not need to worry about checking whether the variable is > still in scope, in memory or in a register, etc. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Proposed frysk.rt.Display 2007-05-10 18:38 ` Andrew Cagney @ 2007-05-11 13:44 ` Stan Cox 0 siblings, 0 replies; 6+ messages in thread From: Stan Cox @ 2007-05-11 13:44 UTC (permalink / raw) To: Frysk List On Thu, 2007-05-10 at 07:05 -0700, Andrew Cagney wrote: > should be renamed to .Value Done. http://sources.redhat.com/ml/frysk-cvs/2007-q2/msg00344.html ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2007-05-11 11:47 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2007-05-09 18:36 Proposed frysk.rt.Display Adam Jocksch 2007-05-09 18:45 ` Sami Wagiaalla 2007-05-09 18:47 ` Adam Jocksch 2007-05-10 15:23 ` Sami Wagiaalla 2007-05-10 18:38 ` Andrew Cagney 2007-05-11 13:44 ` Stan Cox
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).