Sorry for the late reply.

> 1. what version of javaflow?
> 2. what version of jci?
We're working with the trunk version : 1.0-SNAPSHOT for jci-core and
javaflow

Compiled yourself?

> What OS are you testing on?
>
Gentoo Linux - FS ext3.
Maybe the problem is that first time it reads the original bytecode, so
it enhance it and writes the new bytecode; since the class has changed
the second step will notify it, triggering another transformation, and
so on. We should transform all the classes once and then run the FAM.
I'll do more tests on it.

No, no, no... the files on the filesystem level are never getting changed!
Your eclipse creates the .class files, the fam recognizes the new/modified
file and triggers an event. The .class file is getting read, then transformed
IN MEMORY(!!) and provide to the classloader.

Could you please check out jci trunk and run the testcases on that machine?

> Wait a sec ....you don't want to instrument the JavaInterpreter! But
> enhancing classes at build time is a nice addition.
>
Yes it's true. Sorry for the mistake; we instrument the following classes:
Invoker.class
FormInstance.class
AbstractContinuable.class
VarMap.class

You only need to instrument classes that transitivly or directly call out to
Continuation.suspend() to return from the execution. In theory that means

Invoker ->
  YourFlow.method ->
    FormInstance.show ->
      AbstractContinuable.sendPageAndWait ->
        Continuation.suspend()

But the Invoker class is a special case an be ignored as it not really
contributes
a change to call stack. So the only classes that require instrumentation are

o FormInstance.class
o AbstractContinuable.class

plus your flow of course ;-)

cheers
--
Torsten

Reply via email to