Re: [PATCH 5/5] eval: Overhaul implementation for speed and correctness

Eric Blake via M4-patches <[email protected]> Thu, 3 Apr 2025 18:53:42 -0500
Newsgroups gmane.comp.gnu.m4.patches
Message-ID <adspulvttefsjl26seebj7pw2vgjm2fwzzyvjsbdsuo25ex42t@vvotuki7eych>
T24gV2VkLCBBcHIgMDIsIDIwMjUgYXQgMDU6Mjg6NDBQTSAtMDUwMCwgRXJpYyBCbGFrZSB2aWEg
TTQtcGF0Y2hlcyB3cm90ZToKPiBXaGlsZSBhIHJlY3Vyc2l2ZSBkZXNjZW50IHBhcnNlciBpcyBl
YXN5IHRvIHdyaXRlLCBpdCBpbnZvbHZlcyBhIExPVAo+IG9mIGZ1bmN0aW9uIGNhbGxzIGFuZCBi
b2lsZXJwbGF0ZS4gIE1lcmVseSBwYXJzaW5nICJldmFsKDEpIiByZXF1aXJlcwo+IGRlc2NlbmRp
bmcgdGhyb3VnaCBBTEwgMTEgbGV2ZWxzIG9mIG9wZXJhdG9yIHByZWNlZGVuY2UsIG9ubHkgZm9y
IGVhY2gKPiBsYXllciB0byBkaXNjb3ZlciB0aGVyZSBpcyBubyBvcGVyYXRvci4gIEJldHRlciBp
cyB0aGUgUHJhdHQgc3R5bGUgb2YKPiBMUigxKSBwYXJzaW5nIFsxXSwgd2hpY2ggY2FuIGhhbmRs
ZSBhbnkgZ3JhbW1hciB3aGVyZSBubyB0d28KPiBjb25zZWN1dGl2ZSBub24tdGVybWluYWxzIG9y
IGVwc2lsb24gYXBwZWFyIGluIHRoZSByaWdodCBzaWRlIG9mIGFueQo+IHJ1bGUgWzJdLiAgTm93
LCBwYXJzaW5nIGlzIGRvbmUgd2l0aCBqdXN0IHR3byBtdXR1YWxseSByZWN1cnNpdmUKPiBmdW5j
dGlvbnM7ICJldmFsKDEpIiB3b3JrcyB3aXRoIGp1c3QgdHdvIGZ1bmN0aW9uIGNhbGxzIChwcmlt
YXJ5KCkKPiBkZXRlcm1pbmVzIHRoZSB2YWx1ZSwgYW5kIHBhcnNlX2V4cHIoKSBkZXRlcm1pbmVz
IG5vIG9wZXJhdG9ycyBhcmUKPiBwcmVzZW50KSwgd2hpbGUgbW9yZSBjb21wbGljYXRlZCBleHBy
ZXNzaW9ucyBzdGlsbCBwcm9kdWNlIHRoZSBjb3JyZWN0Cj4gcmVzdWx0cyBidXQgd2l0aCBsZXNz
IHJlY3Vyc2lvbi4KPiAKPiBXaGlsZSBhdCBpdCwgSSBub3RpY2VkIHRoYXQgImV2YWwoMXx8KDEv
MCkpIiB1c2VkIHRvIHByb2R1Y2UgYSBjcnlwdGljCj4gbWVzc2FnZToKPiAKPiBtNDpzdGRpbjox
OiBiYWQgZXhwcmVzc2lvbiBpbiBldmFsIChleGNlc3MgaW5wdXQpOiAxfHwoMS8wKQoKVHVybnMg
b3V0ICJldmFsKDEgfHwgMS8wLzApIiBhbHNvIGZhaWxzIHByZS1wYXRjaC4gIEknbGwgYWRqdXN0
IHRoZQp3b3JkaW5nIHNsaWdodGx5IHRvIG1hdGNoIHJlYWxpdHkuCgo+IAo+IGRlc3BpdGUgdGhl
IHNpbWlsYXIgImV2YWwoMXx8MS8wKSIgc3VwcHJlc3NpbmcgdGhhdCBhcyBwYXJ0IG9mCj4gc2hv
cnQtY2lyY3VpdGluZy4gIEl0IHR1cm5zIG91dCB0aGF0IG15IGluaXRpYWwgaW1wbGVtZW50YXRp
b24gb2YKPiBzaG9ydC1jaXJjdWl0aW5nIGluIDEuNC44YiAoYmFjayBpbiAyMDA3ISkgd2FzIG5l
dmVyIGZ1bGx5IHRlc3RlZCBvbgo+IG1vcmUgY29tcGxleCBzaXR1YXRpb25zLgo+IAo+IFRvIHRl
c3QgdGhhdCB0aGUgbmV3IGltcGxlbWVudGF0aW9uIGlzIGluZGVlZCBmYXN0ZXIsIEkgd3JvdGUg
YW4gbTQKPiBzb2x1dGlvbiBbM10gdG8gYW4gQWR2ZW50IG9mIENvZGUgY2hhbGxlbmdlIFs0XSB0
aGF0IHJlcXVpcmVkCj4gY29tcHV0aW5nIDIwMDAgaXRlcmF0aW9ucyBvZiBhIDI0LWJpdCBsaW5l
YXIgZmVlZGJhY2sgc2hpZnQgcmVnaXN0ZXIKPiBvdmVyIDIwMDAgaW5wdXQgdmFsdWVzICgtLXRy
YWNlIHNob3dzIG5lYXJseSAyMCBtaWxsaW9uIGV2YWwgY2FsbHMpLgo+IE9uIG15IG1hY2hpbmUs
IHJ1bnRpbWUgd2l0aCBhbiB1bm9wdGltaXplZCBwcmUtcGF0Y2ggbTQgd2FzIGF0IDc4Cj4gc2Vj
b25kcywgcG9zdC1wYXRjaCBpdCBjb21wbGV0ZXMgaW4gNjYgc2Vjb25kcy4KPiAKPiBbMV0gaHR0
cHM6Ly9qb3VybmFsLnN0dWZmd2l0aHN0dWZmLmNvbS8yMDExLzAzLzE5L3ByYXR0LXBhcnNlcnMt
ZXhwcmVzc2lvbi1wYXJzaW5nLW1hZGUtZWFzeS8KPiBbMl0gaHR0cHM6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvT3BlcmF0b3ItcHJlY2VkZW5jZV9wYXJzZXIKPiBbM10gaHR0cHM6Ly9yZXBvLm9y
LmN6L2FvY19lYmxha2UuZ2l0L2Jsb2IvMWIxMjI3OTFkNDovMjAyNC9kYXkyMi5tNAo+IFs0XSBo
dHRwczovL2FkdmVudG9mY29kZS5jb20vMjAyNC9kYXkvMjIKCk1pc3NpbmcgdGhlICIqIHNyYy9l
dmFsLmMiIGFuZCBzaW1pbGFyIENoYW5nZUxvZyBibHVyYi4gIFdpbGwgZml4LgoKPiAtLS0KPiAg
TkVXUyAgICAgICAgfCAgIDggKwo+ICBkb2MvbTQudGV4aSB8ICAgOCArLQo+ICBzcmMvZXZhbC5j
ICB8IDc3MSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCj4gIDMgZmlsZXMgY2hhbmdlZCwgMjcyIGluc2VydGlvbnMoKyksIDUxNSBkZWxldGlvbnMo
LSkKPiAKPiBkaWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKPiBpbmRleCBiM2FhNDQxYy4uMmJhYzhh
ZDUgMTAwNjQ0Cj4gLS0tIGEvTkVXUwoKPiAgKiogQSBudW1iZXIgb2YgcG9ydGFiaWxpdHkgaW1w
cm92ZW1lbnRzIGluaGVyaXRlZCBmcm9tIGdudWxpYiwgaW5jbHVkaW5nCj4gICAgIHRoZSBhYmls
aXR5IHRvIHBlcmZvcm0gc3RhY2sgb3ZlcmZsb3cgZGV0ZWN0aW9uIG9uIG1vcmUgcGxhdGZvcm1z
Cj4gICAgIHdpdGhvdXQgbGlua2luZyB0byBHTlUgbGlic2lnc2Vndi4KPiAKPiArCj4gICogTm90
ZXdvcnRoeSBjaGFuZ2VzIGluIHJlbGVhc2UgMS40LjE4ZCAoMjAyMS0wNS0xMSkgW2JldGFdCgpU
aGlzIGNsZWFudXAgaXMgZ29vZCwgYnV0IHVucmVsYXRlZCwgYW5kIGZhaWxzICdtYWtlIHN5bnRh
eC1jaGVjaycuCgo+ICsrKyBiL3NyYy9ldmFsLmMKPiBAQCAtNjIsMTkgKzYyLDQxIEBAIHR5cGVk
ZWYgZW51bSBldmFsX2Vycm9yCj4gICAgfQo+ICBldmFsX2Vycm9yOwo+IAo+IC1zdGF0aWMgZXZh
bF9lcnJvciBsb2dpY2FsX29yX3Rlcm0gKGV2YWxfdG9rZW4sIGludDMyX3QgKik7Cj4gLXN0YXRp
YyBldmFsX2Vycm9yIGxvZ2ljYWxfYW5kX3Rlcm0gKGV2YWxfdG9rZW4sIGludDMyX3QgKik7Cj4g
LXN0YXRpYyBldmFsX2Vycm9yIG9yX3Rlcm0gKGV2YWxfdG9rZW4sIGludDMyX3QgKik7Cj4gLXN0
YXRpYyBldmFsX2Vycm9yIHhvcl90ZXJtIChldmFsX3Rva2VuLCBpbnQzMl90ICopOwo+IC1zdGF0
aWMgZXZhbF9lcnJvciBhbmRfdGVybSAoZXZhbF90b2tlbiwgaW50MzJfdCAqKTsKPiAtc3RhdGlj
IGV2YWxfZXJyb3IgZXF1YWxpdHlfdGVybSAoZXZhbF90b2tlbiwgaW50MzJfdCAqKTsKPiAtc3Rh
dGljIGV2YWxfZXJyb3IgY21wX3Rlcm0gKGV2YWxfdG9rZW4sIGludDMyX3QgKik7Cj4gLXN0YXRp
YyBldmFsX2Vycm9yIHNoaWZ0X3Rlcm0gKGV2YWxfdG9rZW4sIGludDMyX3QgKik7Cj4gLXN0YXRp
YyBldmFsX2Vycm9yIGFkZF90ZXJtIChldmFsX3Rva2VuLCBpbnQzMl90ICopOwo+IC1zdGF0aWMg
ZXZhbF9lcnJvciBtdWx0X3Rlcm0gKGV2YWxfdG9rZW4sIGludDMyX3QgKik7Cj4gLXN0YXRpYyBl
dmFsX2Vycm9yIGV4cF90ZXJtIChldmFsX3Rva2VuLCBpbnQzMl90ICopOwo+IC1zdGF0aWMgZXZh
bF9lcnJvciB1bmFyeV90ZXJtIChldmFsX3Rva2VuLCBpbnQzMl90ICopOwo+IC1zdGF0aWMgZXZh
bF9lcnJvciBzaW1wbGVfdGVybSAoZXZhbF90b2tlbiwgaW50MzJfdCAqKTsKPiArLyogUHJlY2Vk
ZW5jZSBvZiBlYWNoIG9wZXJhdG9yLCB6ZXJvIHRvIGVuZCBwYXJzZV9leHByKCkuICAqLwo+ICsK
PiArc3RhdGljIGludCBwcmVjZWRlbmNlW10gPSB7Cj4gKyAgMCwgLyogRVJST1IgKi8KPiArICAw
LCAvKiBCQURPUCAqLwo+ICsgIDksIC8qIFBMVVMgLSBiaW5hcnkgaGFzIHByZWNlZGVuY2UsIHVu
YXJ5IGNvbnN1bWVkIGJ5IHByaW1hcnkoKSAqLwo+ICsgIDksIC8qIE1JTlVTIC0gYmluYXJ5IGhh
cyBwcmVjZWRlbmNlLCB1bmFyeSBjb25zdW1lZCBieSBwcmltYXJ5KCkgKi8KPiArICAxMSwgLyog
RVhQT05FTlQgLSB0aGUgb25seSByaWdodC1hc3NvY2lhdGl2ZSBvcGVyYXRvciAqLwoKSSBqdXN0
IHJlYWxpemVkIHRoZXJlJ3Mgbm8gbmVlZCB0byBoYXZlIHRoaXMgYmUgYSBzZXBhcmF0ZSBhcnJh
eQpsb29rdXAgLSB0aGUgcHJlY2VkZW5jZSB2YWx1ZXMgY2FuIGJlIGVuY29kZWQgZGlyZWN0bHkg
aW50byBlbnVtCmV2YWxfdG9rZW4gKGZvciBleGFtcGxlLCBtYWtlIFBMVVM9OTAsIE1JTlVTPTkx
LCBFWFBPTkVOVD0xMTA7IHRoZW4KdXNlIGV0LzEwIGZvciBtaW5fcHJlYykuCgo+ICsvKiBQYXJz
ZSBgKGV4cHIpJywgdW5hcnkgb3BlcmF0b3JzLCBhbmQgbnVtYmVycy4gICovCj4gK3N0YXRpYyBl
dmFsX2Vycm9yCj4gK3ByaW1hcnkgKGludDMyX3QgKnYxKQo+ICt7Cgo+ICsgICAgY2FzZSBMRUZU
UDoKPiArICAgICAgaWYgKChlciA9IHByaW1hcnkgKHYxKSkgPj0gU1lOVEFYX0VSUk9SKQo+ICsg
ICAgICAgIHJldHVybiBlcjsKPiArICAgICAgaWYgKChlcjIgPSBwYXJzZV9leHByICh2MSwgMSkp
ID49IFNZTlRBWF9FUlJPUikKPiArICAgICAgICByZXR1cm4gZXIyOwo+ICsgICAgICBpZiAoZXIg
PT0gTk9fRVJST1IgJiYgZXIyKQo+ICsgICAgICAgIGVyID0gZXIyOwoKTk9fRVJST1IgPT0gMDsg
dGhlICcmJiBlcjInIGNvbmRpdGlvbiBpcyBwb2ludGxlc3Mgc2luY2UgYXNzaWduaW5nCmVyPTAg
aXMgc2FmZS4KCi0tIApFcmljIEJsYWtlLCBQcmluY2lwYWwgU29mdHdhcmUgRW5naW5lZXIKUmVk
IEhhdCwgSW5jLgpWaXJ0dWFsaXphdGlvbjogIHFlbXUub3JnIHwgbGliZ3Vlc3Rmcy5vcmcKCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpNNC1wYXRjaGVz
IG1haWxpbmcgbGlzdApNNC1wYXRjaGVzQGdudS5vcmcKaHR0cHM6Ly9saXN0cy5nbnUub3JnL21h
aWxtYW4vbGlzdGluZm8vbTQtcGF0Y2hlcwo=