Alex,

I remember to have talked to Mathieu about the making layouts ignore some
edges when drawing visualizations and I think he gave it a try as well. I
think that can be helpful in Clement's case (back jumps are ignored in the
layout).
Do you remember to have integrated something in Roassal on these lines from
Mathieu's work?

Usman


On Tue, Jan 14, 2014 at 6:20 PM, Alexandre Bergel
<[email protected]>wrote:

> Hi Clément,
>
> Thanks for your nice words.
> Layouts provided by Roassal are well known generic algorithm. Creating a
> new layout is not complicated at all. Just subclass ROLayout and override
> the hook methods. Creating a layout for your need is not easy. Have you
> tried to google for a layout? If you find one, it should be rather easy to
> implement it.
>
> Alexandre
>
>
> On Jan 14, 2014, at 12:50 PM, Clément Bera <[email protected]> wrote:
>
> > Hello Roassal developers,
> >
> > A few time ago Usman Bhatti showed me Roassal. Today I decided to use it
> for my daily work on a project that aims to optimize Pharo's methods.
> >
> > Firstly I am quite impressed by the quality of Roassal, I am currently
> using the Roassal + Mondrian builder and I have a visual representation
> which is very close to what I want after 1 hour of work with the help of
> Usman. Good job guys.
> >
> > Here are 2 examples of what I use:
> >
> > exampleIfTrueIfFalse2
> >       | a b |
> >       a := true.
> >       a
> >               ifTrue: [
> >                       false ifTrue: [ ^ b := 1 ] ifFalse: [ b := 2 ] ]
> >               ifFalse: [
> >                       true ifTrue: [ b := 4 ] ifFalse: [ b := 5 ] ].
> >       ^ b
> >
> > <Screen Shot 2014-01-14 at 4.14.49 PM.png>
> >
> > Here there's one rectangle for each basic block, entrance/exits are
> basic blocks with bigger borders, and borders in red represents the "hot
> path", which the path the execution flow most frequently uses (based on
> native code counters added at some spots in the method by Cogit).
> >
> > Another example:
> >
> > exampleToDo
> >
> >       1 to: 10 do: [ :i |
> >               self kick: i ]
> >
> > <Screen Shot 2014-01-14 at 4.36.47 PM.png>
> >
> > Now I have a few issues with the layout. I am currently using the
> narrowTreeLayout which seems to be the best for my visualisation.
> >
> > issue 1: When branches merges, which is in a tree when a node has 2 or
> more parents, or when I have a #ifTrue:ifFalse:, the child is not well
> aligned horizontally. Here in the first visualisation I showed, BasicBlock
> 5 is below but not in the middle of Basic block 8,7 and 4 (horizontally). I
> put a minimal width for each basic block to make it better but it's still
> not perfect.
> > issue 2: (most important issue) I cannot display back jumps because then
> all the graph is missdrawn, therefore I need to remember where they are
> instead of visualizing them all the time (I cannot display the back jump
> from basic block 3 to basic block 2 in the second representation. In
> addition, the back jump edge, when well displayed, overlaps the basic
> blocks visualizations.
> >
> > Here is an example of what I would like for the edges and basic block
> positions:
> >
> > <Screen Shot 2014-01-14 at 4.27.32 PM.png>
> >
> > As you can see, here exit is in the middle of B2 and B5 horizontally,
> which is not the case in my roassal visualization.
> > In addition, there's a back jump from B6 to B4 that I cannot display (or
> all the visual representation goes nuts). The edge for the back jump does
> not overlap with the basic blocks. In this graph, arrows follow a grid. I
> don't care that arrows are diagonals instead of a mix of horizontal and
> vertical lines but I would like to be able to see nicely the back jumps as
> in this graph.
> >
> > Do you have an idea on what layout/view options I could use with Roassal
> +Mondrian to have a better result ?
> >
> > I tried to create my own layout but after 2 hours I understood this cost
> too much time for my planning (or perhaps I'm just too dumb to do it fast
> :-( ).
> >
> > Anyway, the representation I have now is good enough for me to use it.
> But a better one would be better, especially for back jumps :-).
> >
> > Thanks for any help.
> >
> > Clement
>
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel  http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
>

Reply via email to