Re: [Pharo-project] [Preview] Branch test coverage analysis tool for Pharo 3.0 :)

2013-04-09 Thread Alexandre Bergel
 I just implemented something to this effect for our project at Cadence.  It 
 works by
 - an assembler/disassebler that can convert a method into a sequence of 
 messages, one for each of its bytecodes and back
 - using the disassembler to obtain labels which occur at the start of each 
 basic block
 - replacing the first bytecode in every basic block with an illegal bytecode, 
 remembering the pc and its correct bytecode in the method properties
 - implementing a method on MethodContext which receives the unknowBytecode 
 message sent by the VM when it encounters an illegal bytecode
 - the method replaces the illegal bytecode with the correct bytecode, 
 removing the entry from properties, and continues
 
 The JIT refuses to compile methods that contain illegal bytecodes so this 
 runs at interpreter speed until a method no longer contains illegal bytecodes 
 (has been completely covered).  But the illegal bytecode is executed at most 
 once for each basic block, since it is replaced immediately it is executed.  
 The information remaining in properties is that of the basic blocks that have 
 not been executed.
  
 In the Squeak/Pharo bytecode set there are three unknown bytecodes, 126, 127 
  139.  I have a Monticello package and tests if you're interested.

Yes please. I am interested!

Alexandre

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






Re: [Pharo-project] [Preview] Branch test coverage analysis tool for Pharo 3.0 :)

2013-04-08 Thread Goubier Thierry

Le 06/04/2013 12:00, Clément Bera a écrit :

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.


Jejak has allways worked by AST modifications. It's just that, at a 
point, it recompiled the code with Opal to try to get the same behavior 
that its original tracer under visualworks had, i.e. the source code 
modifications are invisible to the user... It also played with the 
bytecode because this had huge performance impacts under VisualWorks, 
bringing traces with a very low overhead (sadly, the same trick doesn't 
work with Pharo :().



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.


The current version of Jejak works in the following way :
1- get AST, store original source code
2- search and replace in AST for what you want to trace
3- generate source with traces and compile
4- Wait for it to run... collect trace events on the way.
5- revert to original sources, recompile

It's a bit faster than interpreting the AST; it's a bit more invasive as 
well, but you can change it to record less events if you want.


It also works for tracing difficult things such as core Morphic, 
KeyMapping and Display methods.


Thierry



2013/4/6 Frank Shearar frank.shea...@gmail.com
mailto:frank.shea...@gmail.com

On 6 April 2013 07:47, Stéphane Ducasse stephane.duca...@inria.fr
mailto: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/



--
Thierry Goubier
CEA list
Laboratoire des Fondations des Systèmes Temps Réel Embarqués
91191 Gif sur Yvette Cedex
France
Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95



Re: [Pharo-project] [Preview] Branch test coverage analysis tool for Pharo 3.0 :)

2013-04-08 Thread Alexandre Bergel
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
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.





Re: [Pharo-project] [Preview] Branch test coverage analysis tool for Pharo 3.0 :)

2013-04-08 Thread Clément Bera
Well my stuff is much more basic I just wanted to implement a prototype to
show what you could do with the AST-interpreter.

Basically I overrided 'interpretNode:' of the AST-interpreter by :
interpretNode: aNode
 aNode mark.
 super interpretNode: aNode

And then at the end I have the result expected.


2013/4/8 Alexandre Bergel alexandre.ber...@me.com

 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
 ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.


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






-- 
Clément Béra
Mate Virtual Machine Engineer
Bâtiment B 40, avenue Halley 59650 *Villeneuve d'Ascq*


Re: [Pharo-project] [Preview] Branch test coverage analysis tool for Pharo 3.0 :)

2013-04-08 Thread Eliot Miranda
On Mon, Apr 8, 2013 at 9:32 AM, Alexandre Bergel alexandre.ber...@me.comwrote:

 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.


I just implemented something to this effect for our project at Cadence.  It
works by
- an assembler/disassebler that can convert a method into a sequence of
messages, one for each of its bytecodes and back
- using the disassembler to obtain labels which occur at the start of each
basic block
- replacing the first bytecode in every basic block with an illegal
bytecode, remembering the pc and its correct bytecode in the method
properties
- implementing a method on MethodContext which receives the unknowBytecode
message sent by the VM when it encounters an illegal bytecode
- the method replaces the illegal bytecode with the correct bytecode,
removing the entry from properties, and continues

The JIT refuses to compile methods that contain illegal bytecodes so this
runs at interpreter speed until a method no longer contains illegal
bytecodes (has been completely covered).  But the illegal bytecode is
executed at most once for each basic block, since it is replaced
immediately it is executed.  The information remaining in properties is
that of the basic blocks that have not been executed.

In the Squeak/Pharo bytecode set there are three unknown bytecodes, 126,
127  139.  I have a Monticello package and tests if you're interested.



 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
 

Re: [Pharo-project] [Preview] Branch test coverage analysis tool for Pharo 3.0 :)

2013-04-07 Thread Clément Bera
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*


Re: [Pharo-project] [Preview] Branch test coverage analysis tool for Pharo 3.0 :)

2013-04-06 Thread Camillo Bruni
cool work!

On 2013-04-06, at 08: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. 
 
 With the AST navigation Gisela just started to work on we will have a really 
 cool system.
 
 Stef
 
 image.png
 




Re: [Pharo-project] [Preview] Branch test coverage analysis tool for Pharo 3.0 :)

2013-04-06 Thread Frank Shearar
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


Re: [Pharo-project] [Preview] Branch test coverage analysis tool for Pharo 3.0 :)

2013-04-06 Thread Clément Bera
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*


Re: [Pharo-project] [Preview] Branch test coverage analysis tool for Pharo 3.0 :)

2013-04-06 Thread Frank Shearar
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



Re: [Pharo-project] [Preview] Branch test coverage analysis tool for Pharo 3.0 :)

2013-04-06 Thread Clément Bera
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*


Re: [Pharo-project] [Preview] Branch test coverage analysis tool for Pharo 3.0 :)

2013-04-06 Thread Alexandre Bergel
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
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.