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