From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dmitry Antipov Newsgroups: gmane.emacs.devel Subject: Re: Reachable killed buffers Date: Tue, 11 Sep 2012 09:25:29 +0400 Message-ID: <504ECB49.4050509@yandex.ru> References: <504848D0.4020908@yandex.ru> <5048D826.3040103@yandex.ru> <5049C400.8070400@gmx.at> <504DB6DD.9030002@yandex.ru> <504E042E.5040100@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------070904090803050208060803" X-Trace: ger.gmane.org 1347341139 15027 80.91.229.3 (11 Sep 2012 05:25:39 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 11 Sep 2012 05:25:39 +0000 (UTC) Cc: martin rudalics , emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Sep 11 07:25:41 2012 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1TBIyi-0006iS-LS for ged-emacs-devel@m.gmane.org; Tue, 11 Sep 2012 07:25:40 +0200 Original-Received: from localhost ([::1]:37995 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TBIyf-0000Iw-2H for ged-emacs-devel@m.gmane.org; Tue, 11 Sep 2012 01:25:37 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:54852) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TBIyb-0000Ig-Oy for emacs-devel@gnu.org; Tue, 11 Sep 2012 01:25:34 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TBIya-0005g3-62 for emacs-devel@gnu.org; Tue, 11 Sep 2012 01:25:33 -0400 Original-Received: from forward13.mail.yandex.net ([95.108.130.120]:55388) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TBIyZ-0005fz-LO for emacs-devel@gnu.org; Tue, 11 Sep 2012 01:25:32 -0400 Original-Received: from smtp13.mail.yandex.net (smtp13.mail.yandex.net [95.108.130.68]) by forward13.mail.yandex.net (Yandex) with ESMTP id DE51114191E; Tue, 11 Sep 2012 09:25:29 +0400 (MSK) Original-Received: from smtp13.mail.yandex.net (localhost [127.0.0.1]) by smtp13.mail.yandex.net (Yandex) with ESMTP id AAEEFE40656; Tue, 11 Sep 2012 09:25:29 +0400 (MSK) Original-Received: from unknown (unknown [37.139.80.10]) by smtp13.mail.yandex.net (nwsmtp/Yandex) with ESMTP id PTWSLRh1-PTW4w9g5; Tue, 11 Sep 2012 09:25:29 +0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1347341129; bh=Ob82KjAANgvjSrk3bveonG8R83RIPHul4Iw/s7v9N58=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject: References:In-Reply-To:Content-Type; b=Srs0YxD5YbgoBxFBJC7b4MrNAF42ShYMEYEVKhQ9mLcEfGkuKoIxqZ7CqU8PpN66Z +VhWkcR2J2vfoENDw9gkHPI/GMtBiGL3rIWzaz24hxrScCC+h5dnOZvgmB9sKnFV/u OZZe9Fgmko9A0jYuBMM+pQcgXqMq7VbgCDLMVU1U= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120824 Thunderbird/15.0 In-Reply-To: X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 95.108.130.120 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:153232 Archived-At: This is a multi-part message in MIME format. --------------070904090803050208060803 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 09/11/2012 12:15 AM, Stefan Monnier wrote: > That sounds about right, yes. Tho, I'd introduce a BUFFER_LIVE_P macro > to make the code more clear. It's done in 109976. Dead frame's buffer_list slot is another place to hold killed buffers for a while (for live frames, killed buffers are filtered out by store_frame_param), so the similar removal of killed buffers looks reasonable for dead frames too. > Also, I'm not 100% sure the specific code you show is safe, because > modifying the graph of objects during GC is always risky. > > I'm fairly confident that the call to window_drain_buffer_lists is safe, > but for swap_in_global_binding is seems a bit less obvious since it > might modify objects we may have marked already, but I think it's OK > as well. IIUC both BLVs and frame/window buffer lists aren't shared. So, marking traversal which sees an owner symbol/frame/window for the first time sees these objects for the first time too (thus mark them correctly). And even we change buffer list or BLV so the marked object becomes unreachable, we just create some floating garbage which survives current GC but will be reclaimed during the next one. > I don't see any reason to remove the previous comment since the change > doesn't affect its validity. IIUC this comment is partially invalid since lisp.h comment says that Lisp_Buffer_Local_Value can't be forwarded to buffer or kboard object (and this is really so). Dmitry --------------070904090803050208060803 Content-Type: text/plain; charset=UTF-8; name="discard_killed_buffers.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="discard_killed_buffers.patch" PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9hbGxvYy5jJwotLS0gc3JjL2FsbG9jLmMJMjAxMi0w OS0xMSAwNDoyMjowMyArMDAwMAorKysgc3JjL2FsbG9jLmMJMjAxMi0wOS0xMSAwNToxNzow NSArMDAwMApAQCAtNTg2NSw2ICs1ODY1LDMyIEBACiAgICAgbWFya19idWZmZXIgKGJ1ZmZl ci0+YmFzZV9idWZmZXIpOwogfQogCisvKiBSZW1vdmUga2lsbGVkIGJ1ZmZlcnMgb3IgaXRl bXMgd2hvc2UgY2FyIGlzIGEga2lsbGVkIGJ1ZmZlcgorICAgZnJvbSBMSVNUIGFuZCByZXR1 cm4gY2hhbmdlZCBMSVNULiAgQ2FsbGVkIGR1cmluZyBHQy4gICovCisKK3N0YXRpYyBpbmxp bmUgTGlzcF9PYmplY3QKK2Rpc2NhcmRfa2lsbGVkX2J1ZmZlcnMgKExpc3BfT2JqZWN0IGxp c3QpCit7CisgIExpc3BfT2JqZWN0IHRhaWwsIHByZXYsIHRlbTsKKworICBmb3IgKHRhaWwg PSBsaXN0LCBwcmV2ID0gUW5pbDsgQ09OU1AgKHRhaWwpOyB0YWlsID0gWENEUiAodGFpbCkp CisgICAgeworICAgICAgdGVtID0gWENBUiAodGFpbCk7CisgICAgICBpZiAoQ09OU1AgKHRl bSkpCisJdGVtID0gWENBUiAodGVtKTsKKyAgICAgIGlmIChCVUZGRVJQICh0ZW0pICYmICFC VUZGRVJfTElWRV9QIChYQlVGRkVSICh0ZW0pKSkKKwl7CisJICBpZiAoTklMUCAocHJldikp CisJICAgIGxpc3QgPSBYQ0RSICh0YWlsKTsKKwkgIGVsc2UKKwkgICAgWFNFVENEUiAocHJl diwgWENEUiAodGFpbCkpOworCX0KKyAgICAgIGVsc2UKKwlwcmV2ID0gdGFpbDsKKyAgICB9 CisgIHJldHVybiBsaXN0OworfQorCiAvKiBEZXRlcm1pbmUgdHlwZSBvZiBnZW5lcmljIExp c3BfT2JqZWN0IGFuZCBtYXJrIGl0IGFjY29yZGluZ2x5LiAgKi8KIAogdm9pZApAQCAtNjAw MSwyMCArNjAyNyw0MSBAQAogCSAgICBicmVhazsKIAogCSAgY2FzZSBQVkVDX0ZSQU1FOgot CSAgICBtYXJrX3ZlY3Rvcmxpa2UgKHB0cik7Ci0JICAgIG1hcmtfZmFjZV9jYWNoZSAoKChz dHJ1Y3QgZnJhbWUgKikgcHRyKS0+ZmFjZV9jYWNoZSk7CisJICAgIHsKKwkgICAgICBzdHJ1 Y3QgZnJhbWUgKmYgPSAoc3RydWN0IGZyYW1lICopIHB0cjsKKworCSAgICAgIC8qIEZvciBs aXZlIGZyYW1lcywga2lsbGVkIGJ1ZmZlcnMgYXJlIGZpbHRlcmVkIG91dCBieQorCQkgc3Rv cmVfZnJhbWVfcGFyYW0uICBGb3IgZGVhZCBmcmFtZXMsIHdlIGRvIGl0IGhlcmUgaW4KKwkJ IGF0dGVtcHQgdG8gaGVscCBHQyB0byByZWNsYWltIGtpbGxlZCBidWZmZXJzIGZhc3Rlci4g ICovCisJICAgICAgaWYgKCFGUkFNRV9MSVZFX1AgKGYpKQorCQlmc2V0X2J1ZmZlcl9saXN0 IChmLCBkaXNjYXJkX2tpbGxlZF9idWZmZXJzIChmLT5idWZmZXJfbGlzdCkpOworCisJICAg ICAgbWFya192ZWN0b3JsaWtlIChwdHIpOworCSAgICAgIG1hcmtfZmFjZV9jYWNoZSAoZi0+ ZmFjZV9jYWNoZSk7CisJICAgIH0KIAkgICAgYnJlYWs7CiAKIAkgIGNhc2UgUFZFQ19XSU5E T1c6CiAJICAgIHsKIAkgICAgICBzdHJ1Y3Qgd2luZG93ICp3ID0gKHN0cnVjdCB3aW5kb3cg KikgcHRyOworCSAgICAgIGJvb2wgbGVhZiA9IE5JTFAgKHctPmhjaGlsZCkgJiYgTklMUCAo dy0+dmNoaWxkKTsKKwkgICAgICAKKwkgICAgICAvKiBGb3IgbGl2ZSB3aW5kb3dzLCBMaXNw IGNvZGUgZmlsdGVycyBvdXQga2lsbGVkIGJ1ZmZlcnMKKwkJIGZyb20gYm90aCBidWZmZXIg bGlzdHMuICBGb3IgZGVhZCB3aW5kb3dzLCB3ZSBkbyBpdCBoZXJlCisJCSBpbiBhdHRlbXB0 IHRvIGhlbHAgR0MgdG8gcmVjbGFpbSBraWxsZWQgYnVmZmVycyBmYXN0ZXIuICAqLworCSAg ICAgIGlmIChsZWFmICYmIE5JTFAgKHctPmJ1ZmZlcikpCisJCXsKKwkJICB3c2V0X3ByZXZf YnVmZmVycworCQkgICAgKHcsIGRpc2NhcmRfa2lsbGVkX2J1ZmZlcnMgKHctPnByZXZfYnVm ZmVycykpOworCQkgIHdzZXRfbmV4dF9idWZmZXJzCisJCSAgICAodywgZGlzY2FyZF9raWxs ZWRfYnVmZmVycyAody0+bmV4dF9idWZmZXJzKSk7CisJCX0KIAogCSAgICAgIG1hcmtfdmVj dG9ybGlrZSAocHRyKTsKIAkgICAgICAvKiBNYXJrIGdseXBocyBmb3IgbGVhZiB3aW5kb3dz LiAgTWFya2luZyB3aW5kb3cKIAkJIG1hdHJpY2VzIGlzIHN1ZmZpY2llbnQgYmVjYXVzZSBm cmFtZSBtYXRyaWNlcwogCQkgdXNlIHRoZSBzYW1lIGdseXBoIG1lbW9yeS4gICovCi0JICAg ICAgaWYgKE5JTFAgKHctPmhjaGlsZCkgJiYgTklMUCAody0+dmNoaWxkKQotCQkgICYmIHct PmN1cnJlbnRfbWF0cml4KQorCSAgICAgIGlmIChsZWFmICYmIHctPmN1cnJlbnRfbWF0cml4 KQogCQl7CiAJCSAgbWFya19nbHlwaF9tYXRyaXggKHctPmN1cnJlbnRfbWF0cml4KTsKIAkJ ICBtYXJrX2dseXBoX21hdHJpeCAody0+ZGVzaXJlZF9tYXRyaXgpOwpAQCAtNjA4MSwxMCAr NjEyOCwxNSBAQAogCSAgY2FzZSBTWU1CT0xfTE9DQUxJWkVEOgogCSAgICB7CiAJICAgICAg c3RydWN0IExpc3BfQnVmZmVyX0xvY2FsX1ZhbHVlICpibHYgPSBTWU1CT0xfQkxWIChwdHIp OwotCSAgICAgIC8qIElmIHRoZSB2YWx1ZSBpcyBmb3J3YXJkZWQgdG8gYSBidWZmZXIgb3Ig a2V5Ym9hcmQgZmllbGQsCi0JCSB0aGVzZSBhcmUgbWFya2VkIHdoZW4gd2Ugc2VlIHRoZSBj b3JyZXNwb25kaW5nIG9iamVjdC4KLQkJIEFuZCBpZiBpdCdzIGZvcndhcmRlZCB0byBhIEMg dmFyaWFibGUsIGVpdGhlciBpdCdzIG5vdAotCQkgYSBMaXNwX09iamVjdCB2YXIsIG9yIGl0 J3Mgc3RhdGljcHJvJ2QgYWxyZWFkeS4gICovCisJICAgICAgTGlzcF9PYmplY3Qgd2hlcmUg PSBibHYtPndoZXJlOworCSAgICAgIC8qIElmIHRoZSB2YWx1ZSBpcyBzZXQgdXAgZm9yIGEg a2lsbGVkIGJ1ZmZlciBvciBkZWxldGVkCisJCSBmcmFtZSwgcmVzdG9yZSBpdCdzIGdsb2Jh bCBiaW5kaW5nLiAgSWYgdGhlIHZhbHVlIGlzCisJCSBmb3J3YXJkZWQgdG8gYSBDIHZhcmlh YmxlLCBlaXRoZXIgaXQncyBub3QgYSBMaXNwX09iamVjdAorCQkgdmFyLCBvciBpdCdzIHN0 YXRpY3BybydkIGFscmVhZHkuICAqLworCSAgICAgIGlmICgoQlVGRkVSUCAod2hlcmUpICYm ICFCVUZGRVJfTElWRV9QIChYQlVGRkVSICh3aGVyZSkpKQorCQkgIHx8IChGUkFNRVAgKHdo ZXJlKSAmJiAhRlJBTUVfTElWRV9QIChYRlJBTUUgKHdoZXJlKSkpKQorCQkvKiBGSVhNRTog bWFrZSBzdXJlIGl0J3Mgc2FmZSBkdXJpbmcgR0MuICAqLyAKKwkJc3dhcF9pbl9nbG9iYWxf YmluZGluZyAocHRyKTsKIAkgICAgICBtYXJrX29iamVjdCAoYmx2LT53aGVyZSk7CiAJICAg ICAgbWFya19vYmplY3QgKGJsdi0+dmFsY2VsbCk7CiAJICAgICAgbWFya19vYmplY3QgKGJs di0+ZGVmY2VsbCk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3dpbmRvdy5jJwotLS0gc3Jj L3dpbmRvdy5jCTIwMTItMDktMTEgMDQ6MjI6MDMgKzAwMDAKKysrIHNyYy93aW5kb3cuYwky MDEyLTA5LTExIDA0OjI2OjQzICswMDAwCkBAIC0xNzYsMTEgKzE3Niw2IEBACiAgIHctPm5l d190b3RhbCA9IHZhbDsKIH0KIHN0YXRpYyBpbmxpbmUgdm9pZAotd3NldF9uZXh0X2J1ZmZl cnMgKHN0cnVjdCB3aW5kb3cgKncsIExpc3BfT2JqZWN0IHZhbCkKLXsKLSAgdy0+bmV4dF9i dWZmZXJzID0gdmFsOwotfQotc3RhdGljIGlubGluZSB2b2lkCiB3c2V0X25vcm1hbF9jb2xz IChzdHJ1Y3Qgd2luZG93ICp3LCBMaXNwX09iamVjdCB2YWwpCiB7CiAgIHctPm5vcm1hbF9j b2xzID0gdmFsOwpAQCAtMjAxLDExICsxOTYsNiBAQAogICB3LT5wb2ludG0gPSB2YWw7CiB9 CiBzdGF0aWMgaW5saW5lIHZvaWQKLXdzZXRfcHJldl9idWZmZXJzIChzdHJ1Y3Qgd2luZG93 ICp3LCBMaXNwX09iamVjdCB2YWwpCi17Ci0gIHctPnByZXZfYnVmZmVycyA9IHZhbDsKLX0K LXN0YXRpYyBpbmxpbmUgdm9pZAogd3NldF9yaWdodF9mcmluZ2Vfd2lkdGggKHN0cnVjdCB3 aW5kb3cgKncsIExpc3BfT2JqZWN0IHZhbCkKIHsKICAgdy0+cmlnaHRfZnJpbmdlX3dpZHRo ID0gdmFsOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy93aW5kb3cuaCcKLS0tIHNyYy93aW5k b3cuaAkyMDEyLTA5LTA1IDE3OjA1OjMyICswMDAwCisrKyBzcmMvd2luZG93LmgJMjAxMi0w OS0xMSAwNDoyNjo0MyArMDAwMApAQCAtNDE0LDcgKzQxNCwxNiBAQAogewogICB3LT53aW5k b3dfZW5kX3Zwb3MgPSB2YWw7CiB9Ci0KK1dJTkRPV19JTkxJTkUgdm9pZAord3NldF9wcmV2 X2J1ZmZlcnMgKHN0cnVjdCB3aW5kb3cgKncsIExpc3BfT2JqZWN0IHZhbCkKK3sKKyAgdy0+ cHJldl9idWZmZXJzID0gdmFsOworfQorV0lORE9XX0lOTElORSB2b2lkCit3c2V0X25leHRf YnVmZmVycyAoc3RydWN0IHdpbmRvdyAqdywgTGlzcF9PYmplY3QgdmFsKQoreworICB3LT5u ZXh0X2J1ZmZlcnMgPSB2YWw7Cit9CiAKIC8qIDEgaWYgVyBpcyBhIG1pbmlidWZmZXIgd2lu ZG93LiAgKi8KIAoK --------------070904090803050208060803--