Re: [PATCH 5/5] eval: Overhaul implementation for speed and correctness
Eric Blake via M4-patches <[email protected]> Mon, 14 Apr 2025 11:05:16 -0500
| Newsgroups | gmane.comp.gnu.m4.patches |
|---|---|
| Message-ID | <qyxezotmlt423g2hg6bvbptyez4npv6yp2wyyjjfxws633hl7a@n5iultiizviu> |
T24gV2VkLCBBcHIgMDIsIDIwMjUgYXQgMDU6Mjg6NDBQTSAtMDUwMCwgRXJpYyBCbGFrZSB2aWEg TTQtcGF0Y2hlcyB3cm90ZToKPiBXaGlsZSBhIHJlY3Vyc2l2ZSBkZXNjZW50IHBhcnNlciBpcyBl YXN5IHRvIHdyaXRlLCBpdCBpbnZvbHZlcyBhIExPVAo+IG9mIGZ1bmN0aW9uIGNhbGxzIGFuZCBi b2lsZXJwbGF0ZS4gIE1lcmVseSBwYXJzaW5nICJldmFsKDEpIiByZXF1aXJlcwo+IGRlc2NlbmRp bmcgdGhyb3VnaCBBTEwgMTEgbGV2ZWxzIG9mIG9wZXJhdG9yIHByZWNlZGVuY2UsIG9ubHkgZm9y IGVhY2gKPiBsYXllciB0byBkaXNjb3ZlciB0aGVyZSBpcyBubyBvcGVyYXRvci4gIEJldHRlciBp cyB0aGUgUHJhdHQgc3R5bGUgb2YKPiBMUigxKSBwYXJzaW5nIFsxXSwgd2hpY2ggY2FuIGhhbmRs ZSBhbnkgZ3JhbW1hciB3aGVyZSBubyB0d28KPiBjb25zZWN1dGl2ZSBub24tdGVybWluYWxzIG9y IGVwc2lsb24gYXBwZWFyIGluIHRoZSByaWdodCBzaWRlIG9mIGFueQo+IHJ1bGUgWzJdLiAgTm93 LCBwYXJzaW5nIGlzIGRvbmUgd2l0aCBqdXN0IHR3byBtdXR1YWxseSByZWN1cnNpdmUKPiBmdW5j dGlvbnM7ICJldmFsKDEpIiB3b3JrcyB3aXRoIGp1c3QgdHdvIGZ1bmN0aW9uIGNhbGxzIChwcmlt YXJ5KCkKPiBkZXRlcm1pbmVzIHRoZSB2YWx1ZSwgYW5kIHBhcnNlX2V4cHIoKSBkZXRlcm1pbmVz IG5vIG9wZXJhdG9ycyBhcmUKPiBwcmVzZW50KSwgd2hpbGUgbW9yZSBjb21wbGljYXRlZCBleHBy ZXNzaW9ucyBzdGlsbCBwcm9kdWNlIHRoZSBjb3JyZWN0Cj4gcmVzdWx0cyBidXQgd2l0aCBsZXNz IHJlY3Vyc2lvbi4KPiAKPiArLyogUGFyc2UgYmluYXJ5IG9wZXJhdG9ycyB3aXRoIGF0IGxlYXN0 IE1JTl9QUkVDIHByZWNlZGVuY2UuICAqLwo+ICtzdGF0aWMgZXZhbF9lcnJvcgo+ICtwYXJzZV9l eHByIChpbnQzMl90ICp2MSwgaW50IG1pbl9wcmVjKQo+ICt7Cj4gKyAgZXZhbF90b2tlbiBldDsK PiArICBldmFsX3Rva2VuIGV0MjsKPiArICBldmFsX2Vycm9yIGVyID0gTk9fRVJST1I7Cj4gKyAg ZXZhbF9lcnJvciBlcjI7Cj4gKyAgaW50MzJfdCB2MjsKPiArICBpbnQzMl90IHYzOwo+ICsgIHVp bnQzMl90IHUxOwo+ICsKPiArICBldCA9IGV2YWxfbGV4ICgmdjIpOwo+ICsgIHdoaWxlIChwcmVj ZWRlbmNlW2V0XSA+PSBtaW5fcHJlYykKPiArICAgIHsKPiArICAgICAgaWYgKChlciA9IHByaW1h cnkgKCZ2MikpID49IFNZTlRBWF9FUlJPUikKPiArICAgICAgICByZXR1cm4gZXI7CgpUaGlzIGJs aW5kbHkgb3ZlcndyaXRlcyBlciBmcm9tIHRoZSBsZWZ0IHNpZGUgb2YgYW55IGJpbmFyeSBvcGVy YW5kLAp3aGljaCBjYXVzZWQgYSB0ZW1wb3JhcnkgcmVncmVzc2lvbiBpbiBleHByZXNzaW9ucyBs aWtlICcxLzArMScuCkZpeGluZyBpdCB0aHVzOgoKRnJvbSBkODUwMDA5ZDg2OTgwMmUwYjE0ZjIy YTNkZTE5NTU5Y2UyZmQyM2UyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIEJs YWtlIDxlYmxha2VAcmVkaGF0LmNvbT4KRGF0ZTogTW9uLCAxNCBBcHIgMjAyNSAwODo0NDo1NyAt MDUwMApTdWJqZWN0OiBbUEFUQ0hdIGV2YWw6IERvbid0IGZvcmdldCBkaXZpc2lvbiBieSB6ZXJv IG9uIGxlZnQgc2lkZSBvZiBleHByCkNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbgoKRml4IGEgcmVn cmVzc2lvbiBpbnRyb2R1Y2VkIGluIGUzYzRkMDdjIC0gd2hlbiB0aGUgbGVmdCBoYWxmIG9mIGFu CmV4cHJlc3Npb24gd2FzIHN5bnRhY3RpY2FsbHkgdmFsaWQgYnV0IGNvbXB1dGF0aW9uYWxseSB1 bmRlZmluZWQsIHRoZQpwYXJzZXIgd2FzIG92ZXJ3cml0aW5nIHRoYXQgc3RhdHVzIHdpdGggYSBz dWNjZXNzZnVsIHBhcnNlIG9mIHRoZQpyaWdodCBoYWxmLCB3aGVuIHRoZSBzZWNvbmQgb3BlcmF0 b3IgaGFzIGxvd2VyIHByZWNlZGVuY2UgdGhhbiB0aGUKb3BlcmF0b3IgdGhhdCBjYXVzZWQgdGhl IHByb2JsZW0gaW4gdGhlIGxlZnQgaGFsZi4gIFRoZSBzaW1wbGVzdCB0ZXN0CmNhc2UgaXMgImV2 YWwoMS8wKzEpIjsgYWxzbyB2dWxuZXJhYmxlIHdhcyAiZXZhbCgxLzB8fDEvMCkiLgoKKiBzcmMv ZXZhbC5jIChldmFsdWF0ZSk6IEFkanVzdCBzaWduYXR1cmUsIHRvIGF2b2lkIGxvc2luZyBlcnJv cgpzdGF0dXMgb2YgbGVmdCBoYWxmLgoocHJpbWFyeSwgZXZhbHVhdGUpOiBVcGRhdGUgY2FsbGVy cy4KKiBkb2MvbTQudGV4aSAoRXZhbCk6IFRlc3QgaXQuCi0tLQogZG9jL200LnRleGkgfCAxMCAr KysrKysrKy0tCiBzcmMvZXZhbC5jICB8IDQ2ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMjkg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL200LnRleGkgYi9kb2MvbTQudGV4aQppbmRl eCBmNTU3N2I2Zi4uMjI5ZWJjYmQgMTAwNjQ0Ci0tLSBhL2RvYy9tNC50ZXhpCisrKyBiL2RvYy9t NC50ZXhpCkBAIC02NDExLDE1ICs2NDExLDIxIEBAIEV2YWwKIEByZXN1bHR7fTAKIGV2YWwoYCsg KyAtIH4gISB+IDAnKQogQHJlc3VsdHt9MQorZXZhbChgMSAvIDAgKyAxJykKK0BlcnJvcnt9bTQ6 c3RkaW46ODogZGl2aWRlIGJ5IHplcm8gaW4gZXZhbDogMSAvIDAgKyAxCitAcmVzdWx0e30KK2V2 YWwoYDEgLyAwIHx8IDEgLyAwJykKK0BlcnJvcnt9bTQ6c3RkaW46OTogZGl2aWRlIGJ5IHplcm8g aW4gZXZhbDogMSAvIDAgfHwgMSAvIDAKK0ByZXN1bHR7fQogZXZhbChgMiB8fCAxIC8gMCcpCiBA cmVzdWx0e30xCiBldmFsKGAwIHx8IDEgLyAwJykKLUBlcnJvcnt9bTQ6c3RkaW46OTogZGl2aWRl IGJ5IHplcm8gaW4gZXZhbDogMCB8fCAxIC8gMAorQGVycm9ye31tNDpzdGRpbjoxMTogZGl2aWRl IGJ5IHplcm8gaW4gZXZhbDogMCB8fCAxIC8gMAogQHJlc3VsdHt9CiBldmFsKGAwICYmICgxICUg MCknKQogQHJlc3VsdHt9MAogZXZhbChgMiAmJiAoMSAlIDApJykKLUBlcnJvcnt9bTQ6c3RkaW46 MTE6IG1vZHVsbyBieSB6ZXJvIGluIGV2YWw6IDIgJiYgKDEgJSAwKQorQGVycm9ye31tNDpzdGRp bjoxMzogbW9kdWxvIGJ5IHplcm8gaW4gZXZhbDogMiAmJiAoMSAlIDApCiBAcmVzdWx0e30KIEBl bmQgZXhhbXBsZQoKZGlmZiAtLWdpdCBhL3NyYy9ldmFsLmMgYi9zcmMvZXZhbC5jCmluZGV4IGY0 OGUxNDJhLi5mMTg2YWMwNCAxMDA2NDQKLS0tIGEvc3JjL2V2YWwuYworKysgYi9zcmMvZXZhbC5j CkBAIC04Miw3ICs4Miw3IEBAIHR5cGVkZWYgZW51bSBldmFsX2Vycm9yCiBldmFsX2Vycm9yOwoK IHN0YXRpYyBldmFsX2Vycm9yIHByaW1hcnkgKGludDMyX3QgKik7Ci1zdGF0aWMgZXZhbF9lcnJv ciBwYXJzZV9leHByIChpbnQzMl90ICosIHVuc2lnbmVkKTsKK3N0YXRpYyBldmFsX2Vycm9yIHBh cnNlX2V4cHIgKGludDMyX3QgKiwgZXZhbF9lcnJvciwgdW5zaWduZWQpOwoKIC8qLS0tLS0tLS0t LS0tLS0tLS0tLS0uCiB8IExleGljYWwgZnVuY3Rpb25zLiAgfApAQCAtMzAzLDcgKzMwMyw2IEBA IHN0YXRpYyBldmFsX2Vycm9yCiBwcmltYXJ5IChpbnQzMl90ICp2MSkKIHsKICAgZXZhbF9lcnJv ciBlcjsKLSAgZXZhbF9lcnJvciBlcjI7CiAgIGludDMyX3QgdjI7CgogICBzd2l0Y2ggKGV2YWxf bGV4ICh2MSkpCkBAIC0zMTQsMTIgKzMxMywxMCBAQCBwcmltYXJ5IChpbnQzMl90ICp2MSkKCiAg ICAgICAvKiBQYXJlbnRoZXNpcyAqLwogICAgIGNhc2UgTEVGVFA6Ci0gICAgICBpZiAoKGVyID0g cHJpbWFyeSAodjEpKSA+PSBTWU5UQVhfRVJST1IpCisgICAgICBlciA9IHByaW1hcnkgKHYxKTsK KyAgICAgIGVyID0gcGFyc2VfZXhwciAodjEsIGVyLCAxKTsKKyAgICAgIGlmIChlciA+PSBTWU5U QVhfRVJST1IpCiAgICAgICAgIHJldHVybiBlcjsKLSAgICAgIGlmICgoZXIyID0gcGFyc2VfZXhw ciAodjEsIDEpKSA+PSBTWU5UQVhfRVJST1IpCi0gICAgICAgIHJldHVybiBlcjI7Ci0gICAgICBp ZiAoZXIgPT0gTk9fRVJST1IpCi0gICAgICAgIGVyID0gZXIyOwogICAgICAgc3dpdGNoIChldmFs X2xleCAoJnYyKSkKICAgICAgICAgewogICAgICAgICBjYXNlIEVSUk9SOgpAQCAtMzYyLDMwICsz NTksMjkgQEAgcHJpbWFyeSAoaW50MzJfdCAqdjEpCgogLyogUGFyc2UgYmluYXJ5IG9wZXJhdG9y cyB3aXRoIGF0IGxlYXN0IE1JTl9QUkVDIHByZWNlZGVuY2UuICAqLwogc3RhdGljIGV2YWxfZXJy b3IKLXBhcnNlX2V4cHIgKGludDMyX3QgKnYxLCB1bnNpZ25lZCBtaW5fcHJlYykKK3BhcnNlX2V4 cHIgKGludDMyX3QgKnYxLCBldmFsX2Vycm9yIGVyLCB1bnNpZ25lZCBtaW5fcHJlYykKIHsKICAg ZXZhbF90b2tlbiBldDsKICAgZXZhbF90b2tlbiBldDI7Ci0gIGV2YWxfZXJyb3IgZXIgPSBOT19F UlJPUjsKICAgZXZhbF9lcnJvciBlcjI7CiAgIGludDMyX3QgdjI7CiAgIGludDMyX3QgdjM7CiAg IHVpbnQzMl90IHUxOwoKKyAgaWYgKGVyID49IFNZTlRBWF9FUlJPUikKKyAgICByZXR1cm4gZXI7 CiAgIGV0ID0gZXZhbF9sZXggKCZ2Mik7CiAgIHdoaWxlIChldCAvIDEwID49IG1pbl9wcmVjKQog ICAgIHsKLSAgICAgIGlmICgoZXIgPSBwcmltYXJ5ICgmdjIpKSA+PSBTWU5UQVhfRVJST1IpCi0g ICAgICAgIHJldHVybiBlcjsKKyAgICAgIGlmICgoZXIyID0gcHJpbWFyeSAoJnYyKSkgPj0gU1lO VEFYX0VSUk9SKQorICAgICAgICByZXR1cm4gZXIyOwogICAgICAgZXQyID0gZXZhbF9sZXggKCZ2 Myk7CiAgICAgICAvKiBIYW5kbGUgYmluYXJ5IG9wZXJhdG9ycyBvZiBoaWdoZXIgcHJlY2VkZW5j ZSBvciByaWdodC1hc3NvY2lhdGl2aXR5ICovCiAgICAgICB3aGlsZSAoZXQyIC8gMTAgPiBldCAv IDEwIHx8IGV0MiA9PSBFWFBPTkVOVCkKICAgICAgICAgewogICAgICAgICAgIGV2YWxfdW5kbyAo KTsKLSAgICAgICAgICBpZiAoKGVyMiA9IHBhcnNlX2V4cHIgKCZ2MiwgZXQyIC8gMTApKSA+PSBT WU5UQVhfRVJST1IpCisgICAgICAgICAgaWYgKChlcjIgPSBwYXJzZV9leHByICgmdjIsIGVyMiwg ZXQyIC8gMTApKSA+PSBTWU5UQVhfRVJST1IpCiAgICAgICAgICAgICByZXR1cm4gZXIyOwotICAg ICAgICAgIGlmIChlciA9PSBOT19FUlJPUikKLSAgICAgICAgICAgIGVyID0gZXIyOwogICAgICAg ICAgIGV0MiA9IGV2YWxfbGV4ICgmdjMpOwogICAgICAgICB9CiAgICAgICAvKiBSZWR1Y2UgdGhl IHR3byB2YWx1ZXMgYnkgdGhlIGdpdmVuIGJpbmFyeSBvcGVyYXRvciAqLwpAQCAtNDg3LDIwICs0 ODMsMTUgQEAgV2FybmluZzogcmVjb21tZW5kID09LCBub3QgPSwgZm9yIGVxdWFsaXR5IG9wZXJh dG9yIikpKTsKCiAgICAgICAgICAgLyogSW1wbGVtZW50IHNob3J0LWNpcmN1aXRpbmcgb2YgdmFs aWQgc3ludGF4LiAgKi8KICAgICAgICAgY2FzZSBMQU5EOgotICAgICAgICAgIGlmIChlciA9PSBO T19FUlJPUikKLSAgICAgICAgICAgICp2MSA9ICp2MSAmJiB2MjsKLSAgICAgICAgICBlbHNlIGlm ICgqdjEgPT0gMCkKLSAgICAgICAgICAgIGVyID0gTk9fRVJST1I7CisgICAgICAgICAgaWYgKCEq djEpCisgICAgICAgICAgICBlcjIgPSBOT19FUlJPUjsKKyAgICAgICAgICAqdjEgPSAqdjEgJiYg djI7CiAgICAgICAgICAgYnJlYWs7CgogICAgICAgICBjYXNlIExPUjoKLSAgICAgICAgICBpZiAo ZXIgPT0gTk9fRVJST1IpCi0gICAgICAgICAgICAqdjEgPSAqdjEgfHwgdjI7Ci0gICAgICAgICAg ZWxzZSBpZiAoKnYxICE9IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICp2MSA9IDE7 Ci0gICAgICAgICAgICAgIGVyID0gTk9fRVJST1I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAg aWYgKCp2MSkKKyAgICAgICAgICAgIGVyMiA9IE5PX0VSUk9SOworICAgICAgICAgICp2MSA9ICp2 MSB8fCB2MjsKICAgICAgICAgICBicmVhazsKCiAgICAgICAgIGRlZmF1bHQ6CkBAIC01MDgsNiAr NDk5LDggQEAgV2FybmluZzogcmVjb21tZW5kID09LCBub3QgPSwgZm9yIGVxdWFsaXR5IG9wZXJh dG9yIikpKTsKICAgICAgICAgICAgICAgICAgICAgIklOVEVSTkFMIEVSUk9SOiB1bmV4cGVjdGVk IG9wZXJhdG9yIGluIGV2YWx1YXRlICgpIikpOwogICAgICAgICAgIGFib3J0ICgpOwogICAgICAg ICB9CisgICAgICBpZiAoZXIgPT0gTk9fRVJST1IpCisgICAgICAgIGVyID0gZXIyOwogICAgICAg ZXQgPSBldDI7CiAgICAgfQoKQEAgLTUyNiw4ICs1MTksNyBAQCBldmFsdWF0ZSAoY29uc3QgY2hh ciAqZXhwciwgaW50MzJfdCAqdmFsKQoKICAgZXZhbF9pbml0X2xleCAoZXhwcik7CiAgIGVyciA9 IHByaW1hcnkgKHZhbCk7Ci0gIGlmIChlcnIgPT0gTk9fRVJST1IpCi0gICAgZXJyID0gcGFyc2Vf ZXhwciAodmFsLCAxKTsKKyAgZXJyID0gcGFyc2VfZXhwciAodmFsLCBlcnIsIDEpOwoKICAgaWYg KGVyciA9PSBOT19FUlJPUiAmJiAqZXZhbF90ZXh0ICE9ICdcMCcpCiAgICAgewoKYmFzZS1jb21t aXQ6IDZlYmZjNTQ2YjYwMDYyNWRiNzBiZjNjMGE2YTEyODk5N2EzYzA0YmUKLS0gCjIuNDkuMAoK CgotLSAKRXJpYyBCbGFrZSwgUHJpbmNpcGFsIFNvZnR3YXJlIEVuZ2luZWVyClJlZCBIYXQsIElu Yy4KVmlydHVhbGl6YXRpb246ICBxZW11Lm9yZyB8IGxpYmd1ZXN0ZnMub3JnCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTTQtcGF0Y2hlcyBtYWlsaW5n IGxpc3QKTTQtcGF0Y2hlc0BnbnUub3JnCmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xp c3RpbmZvL200LXBhdGNoZXMK