From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30531 invoked by alias); 13 Jul 2009 16:54:05 -0000 Received: (qmail 30521 invoked by uid 22791); 13 Jul 2009 16:54:04 -0000 X-SWARE-Spam-Status: No, hits=-1.2 required=5.0 tests=AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from mail.gnu.org (HELO mx10.gnu.org) (199.232.76.166) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 13 Jul 2009 16:53:57 +0000 Received: from mail.nanometrics.ca ([206.191.47.130]:55081) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MQOmm-0007Kz-EL for java@gcc.gnu.org; Mon, 13 Jul 2009 12:53:52 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.nanometrics.ca (Postfix) with ESMTP id EF5F5287583A; Mon, 13 Jul 2009 12:53:18 -0400 (EDT) Received: from mail.nanometrics.ca ([127.0.0.1]) by localhost (mail.nanometrics.ca [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id N2kiAFDHWPCL; Mon, 13 Jul 2009 12:53:18 -0400 (EDT) Received: from [10.11.2.17] (beng-pc.nanometrics.ca [10.11.2.17]) by mail.nanometrics.ca (Postfix) with ESMTP id 604B7287574F; Mon, 13 Jul 2009 12:53:18 -0400 (EDT) Message-ID: <4A5B667E.1030502@nanometrics.ca> Date: Mon, 13 Jul 2009 16:54:00 -0000 From: Ben Gardiner User-Agent: Thunderbird 2.0.0.22 (Windows/20090605) MIME-Version: 1.0 To: abhishek desai CC: java@gcc.gnu.org Subject: Re: Native finalizer. References: <898285d30907130950o220c0cfi5f841d800322d8f8@mail.gmail.com> In-Reply-To: <898285d30907130950o220c0cfi5f841d800322d8f8@mail.gmail.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) X-IsSubscribed: yes Mailing-List: contact java-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: java-owner@gcc.gnu.org X-SW-Source: 2009-07/txt/msg00010.txt.bz2 abhishek desai wrote: > Hi, > > Is there any way to assign a native finalizer method per object to be > called when the object gets garbage collected ? I want to assign this > in the native layer. > I think you'll find an example of this in natReference.cc: void ::java::lang::ref::Reference::create (jobject ref) { // Nothing says you can't make a Reference with a NULL referent. // But there's nothing to do in such a case. referent = reinterpret_cast (ref); copy = referent; if (referent != NULL) { JvSynchronize sync (java::lang::ref::Reference::lock); // `this' is a new Reference object. We register a new // finalizer for pointed-to object and we arrange a special // finalizer for ourselves as well. _Jv_RegisterFinalizer (this, finalize_reference); _Jv_RegisterFinalizer (referent, finalize_referred_to_object); gnu::gcj::RawData **p = &referent; _Jv_GCRegisterDisappearingLink ((jobject *) p); add_to_hash (this); } } ,Ben