[ruby-core:118759] [Ruby master Bug#20659] Speed regression of `parse.y` parser after numeric nodes were introduced
From:
"alanwu (Alan Wu) via ruby-core" <ruby-core@...>
Date:
2024-07-31 12:38:40 UTC
List:
ruby-core #118759
SXNzdWUgIzIwNjU5IGhhcyBiZWVuIHVwZGF0ZWQgYnkgYWxhbnd1IChBbGFuIFd1KS4NCg0KDQpT b21lIGxpZ2h0IHByb2ZpbGluZyBzaG93cyB0aGF0IHRoaXMgd29ya2xvYWQgc3BlbmRzIG92ZXIg aGFsZiBvZiBpdHMgdGltZSBpbiBgS2VybmVsI3JlcXVpcmVgLiBJIGRvbid0IHRoaW5rIGl0J3Mg Y29taW5nIGZyb20gYGV2YWxgcyBpbiB0aGUgYm9keSBvZiB0aGUgYmVuY2htYXJrLCBidXQgcmF0 aGVyIHRoZSBsb2FkaW5nIG9mIGl0LiBSdW5uaW5nIG9uZSBpdGVyYXRpb24gaXMgaW1wb3J0YW50 IHRvIHRyaWdnZXIgYWxsIHRoZSBhdXRvbG9hZHMuDQoNClRoZSBnZW0gZG9lcyBjb250YWluIGEg bGFyZ2UgbnVtYmVyIG9mIGludGVnZXIgbGl0ZXJhbHMgaW4gdGhlIGdlbmVyYXRlZCBwYXJzZXJz IGl0IGJ1bmRsZXMuIEZvciBleGFtcGxlOiA8aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQu Y29tL21pa2VsL21haWwvbWFzdGVyL2xpYi9tYWlsL3BhcnNlcnMvYWRkcmVzc19saXN0c19wYXJz ZXIucmI+DQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkJ1ZyAj MjA2NTk6IFNwZWVkIHJlZ3Jlc3Npb24gb2YgYHBhcnNlLnlgIHBhcnNlciBhZnRlciBudW1lcmlj IG5vZGVzIHdlcmUgaW50cm9kdWNlZA0KaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVz LzIwNjU5I2NoYW5nZS0xMDkzMDUNCg0KKiBBdXRob3I6IGFsYW53dSAoQWxhbiBXdSkNCiogU3Rh dHVzOiBBc3NpZ25lZA0KKiBBc3NpZ25lZTogeXVpLWtuayAoS2FuZWtvIFl1aWNoaXJvKQ0KKiBy dWJ5IC12OiBydWJ5IDMuNC4wZGV2ICgyMDI0LTA3LTMwVDE0OjAxOjQzWiBtYXN0ZXIgMTE2NGI2 YTdiYSkgW3g4Nl82NC1saW51eF0NCiogQmFja3BvcnQ6IDMuMTogVU5LTk9XTiwgMy4yOiBVTktO T1dOLCAzLjM6IFVOS05PV04NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NClRoZSBbYG1haWxgIGJlbmNobWFyayBmcm9tIHlqaXQtYmVuY2hdWzFdIGlzIGFib3V0IDIw JSBzbG93ZXIgb24gYG1hc3RlcmAgY29tcGFyZWQgdG8gY29tbWl0Ojk4ZWVhZGM5ICgiRGV2ZWxv cG1lbnQgb2YgMy40LjAgc3RhcnRlZC4iKSBhcyB0aGUgYmFzZWxpbmUsIGNvbXBhcmluZyBydW5u aW5nIHRpbWUgb2YgdGhlIFJ1YnkgcHJvY2VzcyBydW5uaW5nIHRoZSBiZW5jaG1hcmsgZm9yIGEg c2luZ2xlIGl0ZXJhdGlvbi4gTXVjaCBvZiB0aGlzIHdvcmtsb2FkIGlzIFJ1YnkgcGFyc2luZy4N Cg0KYGBgDQokIGh5cGVyZmluZSAtTCBydWJ5ICczLjMtZXF1aXYvYmluL3J1YnksYmVmb3JlLW51 bWVyaWMtbm9kZXMvYmluL3J1YnksbWFzdGVyL2Jpbi9ydWJ5JyAnfi8ucnViaWVzL3tydWJ5fSAt SWhhcm5lc3Mtb25jZSBiZW5jaG1hcmtzL21haWwvYmVuY2htYXJrLnJiJw0KQmVuY2htYXJrIDE6 IH4vLnJ1Ymllcy8zLjMtZXF1aXYvYmluL3J1YnkgLUloYXJuZXNzLW9uY2UgYmVuY2htYXJrcy9t YWlsL2JlbmNobWFyay5yYg0KICBUaW1lIChtZWFuIMKxIM+DKTogICAgIDg4OS4wIG1zIMKxICAg Mi4wIG1zICAgIFtVc2VyOiA3NzYuOSBtcywgU3lzdGVtOiAxMTEuNyBtc10NCiAgUmFuZ2UgKG1p biDigKYgbWF4KTogICA4ODUuNyBtcyDigKYgODkyLjEgbXMgICAgMTAgcnVucw0KIA0KQmVuY2ht YXJrIDI6IH4vLnJ1Ymllcy9iZWZvcmUtbnVtZXJpYy1ub2Rlcy9iaW4vcnVieSAtSWhhcm5lc3Mt b25jZSBiZW5jaG1hcmtzL21haWwvYmVuY2htYXJrLnJiDQogIFRpbWUgKG1lYW4gwrEgz4MpOiAg ICAgODkxLjcgbXMgwrEgICAxLjYgbXMgICAgW1VzZXI6IDc5NC41IG1zLCBTeXN0ZW06IDk2Ljkg bXNdDQogIFJhbmdlIChtaW4g4oCmIG1heCk6ICAgODg5LjAgbXMg4oCmIDg5NC43IG1zICAgIDEw IHJ1bnMNCiANCkJlbmNobWFyayAzOiB+Ly5ydWJpZXMvbWFzdGVyL2Jpbi9ydWJ5IC1JaGFybmVz cy1vbmNlIGJlbmNobWFya3MvbWFpbC9iZW5jaG1hcmsucmINCiAgVGltZSAobWVhbiDCsSDPgyk6 ICAgICAgMS4wODYgcyDCsSAgMC4wMDMgcyAgICBbVXNlcjogMC45NTEgcywgU3lzdGVtOiAwLjEz NCBzXQ0KICBSYW5nZSAobWluIOKApiBtYXgpOiAgICAxLjA4MCBzIOKApiAgMS4wOTEgcyAgICAx MCBydW5zDQogDQpTdW1tYXJ5DQogICd+Ly5ydWJpZXMvMy4zLWVxdWl2L2Jpbi9ydWJ5IC1JaGFy bmVzcy1vbmNlIGJlbmNobWFya3MvbWFpbC9iZW5jaG1hcmsucmInIHJhbg0KICAgIDEuMDAgwrEg MC4wMCB0aW1lcyBmYXN0ZXIgdGhhbiAnfi8ucnViaWVzL2JlZm9yZS1udW1lcmljLW5vZGVzL2Jp bi9ydWJ5IC1JaGFybmVzcy1vbmNlIGJlbmNobWFya3MvbWFpbC9iZW5jaG1hcmsucmInDQogICAg MS4yMiDCsSAwLjAwIHRpbWVzIGZhc3RlciB0aGFuICd+Ly5ydWJpZXMvbWFzdGVyL2Jpbi9ydWJ5 IC1JaGFybmVzcy1vbmNlIGJlbmNobWFya3MvbWFpbC9iZW5jaG1hcmsucmInDQoNCiQgZm9yIHRh ZyBpbiAzLjMtZXF1aXYgbWFzdGVyIGJlZm9yZS1udW1lcmljLW5vZGVzOyBkbyBlY2hvICR0YWc6 ICQofi8ucnViaWVzLyR0YWcvYmluL3J1YnkgLXYpOyBkb25lDQozLjMtZXF1aXY6IHJ1YnkgMy40 LjBkZXYgKDIwMjMtMTItMjVUMDk6MTM6NDBaIG1hc3RlciA5OGVlYWRjOTMyKSBbeDg2XzY0LWxp bnV4XQ0KbWFzdGVyOiBydWJ5IDMuNC4wZGV2ICgyMDI0LTA3LTMwVDE0OjAxOjQzWiBtYXN0ZXIg MTE2NGI2YTdiYSkgW3g4Nl82NC1saW51eF0NCmJlZm9yZS1udW1lcmljLW5vZGVzOiBydWJ5IDMu NC4wZGV2ICgyMDI0LTAxLTA2VDE4OjI2OjM4WiBtYXN0ZXIgNzZhZmJkYTViNSkgW3g4Nl82NC1s aW51eF0NCmBgYA0KDQpVc2luZyBWYWxncmluZCdzIERIQVQgcmV2ZWFscyB0aGF0IGNvbW1pdDox YjhkMDExMzZjM2ZmNmM2MDMyNWM3NjA5ZDYxZTE5YWM0MmFjZDlmICgiSW50cm9kdWNlIE51bWVy aWMgTm9kZSdzIikgaXNzdWVzIHJvdWdobHkgMyB0aW1lcyBtb3JlIG1hbGxvYygzKSBjYWxscyBj b21wYXJlZCB0byB0aGUgYmFzZWxpbmUsIG1vc3Qgb2YgdGhlbSBjb21pbmcgZnJvbSBzdHJkdXAo KSBjYWxscyBpbiBzZXRfbnVtYmVyX2xpdGVyYWwoKS4NCg0KQ29tcGFyaXNvbiB3aXRoIGAtLXBh cnNlcj1wcmlzbWAsIGZvciBpbnRlcmVzdDoNCg0KPGRldGFpbHM+DQoNCmBgYA0KJCBoeXBlcmZp bmUgLUwgcnVieSAnMy4zLWVxdWl2L2Jpbi9ydWJ5LGJlZm9yZS1udW1lcmljLW5vZGVzL2Jpbi9y dWJ5LG1hc3Rlci9iaW4vcnVieSxtYXN0ZXIvYmluL3J1YnkgLS1wYXJzZXI9cHJpc20nIFwNCiAg ICAgICAnfi8ucnViaWVzL3tydWJ5fSAtSWhhcm5lc3Mtb25jZSBiZW5jaG1hcmtzL21haWwvYmVu Y2htYXJrLnJiJw0KQmVuY2htYXJrIDE6IH4vLnJ1Ymllcy8zLjMtZXF1aXYvYmluL3J1YnkgLUlo YXJuZXNzLW9uY2UgYmVuY2htYXJrcy9tYWlsL2JlbmNobWFyay5yYg0KICBUaW1lIChtZWFuIMKx IM+DKTogICAgIDg4OS43IG1zIMKxICAgMi42IG1zICAgIFtVc2VyOiA3NzEuNCBtcywgU3lzdGVt OiAxMTguMCBtc10NCiAgUmFuZ2UgKG1pbiDigKYgbWF4KTogICA4ODUuOCBtcyDigKYgODk0LjYg bXMgICAgMTAgcnVucw0KIA0KQmVuY2htYXJrIDI6IH4vLnJ1Ymllcy9iZWZvcmUtbnVtZXJpYy1u b2Rlcy9iaW4vcnVieSAtSWhhcm5lc3Mtb25jZSBiZW5jaG1hcmtzL21haWwvYmVuY2htYXJrLnJi DQogIFRpbWUgKG1lYW4gwrEgz4MpOiAgICAgODkwLjQgbXMgwrEgICAxLjYgbXMgICAgW1VzZXI6 IDc3Ni44IG1zLCBTeXN0ZW06IDExMy4zIG1zXQ0KICBSYW5nZSAobWluIOKApiBtYXgpOiAgIDg4 OC40IG1zIOKApiA4OTIuOSBtcyAgICAxMCBydW5zDQogDQpCZW5jaG1hcmsgMzogfi8ucnViaWVz L21hc3Rlci9iaW4vcnVieSAtSWhhcm5lc3Mtb25jZSBiZW5jaG1hcmtzL21haWwvYmVuY2htYXJr LnJiDQogIFRpbWUgKG1lYW4gwrEgz4MpOiAgICAgIDEuMDg3IHMgwrEgIDAuMDA0IHMgICAgW1Vz ZXI6IDAuOTY4IHMsIFN5c3RlbTogMC4xMTkgc10NCiAgUmFuZ2UgKG1pbiDigKYgbWF4KTogICAg MS4wODMgcyDigKYgIDEuMDk3IHMgICAgMTAgcnVucw0KIA0KQmVuY2htYXJrIDQ6IH4vLnJ1Ymll cy9tYXN0ZXIvYmluL3J1YnkgLS1wYXJzZXI9cHJpc20gLUloYXJuZXNzLW9uY2UgYmVuY2htYXJr cy9tYWlsL2JlbmNobWFyay5yYg0KICBUaW1lIChtZWFuIMKxIM+DKTogICAgIDgyNi45IG1zIMKx ICAgMi4xIG1zICAgIFtVc2VyOiA3MjUuOCBtcywgU3lzdGVtOiAxMDAuNyBtc10NCiAgUmFuZ2Ug KG1pbiDigKYgbWF4KTogICA4MjMuNiBtcyDigKYgODMwLjkgbXMgICAgMTAgcnVucw0KIA0KU3Vt bWFyeQ0KICAnfi8ucnViaWVzL21hc3Rlci9iaW4vcnVieSAtLXBhcnNlcj1wcmlzbSAtSWhhcm5l c3Mtb25jZSBiZW5jaG1hcmtzL21haWwvYmVuY2htYXJrLnJiJyByYW4NCiAgICAxLjA4IMKxIDAu MDAgdGltZXMgZmFzdGVyIHRoYW4gJ34vLnJ1Ymllcy8zLjMtZXF1aXYvYmluL3J1YnkgLUloYXJu ZXNzLW9uY2UgYmVuY2htYXJrcy9tYWlsL2JlbmNobWFyay5yYicNCiAgICAxLjA4IMKxIDAuMDAg dGltZXMgZmFzdGVyIHRoYW4gJ34vLnJ1Ymllcy9iZWZvcmUtbnVtZXJpYy1ub2Rlcy9iaW4vcnVi eSAtSWhhcm5lc3Mtb25jZSBiZW5jaG1hcmtzL21haWwvYmVuY2htYXJrLnJiJw0KICAgIDEuMzEg wrEgMC4wMSB0aW1lcyBmYXN0ZXIgdGhhbiAnfi8ucnViaWVzL21hc3Rlci9iaW4vcnVieSAtSWhh cm5lc3Mtb25jZSBiZW5jaG1hcmtzL21haWwvYmVuY2htYXJrLnJiJw0KYGBgDQoNCjwvZGV0YWls cz4NCg0KWzFdOiBodHRwczovL2dpdGh1Yi5jb20vU2hvcGlmeS95aml0LWJlbmNoL2Jsb2IvYjhm MWJkODkzMWQ0NzU3YWZkYWU5MzNlZjZmMTFlMDc2N2JhOTBiOC9iZW5jaG1hcmtzL21haWwvYmVu Y2htYXJrLnJiDQoNCg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0KIF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KIHJ1YnktY29yZSBtYWls aW5nIGxpc3QgLS0gcnVieS1jb3JlQG1sLnJ1YnktbGFuZy5vcmcKIFRvIHVuc3Vic2NyaWJlIHNl bmQgYW4gZW1haWwgdG8gcnVieS1jb3JlLWxlYXZlQG1sLnJ1YnktbGFuZy5vcmcKIHJ1YnktY29y ZSBpbmZvIC0tIGh0dHBzOi8vbWwucnVieS1sYW5nLm9yZy9tYWlsbWFuMy9saXN0cy9ydWJ5LWNv cmUubWwucnVieS1sYW5nLm9yZy8=