|
[
Permlink
| « Hide
]
Andrew John Hughes added a comment - 03/Mar/08 01:15 PM
Patch just committed to Classpath. I'm working on refactoring JikesRVM's interface to match.
Committed as revision 14003.
I'm looking into regressions across the board since r14003:
http://jikesrvm.anu.edu.au/cattrack/results/rvmx86lnx32.anu.edu.au/perf/3016/regression_report here is part of an example stack trace: Compiler failure during compilation of < SystemAppCL, LEDU/purdue/cs/bloat/util/Graph$4; >.hasNext ()Z I believe this could be a boot strap problem (ie we don't have VMConstructors for Constructors that are in the boot image) Blergh, this has broken things in a nasty way for the opt compiler. Our previous java.lang.Constructor had a reference to a VM_Method which was the constructor. In the opt compiler we have Constructor classes to build the atomic elements of the optimization plan (I'm not a fan of this structure but it was a necessary evil to get rid of a bigger evil of using .clone that was causing the opt compiler not to be multi-thread-able). I used the oracle methods in the boot image writer, in this case copyKnownClasspathInstanceField at line 2168, to patch up the constructor/VM_Method field of the java.lang.Constructor as it got written out to the boot image. The problem now is that instead of a VM_Method the constructor holds a VMConstructor reference and making VMConstructors within the boot image writer is non-trivial as they don't exist in the boot image writer's java.lang and are also package protected. I may be able to fix these problems but it's going to depend on how nicely reflection wants to play. What's certain at the moment is that we fail pre-commit tests.
I'm somewhat concerned that this changes are going to give a performance regression. In particular the references can't be chased from Constructor to VMConstructor. I'm worried that fixing this problem is going to cause a delay in which we get no regression results and therefore have to freeze code being added. I have a work around but the SVN repository appears to be down.
Ah no, sourceforge decided to expire my password :-/ Fix in r14004. Passes pre-commit tests on IA32 Linux with a 1.6 Sun JDK.
I ran the pre-commit tests before committing and they passed.
VMConstructor is now the equivalent of the old Constructor. It should largely be a case of swapping Constructor for VMConstructor (i.e. it contains the VM_Method). There must have been something funny in your world, the tests would only have passed for the opt compiler if the java.lang.Constructor you were actually testing were the old one.
Maybe, although I tested the new getParameterAnnotations method manually and that worked.
Sorry to cause so many problems. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||