Re: Class load order
Peter Veentjer <[email protected]>
| Newsgroups | gmane.comp.java.objectweb.asm |
|---|---|
| Message-ID | <[email protected]> |
Hi tim and Remi, Thanks for help, it saved me a lot of time. It sounds like a though problem to crack using an agent. But i wanted to add a compiletime instrumenter for quite some time, so perhaps i should pull that issue in the comming release. It also solves another similar problem; subclassing ( that also relies on not yet existing classes) Ps the stm implementation is called multiverse and can be found here: http://multiverse.googlecode.com I hope to do a release at the end of the month. On 12 jan 2010, at 20:32, "Tim Eck" <[email protected]> wrote: > I don't know if there is a magic answer to this quandary > unfortunately. > Giving the lazy class load behavior in most (all?) VMs you can't > really make > any assumptions here, especially for types not directly connected in > the > inheritance chain. > > My quick thought is that you can either produce your instrumentation > to be > dynamic (have both paths) or to eagerly load all referenced types. > Although, > starting more class loads in the path in the path of loadClass() is > a lovely > way to produce deadlocks, and if you're doing this in a > ClassFileTransformer > you'll likely be disappointed since they are not re-entrant. > > You’d have to benchmark it of course but hotspot might be able to ma > ke the > dynamic case plenty fast enough. > >> -----Original Message----- >> From: Peter Veentjer [mailto:[email protected]] >> Sent: Tuesday, January 12, 2010 9:32 AM >> To: [email protected] >> Subject: [asm] Class load order >> >> >> Hi guys, >> >> I'm struggling with an issue that is caused by the order of loading >> classes. >> >> I add additional methods to classes and this works great. If enhanced >> class A is loaded before enhanced class B, B is allowed to call these >> extra methods of A. But if class B is loaded before class A is >> loaded, i get à verify error that i'm calling a non existing method >> on A. >> >> If i manually force loading A before B everything is allright. >> >> I would like to learn an approach to deal with this problem so that >> the instrumentation process gets more predictable. >> >> More info about the transformation. I'm building an stm and i add >> transactions to classes. This is done by creating an extra method >> with >> an extra argument of type transaction. All the original Logic is >> moved >> to this method. The code in the original method is replaced by >> transaction management code that forwards the call inclusive the >> transaction to the added method. >> >> The optimization i want to add is that if transactional methods are >> called from the original code, that the method calls are replaced by >> the version that acceps à transaction. There is no need to go thro >> ugh >> the transaction management and access à threadlocal to get the >> transaction. >
message-footer.txt
(text/plain, 238 B)
-- You receive this message as a subscriber of the [email protected] mailing list. To unsubscribe: mailto:[email protected] For general help: mailto:[email protected]?subject=help OW2 mailing lists service home page: http://www.ow2.org/wws