What I had in mind, is something like:
-=-=-=-=-=-=-=-=-=-=
myMethodWithBranch
        self foo.
        v 
                ifTrue: [ ... ]
                ifFalse: [ ... ]
-=-=-=-=-=-=-=-=-=-=

-=-=-=-=-=-=-=-=-=-=
myMethodWithBranch
        self foo.
        v 
                ifTrue: [ self checkPoint: 1. ... ]
                ifFalse: [ self checkPoint: 2. ... ].
        self checkPoint: 3.
-=-=-=-=-=-=-=-=-=-=

All these checkpoint will be inserted by manipulating the bytecode. You can 
then optimize a bit by removing checkpoints that have been reached.
The method #checkPoint: could then use some attributes to the CompiledMethod.

This is a common technique when (i) the VM does not give you what you need and 
(ii) when you do not want to change the VM.

This is something I wanted to do for year in Hapao... 

Alexandre



On Apr 7, 2013, at 3:21 AM, Clément Bera <bera.clem...@gmail.com> wrote:

> I don't know. The main problem is that the AST-interpreter is not fast 
> enough. The best solution for speed would be to improve it as they do in this 
> paper : http://dl.acm.org/citation.cfm?id=2384587 (their ast-interpreter is 
> faster than a byte code interpreter).
> 
> Another solution would be to execute some method with the vm and other one 
> with the ast-interpreter, but it is quite some work.
> 
> 
> 2013/4/7 Alexandre Bergel <alexandre.ber...@me.com>
> Would it be possible to annotate the method with some checkpoints within the 
> method? This should be fast enough I guess.
> 
> Alexandre
> 
> 
> On Apr 6, 2013, at 10:35 AM, Clément Bera <bera.clem...@gmail.com> wrote:
> 
> > This is exactly that. The tree coverage tool is a subclass of 
> > AST-interpreter, which adding to the interpretation marks the nodes. And 
> > then I use this marking to color the source code. And I use as you said RB 
> > ast.
> >
> > This is why I implemented it in a few hours, I had already an 
> > AST-interpreter, so I've just created a quick subclass and a spec UI.
> >
> >
> > 2013/4/6 Frank Shearar <frank.shea...@gmail.com>
> > So if you don't mind me being very loose with terminology, you
> > interpret (RB) ASTs, and the act of interpreting marks the nodes in
> > these ASTs, which you can then use to colour source?
> >
> > frank
> >
> > On 6 April 2013 11:00, Clément Bera <bera.clem...@gmail.com> wrote:
> > > Actually, it is quite different than Jejak.
> > >
> > > Implementation wise, Jejak used Opal so I guess it relies on bytecode
> > > modification to do its analysis where my tool relies on ast annotations.
> > >
> > > This implies some difference in features. It seems that Jejak record all
> > > calls, all values and all assignments in a method (which is byte code 
> > > level
> > > feature), whereas I record for each ast node if it was interpreted or not
> > > (which is ast level feature). I guess there would be a little difference 
> > > in
> > > the use cases.
> > >
> > >
> > > 2013/4/6 Frank Shearar <frank.shea...@gmail.com>
> > >>
> > >> On 6 April 2013 07:47, Stéphane Ducasse <stephane.duca...@inria.fr> 
> > >> wrote:
> > >>>
> > >>> Clement built in a couple of hours the following nice branch
> > >>> analysecoverage tools :)
> > >>> It is dead slow but cool.
> > >>
> > >>
> > >> By "branch coverage tool" do you mean Jejak?
> > >>
> > >> frank
> > >>
> > >>
> > >
> > >
> > >
> > > --
> > > Clément Béra
> > > Mate Virtual Machine Engineer
> > > Bâtiment B 40, avenue Halley 59650 Villeneuve d'Ascq
> >
> >
> >
> >
> > --
> > Clément Béra
> > Mate Virtual Machine Engineer
> > Bâtiment B 40, avenue Halley 59650 Villeneuve d'Ascq
> 
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel  http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
> 
> 
> 
> 
> 
> 
> 
> -- 
> Clément Béra
> Mate Virtual Machine Engineer
> Bâtiment B 40, avenue Halley 59650 Villeneuve d'Ascq

-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.



Reply via email to