Return-Path: Delivered-To: apmail-incubator-harmony-dev-archive@www.apache.org Received: (qmail 86968 invoked from network); 24 May 2005 16:05:45 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 24 May 2005 16:05:45 -0000 Received: (qmail 45377 invoked by uid 500); 24 May 2005 16:05:35 -0000 Delivered-To: apmail-incubator-harmony-dev-archive@incubator.apache.org Received: (qmail 45328 invoked by uid 500); 24 May 2005 16:05: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 45315 invoked by uid 99); 24 May 2005 16:05:34 -0000 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received: from ajax-1.apache.org (HELO ajax.apache.org) (192.87.106.226) by apache.org (qpsmtpd/0.28) with ESMTP; Tue, 24 May 2005 09:05:33 -0700 Received: from ajax.apache.org (ajax.apache.org [127.0.0.1]) by ajax.apache.org (Postfix) with ESMTP id E7AFD29A for ; Tue, 24 May 2005 18:05:19 +0200 (CEST) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Apache Wiki To: harmony-dev@incubator.apache.org Date: Tue, 24 May 2005 16:05:19 -0000 Message-ID: <20050524160519.30988.22230@ajax.apache.org> Subject: [Harmony Wiki] Update of "JVM Implementation Ideas" by RodrigoKumpera X-Virus-Checked: Checked X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Dear Wiki user, You have subscribed to a wiki page or wiki category on "Harmony Wiki" for change notification. The following page has been changed by RodrigoKumpera: http://wiki.apache.org/harmony/JVM_Implementation_Ideas ------------------------------------------------------------------------------ * Idea: let objects' primitive fields grow upward from the object head and let reference fields grow downward from the object head. Object pointers pointing to objects themselves containing object references therefore point into the middle of the object's memory area. * Advantages: all object references are contiguous, which makes following these references during garbage collection, etc. easier and simpler. - * Disadvantages: object head (lockword, vtable pointer, etc) is not necessarily at the beginning of an object's memory area, which can mean extra work to find the head when iterating through the heap e.g. during mark/sweep GC. + * Disadvantages: object head (lockword, vtable pointer, etc) is not necessarily at the beginning of an object's memory area, which can mean extra work to find the head when iterating through the heap e.g. during mark/sweep GC. Etiene notes that there is a performance degradation, mainly due to poor locality of this layout. * Origin: SableVM === Spinless thin-locks === @@ -37, +37 @@ * Idea: threads must periodically check whether they need to do something. Typically this is done at backward branches. To make this check efficient, have the thread read a byte from a well-known page of mmap()'d memory. When another thread wants the thread to check-in, it simply maps that page unreadable. The target thread gets a signal, it does whatever check required, the page is re-mapped readable, and the target thread returns from the signal and continues on its merry way. * Advantages: efficient way to enforce checking in - * Disadvantages: requires mmap() and signals + * Disadvantages: requires mmap() and signals, signal latency can be an issue if the notification delay is critical, eg gc safepoints (see the paper from some Sun guys about this) * Origin: unknown/multiple; implemented in lots of places. + + === Inline threaded interpreter === + + * Idea: similar to a direct threaded interpreter, but in the preparation step copy the code segment of some opcodes instead of pointer + data. + * Adavantages: faster interpreter. + * Disavantages: deciding with code segments can be inlined is a non-trivial, non-portable issue. A conservative aproach will result in worse performance. + * Origin: SableVM +