On 6/18/2015 10:59 AM, Karen Kinnear wrote:
Code review for the hotspot component:

Thank you for the cleanups to jvm.cpp to make them JVM_ENTRY and fix 
thread_state.

If you pass the testing and Lois ok's the hotspot code, then I am ok with 
checking in the
hotspot code as is.

I have reviewed and am okay with checking in the hotspot code as is once testing is complete. One comment inlined below.
Lois


Comments for next round of changes:

1. mutexLocker.cpp - new lock should say "false" not "true" for whether the 
VMThread should block

2. os.hpp
restartable_read_at is added but I don't see it used

3. imageFile.cpp
We've been asked to always used the counted form of strcpy - i.e. strncpy  to 
ensure we never
have buffer overruns. e.g. 311, 437, ...

4. jvm.cpp - seems odd that the interface would need to know if the resource 
was compressed
or uncompressed. In the next round of API design, seems like the java code 
would pass in
the uncompressedAddress and let the internals handle buffering the compressed 
data and
doing the uncompressing transparently.

5. imageDecompressor.hpp
get_decompressor
I think you've mixed your exception handling approaches. You have a CHECK_NULL 
for new_symbol
call, which means it will throw an exception if it returns NULL. Then you check 
for HAS_PENDING_EXCEPTION
which is the logic you would use if did not have the CHECK, but then you throw 
the exception away.
If you want to throw an exception from get_decompressor you should pass in the 
last argument as TRAPS macro
which will give you the THREAD.

see macros in exceptions.hpp

So the way it is right now, you will throw an exception.

You have a choice - you can throw an exception
   pass in TRAPS to get_decompressor, keep the CHECK_NULL and remove the if 
HAS_PENDING_EXCEPTION.
   - this is the recommended approach

Alternative - change CHECK_NULL to pass in THREAD. Keep the rest. Given you are 
planning to take this
out of the vm - this would make more sense.

Whatever mechanism you choose to use in get_decompressor, please also use for image_decompressor_init( )/createSymbol() within imageDecompressor.cpp as well.


thanks,
Karen



On Jun 17, 2015, at 8:08 PM, Jim Laskey (Oracle) wrote:

https://bugs.openjdk.java.net/browse/JDK-8080511

This is an long overdue refresh of the jimage support in the JDK9-dev repo.  
This includes native support for reading jimage files, improved jrt-fs (java 
runtime file system) support for retrieving modules and packages from the 
runtime, and improved performance for langtools in the presence of jrt-fs.

http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-top 
<http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-top>
http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-jdk 
<http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-jdk>
http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-hotspot 
<http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-hotspot>
http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-langtools 
<http://cr.openjdk.java.net/~jlaskey/hs-rt-jimage/webrev-langtools>


Details:

- jrt-fs provides access, via the nio FileSystem API, to the classes in a 
.jimage file, organized by module or by package.
- Shared code for jimage support converted to native.  Currently residing in hotspot, 
but will migrate to it’s own jdk library 
https://bugs.openjdk.java.net/browse/JDK-8087181 
<https://bugs.openjdk.java.net/browse/JDK-8087181>
- A new archive abstraction for class/resource sources.
- java based implementation layer for jimage reading to allow backport to JDK8 
(jrt-fs.jar - IDE support.)
- JNI support for jimage into hotspot.
- White box tests written to exercise native jimage support.


Reply via email to