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: immediate strings Date: Sat, 26 Nov 2011 06:15:24 +0400 Message-ID: <4ED04BBC.70803@yandex.ru> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------010709010503010806000004" X-Trace: dough.gmane.org 1322273728 2172 80.91.229.12 (26 Nov 2011 02:15:28 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sat, 26 Nov 2011 02:15:28 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Nov 26 03:15:24 2011 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1RU7nV-0002rN-TF for ged-emacs-devel@m.gmane.org; Sat, 26 Nov 2011 03:15:22 +0100 Original-Received: from localhost ([::1]:42381 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RU7nV-0007sJ-7J for ged-emacs-devel@m.gmane.org; Fri, 25 Nov 2011 21:15:21 -0500 Original-Received: from eggs.gnu.org ([140.186.70.92]:49609) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RU7nS-0007sA-60 for emacs-devel@gnu.org; Fri, 25 Nov 2011 21:15:19 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RU7nQ-00045o-NF for emacs-devel@gnu.org; Fri, 25 Nov 2011 21:15:18 -0500 Original-Received: from mail-bw0-f41.google.com ([209.85.214.41]:62710) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RU7nQ-00045Y-A7 for emacs-devel@gnu.org; Fri, 25 Nov 2011 21:15:16 -0500 Original-Received: by bke17 with SMTP id 17so5821539bke.0 for ; Fri, 25 Nov 2011 18:15:14 -0800 (PST) Original-Received: by 10.204.9.216 with SMTP id m24mr35709496bkm.98.1322273714462; Fri, 25 Nov 2011 18:15:14 -0800 (PST) Original-Received: from [192.168.0.171] ([78.153.153.8]) by mx.google.com with ESMTPS id e18sm20402784bkr.15.2011.11.25.18.15.05 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 25 Nov 2011 18:15:13 -0800 (PST) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20111115 Thunderbird/8.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 209.85.214.41 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:146242 Archived-At: This is a multi-part message in MIME format. --------------010709010503010806000004 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Small strings (up to 3 bytes on 32-bit, up to 7 bytes on 64-bin) can be represented as 'immediates' of struct Lisp_String, without allocating data separately. I observed two usage scenarios (editing with a few tens of buffers and long byte-force-recompile runs), and in both cases ~10% of live strings are less than 4 bytes long, and ~30% of live strings are less than 8 bytes long. So I think it's worth playing with such a little complication. Dmitry --------------010709010503010806000004 Content-Type: text/plain; name="immstr.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="immstr.patch" PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9hbGxvYy5jJwotLS0gc3JjL2FsbG9jLmMJMjAxMS0x MS0yMCAwMzowNzowMiArMDAwMAorKysgc3JjL2FsbG9jLmMJMjAxMS0xMS0yNiAwMjowMToy MyArMDAwMApAQCAtMTM2LDkgKzEzNiw5IEBACiAvKiBNYXJrLCB1bm1hcmssIHF1ZXJ5IG1h cmsgYml0IG9mIGEgTGlzcCBzdHJpbmcuICBTIG11c3QgYmUgYSBwb2ludGVyCiAgICB0byBh IHN0cnVjdCBMaXNwX1N0cmluZy4gICovCiAKLSNkZWZpbmUgTUFSS19TVFJJTkcoUykJCSgo UyktPnNpemUgfD0gQVJSQVlfTUFSS19GTEFHKQotI2RlZmluZSBVTk1BUktfU1RSSU5HKFMp CSgoUyktPnNpemUgJj0gfkFSUkFZX01BUktfRkxBRykKLSNkZWZpbmUgU1RSSU5HX01BUktF RF9QKFMpCSgoKFMpLT5zaXplICYgQVJSQVlfTUFSS19GTEFHKSAhPSAwKQorI2RlZmluZSBN QVJLX1NUUklORyhTKQkJKChTKS0+Z2NtYXJrYml0ID0gMSkKKyNkZWZpbmUgVU5NQVJLX1NU UklORyhTKQkoKFMpLT5nY21hcmtiaXQgPSAwKQorI2RlZmluZSBTVFJJTkdfTUFSS0VEX1Ao UykJKChTKS0+Z2NtYXJrYml0KQogCiAjZGVmaW5lIFZFQ1RPUl9NQVJLKFYpCQkoKFYpLT5o ZWFkZXIuc2l6ZSB8PSBBUlJBWV9NQVJLX0ZMQUcpCiAjZGVmaW5lIFZFQ1RPUl9VTk1BUkso VikJKChWKS0+aGVhZGVyLnNpemUgJj0gfkFSUkFZX01BUktfRkxBRykKQEAgLTE3MzMsNyAr MTczMyw4IEBACiAgICBhIHBvaW50ZXIgdG8gdGhlIGB1LmRhdGEnIG1lbWJlciBvZiBpdHMg c2RhdGEgc3RydWN0dXJlOyB0aGUKICAgIHN0cnVjdHVyZSBzdGFydHMgYXQgYSBjb25zdGFu dCBvZmZzZXQgaW4gZnJvbnQgb2YgdGhhdC4gICovCiAKLSNkZWZpbmUgU0RBVEFfT0ZfU1RS SU5HKFMpICgoc3RydWN0IHNkYXRhICopICgoUyktPmRhdGEgLSBTREFUQV9EQVRBX09GRlNF VCkpCisjZGVmaW5lIFNEQVRBX09GX1NUUklORyhTKSAoKFMpLT5pbW1iaXQgPyAoYWJvcnQg KCksIChzdHJ1Y3Qgc2RhdGEgKikgTlVMTCkgXAorICA6ICgoc3RydWN0IHNkYXRhICopICgo UyktPnUucHRyZGF0YSAtIFNEQVRBX0RBVEFfT0ZGU0VUKSkpCiAKIAogI2lmZGVmIEdDX0NI RUNLX1NUUklOR19PVkVSUlVOCkBAIC0xODI0LDEyICsxODI1LDI1IEBACiBzdHJpbmdfYnl0 ZXMgKHN0cnVjdCBMaXNwX1N0cmluZyAqcykKIHsKICAgRU1BQ1NfSU5UIG5ieXRlcyA9Ci0g ICAgKHMtPnNpemVfYnl0ZSA8IDAgPyBzLT5zaXplICYgfkFSUkFZX01BUktfRkxBRyA6IHMt PnNpemVfYnl0ZSk7CisgICAgKHMtPnNpemVfYnl0ZSA8IDAgPyBzLT5zaXplIDogcy0+c2l6 ZV9ieXRlKTsKIAotICBpZiAoIVBVUkVfUE9JTlRFUl9QIChzKQotICAgICAgJiYgcy0+ZGF0 YQotICAgICAgJiYgbmJ5dGVzICE9IFNEQVRBX05CWVRFUyAoU0RBVEFfT0ZfU1RSSU5HIChz KSkpCi0gICAgYWJvcnQgKCk7CisgIGlmIChzLT5pbW1iaXQpCisgICAgeworICAgICAgaWYg KG5ieXRlcyA+PSBTVFJJTkdfSU1NRURJQVRFX01BWCkKKwkvKiBJbXBvc3NpYmxlIGltbWVk aWF0ZSBzdHJpbmcuICAqLworCWFib3J0ICgpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAg ICAgIGlmIChuYnl0ZXMgPCBTVFJJTkdfSU1NRURJQVRFX01BWCkKKwkvKiBJbXBvc3NpYmxl IG5vcm1hbCBzdHJpbmcuICAqLworCWFib3J0ICgpOworICAgICAgaWYgKCFQVVJFX1BPSU5U RVJfUCAocykgJiYKKwkgIHMtPnUucHRyZGF0YSAmJgorCSAgbmJ5dGVzICE9IFNEQVRBX05C WVRFUyAoU0RBVEFfT0ZfU1RSSU5HIChzKSkpCisJLyogTm9ybWFsIG5vbi1wdXJlIHN0cmlu ZyB3aXRoIHNpemUgbWlzbWF0Y2guICAqLworCWFib3J0ICgpOworICAgIH0KICAgcmV0dXJu IG5ieXRlczsKIH0KIApAQCAtMjAwMCw3ICsyMDE0LDcgQEAKICAgLyogRGV0ZXJtaW5lIHRo ZSBudW1iZXIgb2YgYnl0ZXMgbmVlZGVkIHRvIHN0b3JlIE5CWVRFUyBieXRlcwogICAgICBv ZiBzdHJpbmcgZGF0YS4gICovCiAgIG5lZWRlZCA9IFNEQVRBX1NJWkUgKG5ieXRlcyk7Ci0g IG9sZF9kYXRhID0gcy0+ZGF0YSA/IFNEQVRBX09GX1NUUklORyAocykgOiBOVUxMOworICBv bGRfZGF0YSA9IHMtPnUucHRyZGF0YSA/IFNEQVRBX09GX1NUUklORyAocykgOiBOVUxMOwog ICBvbGRfbmJ5dGVzID0gR0NfU1RSSU5HX0JZVEVTIChzKTsKIAogICBNQUxMT0NfQkxPQ0tf SU5QVVQ7CkBAIC0yMDYwLDEzICsyMDc0LDExIEBACiAgIE1BTExPQ19VTkJMT0NLX0lOUFVU OwogCiAgIGRhdGEtPnN0cmluZyA9IHM7Ci0gIHMtPmRhdGEgPSBTREFUQV9EQVRBIChkYXRh KTsKKyAgcy0+dS5wdHJkYXRhID0gU0RBVEFfREFUQSAoZGF0YSk7CiAjaWZkZWYgR0NfQ0hF Q0tfU1RSSU5HX0JZVEVTCiAgIFNEQVRBX05CWVRFUyAoZGF0YSkgPSBuYnl0ZXM7CiAjZW5k aWYKLSAgcy0+c2l6ZSA9IG5jaGFyczsKLSAgcy0+c2l6ZV9ieXRlID0gbmJ5dGVzOwotICBz LT5kYXRhW25ieXRlc10gPSAnXDAnOworICBzLT51LnB0cmRhdGFbbmJ5dGVzXSA9ICdcMCc7 CiAjaWZkZWYgR0NfQ0hFQ0tfU1RSSU5HX09WRVJSVU4KICAgbWVtY3B5ICgoY2hhciAqKSBk YXRhICsgbmVlZGVkLCBzdHJpbmdfb3ZlcnJ1bl9jb29raWUsCiAJICBHQ19TVFJJTkdfT1ZF UlJVTl9DT09LSUVfU0laRSk7CkBAIC0yMTA5LDIxICsyMTIxLDIwIEBACiAJewogCSAgc3Ry dWN0IExpc3BfU3RyaW5nICpzID0gYi0+c3RyaW5ncyArIGk7CiAKLQkgIGlmIChzLT5kYXRh KQorCSAgaWYgKFNUUklOR19NQVJLRURfUCAocykpCisJICAgIHsJICAgICAgCisJICAgICAg LyogU3RyaW5nIGlzIGxpdmU7IHVubWFyayBpdCBhbmQgaXRzIGludGVydmFscy4gICovCisJ ICAgICAgVU5NQVJLX1NUUklORyAocyk7CisKKwkgICAgICBpZiAoIU5VTExfSU5URVJWQUxf UCAocy0+aW50ZXJ2YWxzKSkKKwkJVU5NQVJLX0JBTEFOQ0VfSU5URVJWQUxTIChzLT5pbnRl cnZhbHMpOworCisJICAgICAgKyt0b3RhbF9zdHJpbmdzOworCSAgICAgIHRvdGFsX3N0cmlu Z19zaXplICs9IFNUUklOR19CWVRFUyAocyk7CisJICAgIH0KKwkgIGVsc2UKIAkgICAgewot CSAgICAgIC8qIFN0cmluZyB3YXMgbm90IG9uIGZyZWUtbGlzdCBiZWZvcmUuICAqLwotCSAg ICAgIGlmIChTVFJJTkdfTUFSS0VEX1AgKHMpKQotCQl7Ci0JCSAgLyogU3RyaW5nIGlzIGxp dmU7IHVubWFyayBpdCBhbmQgaXRzIGludGVydmFscy4gICovCi0JCSAgVU5NQVJLX1NUUklO RyAocyk7Ci0KLQkJICBpZiAoIU5VTExfSU5URVJWQUxfUCAocy0+aW50ZXJ2YWxzKSkKLQkJ ICAgIFVOTUFSS19CQUxBTkNFX0lOVEVSVkFMUyAocy0+aW50ZXJ2YWxzKTsKLQotCQkgICsr dG90YWxfc3RyaW5nczsKLQkJICB0b3RhbF9zdHJpbmdfc2l6ZSArPSBTVFJJTkdfQllURVMg KHMpOwotCQl9Ci0JICAgICAgZWxzZQorCSAgICAgIGlmICghcy0+aW1tYml0ICYmIHMtPnUu cHRyZGF0YSkKIAkJewogCQkgIC8qIFN0cmluZyBpcyBkZWFkLiAgUHV0IGl0IG9uIHRoZSBm cmVlLWxpc3QuICAqLwogCQkgIHN0cnVjdCBzZGF0YSAqZGF0YSA9IFNEQVRBX09GX1NUUklO RyAocyk7CkBAIC0yMTM4LDIwICsyMTQ5LDEzIEBACiAJCSAgZGF0YS0+dS5uYnl0ZXMgPSBH Q19TVFJJTkdfQllURVMgKHMpOwogI2VuZGlmCiAJCSAgZGF0YS0+c3RyaW5nID0gTlVMTDsK LQotCQkgIC8qIFJlc2V0IHRoZSBzdHJpbmdzJ3MgYGRhdGEnIG1lbWJlciBzbyB0aGF0IHdl Ci0JCSAgICAga25vdyBpdCdzIGZyZWUuICAqLwotCQkgIHMtPmRhdGEgPSBOVUxMOwotCi0J CSAgLyogUHV0IHRoZSBzdHJpbmcgb24gdGhlIGZyZWUtbGlzdC4gICovCi0JCSAgTkVYVF9G UkVFX0xJU1BfU1RSSU5HIChzKSA9IHN0cmluZ19mcmVlX2xpc3Q7Ci0JCSAgc3RyaW5nX2Zy ZWVfbGlzdCA9IHM7Ci0JCSAgKytuZnJlZTsKIAkJfQotCSAgICB9Ci0JICBlbHNlCi0JICAg IHsKLQkgICAgICAvKiBTIHdhcyBvbiB0aGUgZnJlZS1saXN0IGJlZm9yZS4gIFB1dCBpdCB0 aGVyZSBhZ2Fpbi4gICovCisJICAgICAgCisJICAgICAgLyogUmVzZXQgdGhlIHN0cmluZ3Mn cyBgZGF0YScgbWVtYmVyIHNvIHRoYXQgd2Uga25vdyBpdCdzCisJCSBmcmVlLiAgVGhpcyBh bHNvIHplcm9lcyBhbiBpbW1lZGlhdGUgc3RyaW5nIHN0b3JhZ2UuICAqLworCSAgICAgIHMt PnUucHRyZGF0YSA9IE5VTEw7CisKKwkgICAgICAvKiBQdXQgdGhlIHN0cmluZyBvbiB0aGUg ZnJlZS1saXN0LiAgKi8KIAkgICAgICBORVhUX0ZSRUVfTElTUF9TVFJJTkcgKHMpID0gc3Ry aW5nX2ZyZWVfbGlzdDsKIAkgICAgICBzdHJpbmdfZnJlZV9saXN0ID0gczsKIAkgICAgICAr K25mcmVlOwpAQCAtMjI4NCw3ICsyMjg4LDcgQEAKIAkJewogCQkgIHhhc3NlcnQgKHRiICE9 IGIgfHwgdG8gPCBmcm9tKTsKIAkJICBtZW1tb3ZlICh0bywgZnJvbSwgbmJ5dGVzICsgR0Nf U1RSSU5HX0VYVFJBKTsKLQkJICB0by0+c3RyaW5nLT5kYXRhID0gU0RBVEFfREFUQSAodG8p OworCQkgIHRvLT5zdHJpbmctPnUucHRyZGF0YSA9IFNEQVRBX0RBVEEgKHRvKTsKIAkJfQog CiAJICAgICAgLyogQWR2YW5jZSBwYXN0IHRoZSBzZGF0YSB3ZSBjb3BpZWQgdG8uICAqLwpA QCAtMjUzMyw3ICsyNTM3LDE1IEBACiAgICAgcmV0dXJuIGVtcHR5X211bHRpYnl0ZV9zdHJp bmc7CiAKICAgcyA9IGFsbG9jYXRlX3N0cmluZyAoKTsKLSAgYWxsb2NhdGVfc3RyaW5nX2Rh dGEgKHMsIG5jaGFycywgbmJ5dGVzKTsKKyAgcy0+c2l6ZSA9IG5jaGFyczsKKyAgcy0+c2l6 ZV9ieXRlID0gbmJ5dGVzOworICBpZiAobmJ5dGVzIDwgU1RSSU5HX0lNTUVESUFURV9NQVgp CisgICAgcy0+aW1tYml0ID0gMTsKKyAgZWxzZQorICAgIHsKKyAgICAgIHMtPmltbWJpdCA9 IDA7CisgICAgICBhbGxvY2F0ZV9zdHJpbmdfZGF0YSAocywgbmNoYXJzLCBuYnl0ZXMpOwor ICAgIH0KICAgWFNFVFNUUklORyAoc3RyaW5nLCBzKTsKICAgc3RyaW5nX2NoYXJzX2NvbnNl ZCArPSBuYnl0ZXM7CiAgIHJldHVybiBzdHJpbmc7CkBAIC0zOTAxLDcgKzM5MTMsOSBAQAog ICAgICAgcmV0dXJuIChvZmZzZXQgPj0gMAogCSAgICAgICYmIG9mZnNldCAlIHNpemVvZiBi LT5zdHJpbmdzWzBdID09IDAKIAkgICAgICAmJiBvZmZzZXQgPCAoU1RSSU5HX0JMT0NLX1NJ WkUgKiBzaXplb2YgYi0+c3RyaW5nc1swXSkKLQkgICAgICAmJiAoKHN0cnVjdCBMaXNwX1N0 cmluZyAqKSBwKS0+ZGF0YSAhPSBOVUxMKTsKKwkgICAgICAvKiBMaXZlIGltbWVkaWF0ZSBz dHJpbmcgYWx3YXlzIGhhcyBhdCBsZWFzdCBvbmUKKwkJIG5vbi16ZXJvIGJ5dGUsIHNvIHRo aXMgY2hlY2sgd2lsbCBiZSBwYXNzZWQuICAqLworCSAgICAgICYmICgoc3RydWN0IExpc3Bf U3RyaW5nICopIHApLT51LnB0cmRhdGEgIT0gTlVMTCk7CiAgICAgfQogICBlbHNlCiAgICAg cmV0dXJuIDA7CkBAIC00ODAxLDEzICs0ODE1LDI1IEBACiAgIHN0cnVjdCBMaXNwX1N0cmlu ZyAqczsKIAogICBzID0gKHN0cnVjdCBMaXNwX1N0cmluZyAqKSBwdXJlX2FsbG9jIChzaXpl b2YgKnMsIExpc3BfU3RyaW5nKTsKLSAgcy0+ZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopIGZp bmRfc3RyaW5nX2RhdGFfaW5fcHVyZSAoZGF0YSwgbmJ5dGVzKTsKLSAgaWYgKHMtPmRhdGEg PT0gTlVMTCkKLSAgICB7Ci0gICAgICBzLT5kYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgcHVy ZV9hbGxvYyAobmJ5dGVzICsgMSwgLTEpOwotICAgICAgbWVtY3B5IChzLT5kYXRhLCBkYXRh LCBuYnl0ZXMpOwotICAgICAgcy0+ZGF0YVtuYnl0ZXNdID0gJ1wwJzsKLSAgICB9CisKKyAg aWYgKG5ieXRlcyA8IFNUUklOR19JTU1FRElBVEVfTUFYKQorICAgIHsKKyAgICAgIG1lbWNw eSAocy0+dS5pbW1kYXRhLCBkYXRhLCBuYnl0ZXMpOworICAgICAgcy0+dS5pbW1kYXRhW25i eXRlc10gPSAnXDAnOworICAgICAgcy0+aW1tYml0ID0gMTsKKyAgICB9CisgIGVsc2UKKyAg ICB7CisgICAgICBzLT51LnB0cmRhdGEgPSAodW5zaWduZWQgY2hhciAqKSBmaW5kX3N0cmlu Z19kYXRhX2luX3B1cmUgKGRhdGEsIG5ieXRlcyk7CisgICAgICBpZiAocy0+dS5wdHJkYXRh ID09IE5VTEwpCisJeworCSAgcy0+dS5wdHJkYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgcHVy ZV9hbGxvYyAobmJ5dGVzICsgMSwgLTEpOworCSAgbWVtY3B5IChzLT51LnB0cmRhdGEsIGRh dGEsIG5ieXRlcyk7CisJICBzLT51LnB0cmRhdGFbbmJ5dGVzXSA9ICdcMCc7CisJfQorICAg ICAgcy0+aW1tYml0ID0gMDsKKyAgICB9CisKICAgcy0+c2l6ZSA9IG5jaGFyczsKICAgcy0+ c2l6ZV9ieXRlID0gbXVsdGlieXRlID8gbmJ5dGVzIDogLTE7CiAgIHMtPmludGVydmFscyA9 IE5VTExfSU5URVJWQUw7CkBAIC00ODI4LDcgKzQ4NTQsMTkgQEAKICAgcyA9IChzdHJ1Y3Qg TGlzcF9TdHJpbmcgKikgcHVyZV9hbGxvYyAoc2l6ZW9mICpzLCBMaXNwX1N0cmluZyk7CiAg IHMtPnNpemUgPSBuY2hhcnM7CiAgIHMtPnNpemVfYnl0ZSA9IC0xOwotICBzLT5kYXRhID0g KHVuc2lnbmVkIGNoYXIgKikgZGF0YTsKKworICBpZiAobmNoYXJzIDwgU1RSSU5HX0lNTUVE SUFURV9NQVgpCisgICAgeworICAgICAgbWVtY3B5IChzLT51LmltbWRhdGEsIGRhdGEsIG5j aGFycyk7CisgICAgICBzLT51LmltbWRhdGFbbmNoYXJzXSA9ICdcMCc7CisgICAgICBzLT5p bW1iaXQgPSAxOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHMtPnUucHRyZGF0YSA9 ICh1bnNpZ25lZCBjaGFyICopIGRhdGE7CisgICAgICBzLT5pbW1iaXQgPSAwOworICAgIH0K KwogICBzLT5pbnRlcnZhbHMgPSBOVUxMX0lOVEVSVkFMOwogICBYU0VUU1RSSU5HIChzdHJp bmcsIHMpOwogICByZXR1cm4gc3RyaW5nOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9mbnMu YycKLS0tIHNyYy9mbnMuYwkyMDExLTExLTE5IDA5OjE4OjMxICswMDAwCisrKyBzcmMvZm5z LmMJMjAxMS0xMS0yNSAxMDo0MjowNCArMDAwMApAQCAtMjE3Niw4ICsyMTc2LDggQEAKIAkg IGludCBsZW4gPSBDSEFSX1NUUklORyAoY2hhcnZhbCwgc3RyKTsKIAkgIEVNQUNTX0lOVCBz aXplX2J5dGUgPSBTQllURVMgKGFycmF5KTsKIAotCSAgaWYgKElOVF9NVUxUSVBMWV9PVkVS RkxPVyAoU0NIQVJTIChhcnJheSksIGxlbikKLQkgICAgICB8fCBTQ0hBUlMgKGFycmF5KSAq IGxlbiAhPSBzaXplX2J5dGUpCisJICBpZiAoSU5UX01VTFRJUExZX09WRVJGTE9XIChzaXpl LCBsZW4pCisJICAgICAgfHwgc2l6ZSAqIGxlbiAhPSBzaXplX2J5dGUpCiAJICAgIGVycm9y ICgiQXR0ZW1wdCB0byBjaGFuZ2UgYnl0ZSBsZW5ndGggb2YgYSBzdHJpbmciKTsKIAkgIGZv ciAoaWR4ID0gMDsgaWR4IDwgc2l6ZV9ieXRlOyBpZHgrKykKIAkgICAgKnArKyA9IHN0cltp ZHggJSBsZW5dOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9saXNwLmgnCi0tLSBzcmMvbGlz cC5oCTIwMTEtMTEtMjAgMDM6MDc6MDIgKzAwMDAKKysrIHNyYy9saXNwLmgJMjAxMS0xMS0y NSAxNToxNTo1NyArMDAwMApAQCAtNjkxLDcgKzY5MSw5IEBACiAKIC8qIENvbnZlbmllbmNl IG1hY3JvcyBmb3IgZGVhbGluZyB3aXRoIExpc3Agc3RyaW5ncy4gICovCiAKLSNkZWZpbmUg U0RBVEEoc3RyaW5nKQkJKFhTVFJJTkcgKHN0cmluZyktPmRhdGEgKyAwKQorI2RlZmluZSBT REFUQShzdHJpbmcpCQkoWFNUUklORyAoc3RyaW5nKS0+aW1tYml0ID8gXAorCQkJCSAoWFNU UklORyAoc3RyaW5nKS0+dS5pbW1kYXRhICsgMCkgOiBcCisJCQkJIChYU1RSSU5HIChzdHJp bmcpLT51LnB0cmRhdGEgKyAwKSkKICNkZWZpbmUgU1JFRihzdHJpbmcsIGluZGV4KQkoU0RB VEEgKHN0cmluZylbaW5kZXhdICsgMCkKICNkZWZpbmUgU1NFVChzdHJpbmcsIGluZGV4LCBu ZXcpIChTREFUQSAoc3RyaW5nKVtpbmRleF0gPSAobmV3KSkKICNkZWZpbmUgU0NIQVJTKHN0 cmluZykJCShYU1RSSU5HIChzdHJpbmcpLT5zaXplICsgMCkKQEAgLTgyNCw2ICs4MjYsOSBA QAogI2RlZmluZSBTVFJJTkdfQllURVNfQk9VTkQgIFwKICAgbWluIChNT1NUX1BPU0lUSVZF X0ZJWE5VTSwgKHB0cmRpZmZfdCkgbWluIChTSVpFX01BWCwgUFRSRElGRl9NQVgpIC0gMSkK IAorLyogTWF4aW11bSBhbW91bnQgb2YgYnl0ZXMsIGluY2x1ZGluZyAnXDAnLCBpbiBhbiBp bW1lZGlhdGUgc3RyaW5nLiAgKi8KKyNkZWZpbmUgU1RSSU5HX0lNTUVESUFURV9NQVggKHNp emVvZiAodW5zaWduZWQgY2hhciAqKSkKKwogLyogTWFyayBTVFIgYXMgYSB1bmlieXRlIHN0 cmluZy4gICovCiAjZGVmaW5lIFNUUklOR19TRVRfVU5JQllURShTVFIpICBcCiAgIGRvIHsg aWYgKEVRIChTVFIsIGVtcHR5X211bHRpYnl0ZV9zdHJpbmcpKSAgXApAQCAtODQzLDE0ICs4 NDgsMjQgQEAKIC8qIFNldCB0ZXh0IHByb3BlcnRpZXMuICAqLwogI2RlZmluZSBTVFJJTkdf U0VUX0lOVEVSVkFMUyhTVFIsIElOVCkgKFhTVFJJTkcgKFNUUiktPmludGVydmFscyA9IChJ TlQpKQogCi0vKiBJbiBhIHN0cmluZyBvciB2ZWN0b3IsIHRoZSBzaWduIGJpdCBvZiB0aGUg YHNpemUnIGlzIHRoZSBnYyBtYXJrIGJpdCAqLwotCiBzdHJ1Y3QgTGlzcF9TdHJpbmcKICAg ewotICAgIEVNQUNTX0lOVCBzaXplOwotICAgIEVNQUNTX0lOVCBzaXplX2J5dGU7Ci0gICAg SU5URVJWQUwgaW50ZXJ2YWxzOwkJLyogdGV4dCBwcm9wZXJ0aWVzIGluIHRoaXMgc3RyaW5n ICovCi0gICAgdW5zaWduZWQgY2hhciAqZGF0YTsKKyAgICBFTUFDU19JTlQgc2l6ZSA6IEJJ VFNfUEVSX0VNQUNTX0lOVCAtIDE7CisgICAgRU1BQ1NfSU5UIHNpemVfYnl0ZSA6IEJJVFNf UEVSX0VNQUNTX0lOVCAtIDE7CisgICAgdW5zaWduZWQgZ2NtYXJrYml0IDogMTsKKworICAg IC8qIDEgaWYgdGhpcyBpcyBhIHNtYWxsIGltbWVkaWF0ZSBzdHJpbmcgd2l0aCBkYXRhIHN0 b3JlZCB3aXRoaW4gSU1NREFUQS4KKyAgICAgICBPdGhlcndpc2UgdGhpcyBpcyBhIG5vcm1h bCBzdHJpbmcgd2l0aCBQVFJEQVRBIHBvaW50cyB0byBhY3R1YWwgZGF0YS4gICovCisgICAg dW5zaWduZWQgaW1tYml0IDogMTsKKworICAgIC8qIFRleHQgcHJvcGVydGllcyBpbiB0aGlz IHN0cmluZy4gICovCisgICAgSU5URVJWQUwgaW50ZXJ2YWxzOworCisgICAgLyogQWN0dWFs IHN0cmluZyBkYXRhLCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIElNTUJJVC4gICovCisg ICAgdW5pb24geworICAgICAgdW5zaWduZWQgY2hhciAqcHRyZGF0YTsKKyAgICAgIHVuc2ln bmVkIGNoYXIgaW1tZGF0YVtTVFJJTkdfSU1NRURJQVRFX01BWF07CisgICAgfSB1OwogICB9 OwogCiAvKiBIZWFkZXIgb2YgdmVjdG9yLWxpa2Ugb2JqZWN0cy4gIFRoaXMgZG9jdW1lbnRz IHRoZSBsYXlvdXQgY29uc3RyYWludHMgb24KCg== --------------010709010503010806000004--