Request for review- RFE 8005716
Dean Long
dean.long at oracle.com
Thu Mar 7 23:26:13 UTC 2013
On 3/7/2013 10:18 AM, Jeremy Manson wrote:
> Hi guys,
>
> I'm really glad to see you are doing this. We've done something
> similar to good effect within Google (and we'll probably drop our
> similar, internal patch and pick up this patch once it is pushed).
>
> Have you thought about support for having a JNI_OnLoad inside of a
> main executable that *doesn't* have a postfixed _lib? Our
> Google-internal patch treats the main executable as a regular JNI
> library if you execute a special System.loadFromLauncher() function.
> We also do the same thing with JVMTI.
>
Would that require additional changes to the JNI spec? Is there an
advantage to treating it as an unnamed library rather than
a named library (i.e. JNI_OnLoad_main)?
dl
> Nit: The comments that read like this:
> * for example, L, and a native library called L is statically linked
> * with the VM, then the JNI_OnLoad_L function exported by the library
> Should these read "linked with the VM", or "linked with the native
> application loading the VM"?
>
> Jeremy
>
>
> On Wed, Mar 6, 2013 at 8:21 AM, Bob Vandette <bob.vandette at oracle.com
> <mailto:bob.vandette at oracle.com>> wrote:
>
>
> On Mar 5, 2013, at 7:36 PM, Dean Long wrote:
>
> > If JNI_ONLOAD_SYMBOLS contains something like "_JNI_OnLoad at 8" on
> Windows, you can't just
> > turn that into "_JNI_OnLoad at 8_" + <libname>. I think it needs to be
> > "_JNI_OnLoad_" + <libname> + "@8"
> >
> Good catch Dean.
>
>
> > Looks like onLoadSymbols[] is unused in
> Java_java_lang_ClassLoader_00024NativeLibrary_findBuiltinLib().
> >
> > Instead of adding getProcessHandle(), why not add
> JVM_FindBuiltinLibraryEntry() instead?
> > This would make it easier to support table-lookup when runtime
> symbol information is missing or not
> > supported by the platform.
>
> Bill has already factored out the implementation of
> getProcessHandle. Although your
> approach is cleaner, I'm concerned about creating a VM version
> dependency. For a traditional
> JRE that doesn't even require static library support, we'd have to
> make sure to run on a VM that
> support JNI_VERSION_1_8. It looks like the JDK maintains their
> own copy of jni.h. If they didn't
> do that, we would have already gone down that path. The jdk
> sources already contain several
> instances of dlopen, dlysym and the Windows equivalents so I don't
> see a need to add a new
> VM function.
>
> Bob.
>
> >
> > dl
> >
> > On 3/5/2013 3:05 PM, bill.pittore at oracle.com
> <mailto:bill.pittore at oracle.com> wrote:
> >> This request is tied to bugid 8005716 that deals with adding
> support for statically linked JNI libraries.
> >>
> >> The JEP is here: http://openjdk.java.net/jeps/178
> >>
> >> The bug is here:http://bugs.sun.com/view_bug.do?bug_id=8005716
> >>
> >> The webrevs are here:
> >>
> >> http://cr.openjdk.java.net/~bpittore/8005716/jdk-webrev.00/
> <http://cr.openjdk.java.net/%7Ebpittore/8005716/jdk-webrev.00/>
> >> http://cr.openjdk.java.net/~bpittore/8005716/hs-webrev.00/
> <http://cr.openjdk.java.net/%7Ebpittore/8005716/hs-webrev.00/>
> >>
> >> The main piece of functionality is to check for the presence of
> JNI_OnLoad_libname to determine if the library specified by
> 'libname' has been statically linked into the VM. If the symbol is
> found, it is assumed that the library is linked in and will not be
> dynamically loaded.
> >>
> >> thanks,
> >> bill
> >
>
>
More information about the core-libs-dev
mailing list