Alan, Rémi,

Thanks for the review.   The revised webrev is at:
  http://cr.openjdk.java.net/~mchung/6612680/jdk-webrev.01/
  http://cr.openjdk.java.net/~mchung/6612680/hotspot-webrev.01/

Alan Bateman wrote:
Good to see this dependency going away. A couple of comments:

- In thread.cpp, do you need to check if klass is NULL (sun.jkernel.DownloadManager not present).


Yes, we need that so that jkernel VM can run with other JDKs with no DownloadManager. Thanks for catching it.

- In thread.cpp, you set the hook after the system classes have been initialized. Do I have this right? (looks like you double check in setHook). You might want to check with the deployment folks to make sure that they understand the implications of this - for example it might have change the contents of the core bundle.

Yes. I set the hook after the system classes have been initialized. I added the check in the setHook() method to catch if a new hook would be added in the future before the system is initialized.

- Do these changes mean we can remove sun.misc.VM.isBootedKernelVM?


I clean that up. We no longer need this method that was put as a workaround.

- Is the removal of CLASSDESTDIR from make/sun/jkernel/Makefile related or just clean-up (as it doesn't seem to be used)? Minor nit but you've add a blank line at line 46.

This is to fix the jdk and deploy build failure when we eliminate the dependency to jkernel. If the sun.jkernel.* classes were built in the tmp directory, javah fail to find the sun.jkernel.* classes to generate the .h files. Usually we only set CLASSDESTDIR to TEMPDIR when we want to package classes in a different jar file. This is not the case for sun.jkernel.* since they are included in rt.jar and that's a bug. I guess why it worked in the past is because sun.jkernel.* get compiled when compiling the system classes that reference DownloadManager and the sun.jkernel.* classes were put in the usual class destination directory.


- ZipEntry: the idea that a class loader hook overrides the zip file time is a bit strange. I see you have a few FIXME comments in the code to revisit but maybe for this push it might be neater to just have BootClassLoaderHook define a isCurrentThreadPrefetching or some such method that returns a boolean to indicate if the current thread is fetching and if so, set it to some pre-defined value (I don't know if there is any significance to the value of KERNEL_STATIC_MODTIME).

- In ICC_Profile would it be neater to do:
 BootClassLoaderHook hook = BootClassLoaderHook.getHook();
 if (hook != null)
   hook.prefetchFile(...)

- Minor nit but you've added a few blank lines to DownloadManager.

- I agree with Rémi comment that DownloadManager.instance doesn't seem to be needed.

- In BootClassLoaderHook's class description they may be a typo - I think you meant to say "into the bootstrap class loader". Also, I assume you meant to say "In other JDK builds ...".

Otherwise, I think this is okay. I'll do another pass on it today as I know you want to get this over the finish line by tonight.


I clean up the code per your suggestion and ready to push the fix.

Mandy
-Alan.













Reply via email to