Return-Path: Delivered-To: apmail-incubator-harmony-dev-archive@www.apache.org Received: (qmail 304 invoked from network); 31 Aug 2005 18:31:41 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 31 Aug 2005 18:31:41 -0000 Received: (qmail 19179 invoked by uid 500); 31 Aug 2005 18:31:36 -0000 Delivered-To: apmail-incubator-harmony-dev-archive@incubator.apache.org Received: (qmail 19127 invoked by uid 500); 31 Aug 2005 18:31:35 -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 19114 invoked by uid 99); 31 Aug 2005 18:31:35 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 31 Aug 2005 11:31:35 -0700 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: domain of tromey@redhat.com designates 66.187.233.31 as permitted sender) Received: from [66.187.233.31] (HELO mx1.redhat.com) (66.187.233.31) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 31 Aug 2005 11:31:49 -0700 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11/8.12.11) with ESMTP id j7VIVWlo006812 for ; Wed, 31 Aug 2005 14:31:32 -0400 Received: from pobox.toronto.redhat.com (pobox.toronto.redhat.com [172.16.14.4]) by int-mx1.corp.redhat.com (8.11.6/8.11.6) with ESMTP id j7VIVUV19267 for ; Wed, 31 Aug 2005 14:31:32 -0400 Received: from touchme.toronto.redhat.com (IDENT:postfix@touchme.toronto.redhat.com [172.16.14.9]) by pobox.toronto.redhat.com (8.12.8/8.12.8) with ESMTP id j7VIVTNB023557 for ; Wed, 31 Aug 2005 14:31:29 -0400 Received: from vpn50-47.rdu.redhat.com (vpn50-47.rdu.redhat.com [172.16.50.47]) by touchme.toronto.redhat.com (Postfix) with ESMTP id 61E0C800224 for ; Wed, 31 Aug 2005 14:31:28 -0400 (EDT) Subject: Re: [arch] Modular JVM component diagram From: Tom Tromey To: harmony-dev@incubator.apache.org In-Reply-To: <9623c9a505083005342b4a5ac@mail.gmail.com> References: <20050819000417.86751.qmail@web41202.mail.yahoo.com> <4305871C.5020200@gatewide.com> <20050819091045.GC27358@dozer> <43065A13.7050006@gatewide.com> <9623c9a50508281806724af91b@mail.gmail.com> <9623c9a505083005342b4a5ac@mail.gmail.com> Content-Type: text/plain Date: Wed, 31 Aug 2005 11:23:28 -0700 Message-Id: <1125512609.3392.7.camel@mopsy> Mime-Version: 1.0 X-Mailer: Evolution 2.2.2 (2.2.2-5) 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 On Tue, 2005-08-30 at 20:34 +0800, Xiao-Feng Li wrote: > Hi, Ron, I think your concern is valid. We fully understand POSIX has > been and is being used widely. That's why we want to have a discussion > here. APR does have some features a JVM may need in all platforms, > such as atomic operations, which are lacked in POSIX. And APR is > available on a couple of different platforms. Yes, POSIX is availabe > on some non-UNIX systems too, e.g., one can use POSIX on Windows > through Windows Services for UNIX or Cygwin. > > I'd like to hear how other people think. Folks on the mailing list, comments? Using APR makes sense. In my opinion it should be the way Harmony is initially ported. People who want to do a new port can then port APR. (Or, perhaps they could strip out the APR-using code from Harmony and do a "raw" port.) Experience with libgcj suggests that OS porting layer has few tricky parts[1]. The bulk of the code -- file and network I/O, for instance -- is simple and porting it doesn't represent a major effort. I think our "posix" port (includes linux, solaris, macos x) is about 4 KLOC. The Windows-specific code is about 5 KLOC. That's not much. Tom [1] Turning signals into exceptions is compiler, OS, and chip dependent. This qualifies as "tricky" :-). Another occasionally tricky thing is interfacing between the GC and the native thread system -- finding stack bounds, noticing thread creation, etc. I would guess that APR doesn't yet have support for these kinds of things, though I have not looked. Note that these are not "pure" OS-dependent areas but are also impacted by decisions in other parts of the VM: exception handling approach, null pointer detection approach, GC approach, etc.