Re: Query about packaging extended analysis package

Eric Bruneton <[email protected]> Mon, 21 Apr 2014 10:07:26 +0200
Newsgroups gmane.comp.java.objectweb.asm
Message-ID <[email protected]>
16/04/2014 00:32, Eliot Moss wrote:
> Dear ASM team (and other ASM email readers):
>
> The long-promised analysis package that supports backward analysis
> as well as forward, that supports "chained" analysis (where
> a new analysis uses results from a previous one), and that is
> otherwise substantially more general and extensible, is nearing
> completion.  So we have turned our thoughts to packaging and
> compatibility.

Good news!

> At present we are thinking that the best way to go is to offer
> this as a new subpackage under tree, say 'tree.analysis2'.  It
> could also be done as, say, tree.analysis.extended or something.
> We solicit your input on this.

Maybe tree.nanalysis (like java.nio vs java.io)? I don't have good ideas.

> Why a new package and not just a rework of tree.analysis?  Well,
> the factoring of code is different from one thing.  The current
> tree.analysis.Analyzer foresees running the same analysis on
> method after method -- certainly one reasonable pattern.  But our
> structure has a class called MethodAnalyzer that memoizes the
> control flow graph for a particular method, reducing space and
> effort for doing a series of analyses on the same method.  We
> also factor out the flow graph, and its construction, entirely,
> into flow graph helper classes, etc.  We further have our hierarchy
> of data flow values start with the notion of a single flow value
> at each program point.  The current tree.analysis.Frame is a
> particular kind of flow value -- highly structured to have a Value
> in each slot, etc., so we have an analog of that as a subclass
> of flow value.  Because forward and backward abstract execution
> are so different, we end up with forward and backward flow values,
> forward and backward frame flow values, etc.  We also make noticeably
> more use of generics to get good type checking of forward/backward
> and so on.
>
> So, our factoring and structure is different (though frames still
> use interpreters on Values, etc.).  The implication is that it is
> difficult to have Frame, Interpreter, etc., reside in our class
> hierarchy directly.  What we propose is a way from convert the
> old Frame objects into our correlate (ForwardFrameValue), and
> vice versa (if there is a possible need), so that old analyses
> need not be recoded to be used as the basis for chained analyses
> in our framework (though data copying is involved).  We will be
> recoding the existing analyses from tree.analysis so that these
> old friends will be available in the new framework as examples,
> and be of general utility.  New users of analyses should probably
> aim to use just the new package (or just the old one).  Using
> both probably incurs a space overhead (if converting Frames)
> and certainly a *code* space overhead.
>
> Which leads to another reason for making this a separate package:
> its size.  There is a lot of stuff here -- good stuff we think,
> but people should probably load it only if they really want to
> use it.  Our rough estimate of its incremental size, stripped
> of line number and local variable information, is about 100K bytes.
> This is perhaps not of great consequence on servers and larger
> clients, but maybe of more significance in embedded systems, etc.
>
> Another reason for doing a separate package is that it will be
> easier to add to the existing distributions since it disturbs
> the existing code base minimally (really not at all -- it uses
> it, but is not used by it).
>
> We invite your thoughts and comments as we move forward.  The student
> doing the work anticipates that the coding and testing will be done
> this semester.  Another faculty member and I will then need to find
> time to go over it very carefully and enforce consistent style (in
> all the senses of that) throughout.  But we do keep making progress
> and we feel the structure is much more sound and pleasing for future
> extensibility than where we were even a few months ago.

I'm fine with this approach. But I have one question regarding the
maintenance and evolution of this code: what will happen after the
student leaves this project? Do you have resources to fix bugs when they
are reported, add support for new JVM features, etc?

Eric

---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com
message-footer.txt (text/plain, 238 B)
-- 
You receive this message as a subscriber of the [email protected] mailing list.
To unsubscribe: mailto:[email protected]
For general help: mailto:[email protected]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws