Return-Path: Delivered-To: apmail-incubator-harmony-dev-archive@www.apache.org Received: (qmail 42510 invoked from network); 18 Sep 2006 10:04:53 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 18 Sep 2006 10:04:53 -0000 Received: (qmail 63308 invoked by uid 500); 18 Sep 2006 10:04:49 -0000 Delivered-To: apmail-incubator-harmony-dev-archive@incubator.apache.org Received: (qmail 63265 invoked by uid 500); 18 Sep 2006 10:04:49 -0000 Mailing-List: contact harmony-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: harmony-dev@incubator.apache.org Delivered-To: mailing list harmony-dev@incubator.apache.org Received: (qmail 63254 invoked by uid 99); 18 Sep 2006 10:04:49 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 18 Sep 2006 03:04:49 -0700 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: domain of oliver.deakin@googlemail.com designates 64.233.182.190 as permitted sender) Received: from [64.233.182.190] (HELO nf-out-0910.google.com) (64.233.182.190) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 18 Sep 2006 03:04:38 -0700 Received: by nf-out-0910.google.com with SMTP id x4so2962909nfb for ; Mon, 18 Sep 2006 03:03:51 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=googlemail.com; h=received:message-id:date:from:user-agent:mime-version:to:subject:references:in-reply-to:content-type:content-transfer-encoding; b=mwerLobpdR3SncV/9gUVBWfCge0OcUigNQIzxiNlX42TeGpsPEJiCMNgTHNazt9cgx3JSNOPCopkF7lYestm3MYnBt7DLCtB/qOAIlHHuvc4Im6dopFBmddnjmraxcXl1HIBhHWyLnK/KdmvKdlxd2zOjJZWfB3adQy0QnvP/g0= Received: by 10.78.201.2 with SMTP id y2mr3140902huf; Mon, 18 Sep 2006 03:03:51 -0700 (PDT) Received: from ?9.20.183.162? ( [195.212.29.83]) by mx.gmail.com with ESMTP id 8sm9621029hug.2006.09.18.03.03.50; Mon, 18 Sep 2006 03:03:50 -0700 (PDT) Message-ID: <450E6ED5.306@googlemail.com> Date: Mon, 18 Sep 2006 11:03:01 +0100 From: Oliver Deakin User-Agent: Thunderbird 1.5.0.7 (Windows/20060909) MIME-Version: 1.0 To: harmony-dev@incubator.apache.org Subject: Re: [vmi] Extending the VMI to allow setting a default portlib References: <45094B8D.8030301@gmail.com> <4509862B.30303@pobox.com> <450A7B41.2010001@gmail.com> In-Reply-To: <450A7B41.2010001@gmail.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Tim Ellison wrote: > 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 > This makes sense to me - it gives the most flexibility for when the port library is created. If the launcher doesnt do it, fall back to the VM. If the VM doesnt do it, fall back to the classlib default. It seems sensible to have a failsafe in place, even if we never have to use it. Regards, Oliver > 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 >> >> >> > > -- Oliver Deakin IBM United Kingdom Limited --------------------------------------------------------------------- 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