harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexey Varlamov" <alexey.v.varla...@gmail.com>
Subject Re: [vmi] Extending the VMI to allow setting a default portlib
Date Fri, 15 Sep 2006 10:12:05 GMT
+1

2006/9/15, Tim Ellison <t.p.ellison@gmail.com>:
> Geir Magnusson Jr. wrote:
> >
> > Tim Ellison wrote:
> >> At present, the Harmony launcher creates and passes an instance of the
> >> portlib to the VM as it is being created (via an
> >> _org.apache.harmony.vmi.portlib init arg).  This is good because allows
> >> the launcher to define functions used for memory alloc, file IO, etc.
> >> early.
> >>
> >> However, we also need to work with regular applications that are
> >> embedding the JVM, and don't know/want to set up this argument for us.
> >> In such a case the classlib should use a default portlib (and possibly
> >> JVM subsequently if it wants).
> >
> > This seems backwards to me.  Wouldn't we want the VM use the default
> > portlib and give that to the classlib?
>
> VMs that want to use the portlib can do that today anyway (e.g. drlvm
> was creating the portlib itself), so this would allow setting the
> portlib by the classlib where the VM doesn't care.
>
> So today, the launcher creates a portlib and passes it in as a VM
> property, and the VM stores the struct ptr in the VMI.
>
> I'm suggesting that we allow any one of:
>  - VM takes the version passed in via the launcher property
>  - VM creates a default version and puts it in VMI
>  - classlib creates a default version and puts it in VMI
>
> Regards,
> Tim
>
> >> I propose that we retain support for the init arg, but make it optional,
> >> and that we extend the VMI [1] to allow setting the portlib struct where
> >> it has not been previously defined.  The portlib struct can only be
> >> defined once, subsequent attempts to set the portlib would return an
> >> error.  Of course, you can still modify the struct to redefine the
> >> functions it contains.
> >>
> >> The new VMI function would be:
> >>   vmiError(JNICALL * SetPortLibrary)
> >>     (VMInterface * vmi, HyPortLibrary * portlib);
> >>
> >> then the early logic in JNI_OnLoad for luniglob.c [2] would become:
> >>  (a) if vmInterface->GetPortLibrary(vmi) is not NULL then continue
> >>  (b) otherwise create new portlib, and vmi->SetPortlib(vmi, portlib).
> >>
> >> and the corresponding JNI_OnUnload would destroy the portlib iff it had
> >> been created in step (b).
> >>
> >>
> >> [1]
> >> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/native/include/shared/vmi.h?revision=442941&view=markup
> >>
> >> [2]
> >> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/native/luni/shared/luniglob.c?revision=442941&view=markup
> >>
> >>
> >> Comments?
> >>
> >> Regards,
> >> Tim
> >>
> >
> > ---------------------------------------------------------------------
> > Terms of use : http://incubator.apache.org/harmony/mailing.html
> > To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> > For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> >
> >
>
> --
>
> Tim Ellison (t.p.ellison@gmail.com)
> IBM Java technology centre, UK.
>
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>
>

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Mime
View raw message