On Feb 21, 2005, at 1:09 AM, Torsten Curdt wrote:

While playing with javaflow, I found out the hard way that the
ContinuationClassLoader
is only transforming java that is in a certain package.  I made this

Sorry, about that ....of course that should be made coonfigurable.

patch to transform
classes that implement Continuable and leave the others alone.  This
seems like the
correct way to do it, but I may be missing consequences of doing it
this way.

Hehe ...have a look into an older revision Just recently I've removed exactly that :)

I am not a big fan of (empty) marker interfaces.
Plus this has a big impact on the behaviour of
the BCEL processing.

If you do a javaClazz.getAllInterfaces()
you need to have a all the depending classes
and interfaces already in the internal BCEL
repository.

While I did some work with ASM I found it
very nice to work with ...and so I wanted
get rid of a direct BCEL dependency. Which
also includes accessing the repository from
javaflow code other than the transformer.

BCEL tries to find and parse unknown classes
by itself ...which does not really work very
well in our case. ...with some effort this
could of course be fixed in BCEL.

...but for now I think rewriting on the
package name is quite a useable alternative
that probably will fit the real world
requirements.

As long it is configurable ;)


Looks like the path of least resistance. The patch I posted
earlier (the second fixed one) was a quick hack I threw together
to test the idea of passing in root packages to do transformation on.
While looking at it , I noticed that if the test case "tests" are moved into a
child package, that the entire section where the non-transformed class is
defined in the current classloader can be removed and these can be delegated to
the parent loader instead. Again at this point I may be missing something. Am I
wrong about this?



On the other hand it might be good to do a full call flow analysis so we can rewrite only those methods that might need it because we are calling suspend.

But this would required the full dependencies
and is quite heavy weight on the load but more
light weight on the execution. Haven't made my
mind up on that yet.

WDYT?

Obviously this would be the best implementation. It seems that it would
be very heavyweight though and require a full recompilation of any dynamic
classes in order to find any calls. Also, couldn't someone get sneaky
and use reflection to call suspend (let's hope not) :-).



cheers -- Torsten


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to