From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2340 invoked by alias); 10 Jun 2004 16:42:48 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 2318 invoked from network); 10 Jun 2004 16:42:47 -0000 Received: from unknown (207.174.178.92) by sourceware.org with QMTP; 10 Jun 2004 16:42:47 -0000 Received: (qmail 31317 invoked from network); 10 Jun 2004 16:49:07 -0000 Received: from tf0089.peakpeak.com (HELO fleche.redhat.com) ([204.144.239.89]) (envelope-sender ) by email2.peakpeak.com (qmail-ldap-1.03) with SMTP for ; 10 Jun 2004 16:49:07 -0000 Received: by fleche.redhat.com (Postfix, from userid 1000) id 3C96B4F80C8; Thu, 10 Jun 2004 10:30:45 -0600 (MDT) To: Daniel Jacobowitz Cc: Andrew Haley , java@gcc.gnu.org, gdb@sources.redhat.com Subject: Re: Binary Compatibility: debug info for compiled Java programs References: <16582.65277.81118.189889@cuddles.cambridge.redhat.com> <20040609130859.GA7514@nevyn.them.org> <16583.3516.604885.805420@cuddles.cambridge.redhat.com> <20040609132951.GA8017@nevyn.them.org> <16583.4773.74100.735457@cuddles.cambridge.redhat.com> <20040609221710.GA16922@nevyn.them.org> <87ise0bc8y.fsf@fleche.redhat.com> <20040610163718.GA24803@nevyn.them.org> From: Tom Tromey Reply-To: tromey@redhat.com X-Attribution: Tom Date: Thu, 10 Jun 2004 16:42:00 -0000 In-Reply-To: <20040610163718.GA24803@nevyn.them.org> Message-ID: <874qpjbcju.fsf@fleche.redhat.com> User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3.50 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-SW-Source: 2004-06/txt/msg00095.txt.bz2 >>>>> "Daniel" == Daniel Jacobowitz writes: >> In our BC ABI, we add a new level of indirection. So, a field lookup >> isn't just *(object+offset), but instead *(object+otable[index]), >> where the otable ("offset table") is computed at class initialization >> time. Daniel> I still don't see how this mechanism implements the above principle, Daniel> i.e. converting symbolic field names to offsets; is the otable Daniel> associated with the object doing the access or with the objet defining Daniel> the class? The otable is associated with the class that is doing the access. So if the implementation of class Foo refers to a method C.m(), then the otable for Foo will have an entry "C.m" (with type signature, and maybe some other stuff). The symbols in the otable (and actually I've been using shorthand here, we have a second "atable" for addresses as well -- same difference though) are resolved when the class ("Foo") is linked. In Java this is done at runtime, the JVM Spec (and perhaps the JLS) has information on the precise steps involved in class preparation and initialization. Tom