mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: add clear(x) builtin
To clear map, and zero content of slice. Updates #56351 Change-Id: I5f81dfbc465500f5acadaf2c6beb9b5f0d2c4045 Reviewed-on: https://go-review.googlesource.com/c/go/+/453395 Reviewed-by: Cherry Mui <cherryyz@google.com> Reviewed-by: Keith Randall <khr@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Keith Randall <khr@google.com> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com>
This commit is contained in:
parent
bb4ea80bef
commit
b89a840d65
17 changed files with 256 additions and 142 deletions
|
|
@ -42,132 +42,133 @@ func _() {
|
|||
_ = x[OCALLMETH-31]
|
||||
_ = x[OCALLINTER-32]
|
||||
_ = x[OCAP-33]
|
||||
_ = x[OCLOSE-34]
|
||||
_ = x[OCLOSURE-35]
|
||||
_ = x[OCOMPLIT-36]
|
||||
_ = x[OMAPLIT-37]
|
||||
_ = x[OSTRUCTLIT-38]
|
||||
_ = x[OARRAYLIT-39]
|
||||
_ = x[OSLICELIT-40]
|
||||
_ = x[OPTRLIT-41]
|
||||
_ = x[OCONV-42]
|
||||
_ = x[OCONVIFACE-43]
|
||||
_ = x[OCONVIDATA-44]
|
||||
_ = x[OCONVNOP-45]
|
||||
_ = x[OCOPY-46]
|
||||
_ = x[ODCL-47]
|
||||
_ = x[ODCLFUNC-48]
|
||||
_ = x[ODCLCONST-49]
|
||||
_ = x[ODCLTYPE-50]
|
||||
_ = x[ODELETE-51]
|
||||
_ = x[ODOT-52]
|
||||
_ = x[ODOTPTR-53]
|
||||
_ = x[ODOTMETH-54]
|
||||
_ = x[ODOTINTER-55]
|
||||
_ = x[OXDOT-56]
|
||||
_ = x[ODOTTYPE-57]
|
||||
_ = x[ODOTTYPE2-58]
|
||||
_ = x[OEQ-59]
|
||||
_ = x[ONE-60]
|
||||
_ = x[OLT-61]
|
||||
_ = x[OLE-62]
|
||||
_ = x[OGE-63]
|
||||
_ = x[OGT-64]
|
||||
_ = x[ODEREF-65]
|
||||
_ = x[OINDEX-66]
|
||||
_ = x[OINDEXMAP-67]
|
||||
_ = x[OKEY-68]
|
||||
_ = x[OSTRUCTKEY-69]
|
||||
_ = x[OLEN-70]
|
||||
_ = x[OMAKE-71]
|
||||
_ = x[OMAKECHAN-72]
|
||||
_ = x[OMAKEMAP-73]
|
||||
_ = x[OMAKESLICE-74]
|
||||
_ = x[OMAKESLICECOPY-75]
|
||||
_ = x[OMUL-76]
|
||||
_ = x[ODIV-77]
|
||||
_ = x[OMOD-78]
|
||||
_ = x[OLSH-79]
|
||||
_ = x[ORSH-80]
|
||||
_ = x[OAND-81]
|
||||
_ = x[OANDNOT-82]
|
||||
_ = x[ONEW-83]
|
||||
_ = x[ONOT-84]
|
||||
_ = x[OBITNOT-85]
|
||||
_ = x[OPLUS-86]
|
||||
_ = x[ONEG-87]
|
||||
_ = x[OOROR-88]
|
||||
_ = x[OPANIC-89]
|
||||
_ = x[OPRINT-90]
|
||||
_ = x[OPRINTN-91]
|
||||
_ = x[OPAREN-92]
|
||||
_ = x[OSEND-93]
|
||||
_ = x[OSLICE-94]
|
||||
_ = x[OSLICEARR-95]
|
||||
_ = x[OSLICESTR-96]
|
||||
_ = x[OSLICE3-97]
|
||||
_ = x[OSLICE3ARR-98]
|
||||
_ = x[OSLICEHEADER-99]
|
||||
_ = x[OSTRINGHEADER-100]
|
||||
_ = x[ORECOVER-101]
|
||||
_ = x[ORECOVERFP-102]
|
||||
_ = x[ORECV-103]
|
||||
_ = x[ORUNESTR-104]
|
||||
_ = x[OSELRECV2-105]
|
||||
_ = x[OREAL-106]
|
||||
_ = x[OIMAG-107]
|
||||
_ = x[OCOMPLEX-108]
|
||||
_ = x[OALIGNOF-109]
|
||||
_ = x[OOFFSETOF-110]
|
||||
_ = x[OSIZEOF-111]
|
||||
_ = x[OUNSAFEADD-112]
|
||||
_ = x[OUNSAFESLICE-113]
|
||||
_ = x[OUNSAFESLICEDATA-114]
|
||||
_ = x[OUNSAFESTRING-115]
|
||||
_ = x[OUNSAFESTRINGDATA-116]
|
||||
_ = x[OMETHEXPR-117]
|
||||
_ = x[OMETHVALUE-118]
|
||||
_ = x[OBLOCK-119]
|
||||
_ = x[OBREAK-120]
|
||||
_ = x[OCASE-121]
|
||||
_ = x[OCONTINUE-122]
|
||||
_ = x[ODEFER-123]
|
||||
_ = x[OFALL-124]
|
||||
_ = x[OFOR-125]
|
||||
_ = x[OGOTO-126]
|
||||
_ = x[OIF-127]
|
||||
_ = x[OLABEL-128]
|
||||
_ = x[OGO-129]
|
||||
_ = x[ORANGE-130]
|
||||
_ = x[ORETURN-131]
|
||||
_ = x[OSELECT-132]
|
||||
_ = x[OSWITCH-133]
|
||||
_ = x[OTYPESW-134]
|
||||
_ = x[OFUNCINST-135]
|
||||
_ = x[OINLCALL-136]
|
||||
_ = x[OEFACE-137]
|
||||
_ = x[OITAB-138]
|
||||
_ = x[OIDATA-139]
|
||||
_ = x[OSPTR-140]
|
||||
_ = x[OCFUNC-141]
|
||||
_ = x[OCHECKNIL-142]
|
||||
_ = x[ORESULT-143]
|
||||
_ = x[OINLMARK-144]
|
||||
_ = x[OLINKSYMOFFSET-145]
|
||||
_ = x[OJUMPTABLE-146]
|
||||
_ = x[ODYNAMICDOTTYPE-147]
|
||||
_ = x[ODYNAMICDOTTYPE2-148]
|
||||
_ = x[ODYNAMICTYPE-149]
|
||||
_ = x[OTAILCALL-150]
|
||||
_ = x[OGETG-151]
|
||||
_ = x[OGETCALLERPC-152]
|
||||
_ = x[OGETCALLERSP-153]
|
||||
_ = x[OEND-154]
|
||||
_ = x[OCLEAR-34]
|
||||
_ = x[OCLOSE-35]
|
||||
_ = x[OCLOSURE-36]
|
||||
_ = x[OCOMPLIT-37]
|
||||
_ = x[OMAPLIT-38]
|
||||
_ = x[OSTRUCTLIT-39]
|
||||
_ = x[OARRAYLIT-40]
|
||||
_ = x[OSLICELIT-41]
|
||||
_ = x[OPTRLIT-42]
|
||||
_ = x[OCONV-43]
|
||||
_ = x[OCONVIFACE-44]
|
||||
_ = x[OCONVIDATA-45]
|
||||
_ = x[OCONVNOP-46]
|
||||
_ = x[OCOPY-47]
|
||||
_ = x[ODCL-48]
|
||||
_ = x[ODCLFUNC-49]
|
||||
_ = x[ODCLCONST-50]
|
||||
_ = x[ODCLTYPE-51]
|
||||
_ = x[ODELETE-52]
|
||||
_ = x[ODOT-53]
|
||||
_ = x[ODOTPTR-54]
|
||||
_ = x[ODOTMETH-55]
|
||||
_ = x[ODOTINTER-56]
|
||||
_ = x[OXDOT-57]
|
||||
_ = x[ODOTTYPE-58]
|
||||
_ = x[ODOTTYPE2-59]
|
||||
_ = x[OEQ-60]
|
||||
_ = x[ONE-61]
|
||||
_ = x[OLT-62]
|
||||
_ = x[OLE-63]
|
||||
_ = x[OGE-64]
|
||||
_ = x[OGT-65]
|
||||
_ = x[ODEREF-66]
|
||||
_ = x[OINDEX-67]
|
||||
_ = x[OINDEXMAP-68]
|
||||
_ = x[OKEY-69]
|
||||
_ = x[OSTRUCTKEY-70]
|
||||
_ = x[OLEN-71]
|
||||
_ = x[OMAKE-72]
|
||||
_ = x[OMAKECHAN-73]
|
||||
_ = x[OMAKEMAP-74]
|
||||
_ = x[OMAKESLICE-75]
|
||||
_ = x[OMAKESLICECOPY-76]
|
||||
_ = x[OMUL-77]
|
||||
_ = x[ODIV-78]
|
||||
_ = x[OMOD-79]
|
||||
_ = x[OLSH-80]
|
||||
_ = x[ORSH-81]
|
||||
_ = x[OAND-82]
|
||||
_ = x[OANDNOT-83]
|
||||
_ = x[ONEW-84]
|
||||
_ = x[ONOT-85]
|
||||
_ = x[OBITNOT-86]
|
||||
_ = x[OPLUS-87]
|
||||
_ = x[ONEG-88]
|
||||
_ = x[OOROR-89]
|
||||
_ = x[OPANIC-90]
|
||||
_ = x[OPRINT-91]
|
||||
_ = x[OPRINTN-92]
|
||||
_ = x[OPAREN-93]
|
||||
_ = x[OSEND-94]
|
||||
_ = x[OSLICE-95]
|
||||
_ = x[OSLICEARR-96]
|
||||
_ = x[OSLICESTR-97]
|
||||
_ = x[OSLICE3-98]
|
||||
_ = x[OSLICE3ARR-99]
|
||||
_ = x[OSLICEHEADER-100]
|
||||
_ = x[OSTRINGHEADER-101]
|
||||
_ = x[ORECOVER-102]
|
||||
_ = x[ORECOVERFP-103]
|
||||
_ = x[ORECV-104]
|
||||
_ = x[ORUNESTR-105]
|
||||
_ = x[OSELRECV2-106]
|
||||
_ = x[OREAL-107]
|
||||
_ = x[OIMAG-108]
|
||||
_ = x[OCOMPLEX-109]
|
||||
_ = x[OALIGNOF-110]
|
||||
_ = x[OOFFSETOF-111]
|
||||
_ = x[OSIZEOF-112]
|
||||
_ = x[OUNSAFEADD-113]
|
||||
_ = x[OUNSAFESLICE-114]
|
||||
_ = x[OUNSAFESLICEDATA-115]
|
||||
_ = x[OUNSAFESTRING-116]
|
||||
_ = x[OUNSAFESTRINGDATA-117]
|
||||
_ = x[OMETHEXPR-118]
|
||||
_ = x[OMETHVALUE-119]
|
||||
_ = x[OBLOCK-120]
|
||||
_ = x[OBREAK-121]
|
||||
_ = x[OCASE-122]
|
||||
_ = x[OCONTINUE-123]
|
||||
_ = x[ODEFER-124]
|
||||
_ = x[OFALL-125]
|
||||
_ = x[OFOR-126]
|
||||
_ = x[OGOTO-127]
|
||||
_ = x[OIF-128]
|
||||
_ = x[OLABEL-129]
|
||||
_ = x[OGO-130]
|
||||
_ = x[ORANGE-131]
|
||||
_ = x[ORETURN-132]
|
||||
_ = x[OSELECT-133]
|
||||
_ = x[OSWITCH-134]
|
||||
_ = x[OTYPESW-135]
|
||||
_ = x[OFUNCINST-136]
|
||||
_ = x[OINLCALL-137]
|
||||
_ = x[OEFACE-138]
|
||||
_ = x[OITAB-139]
|
||||
_ = x[OIDATA-140]
|
||||
_ = x[OSPTR-141]
|
||||
_ = x[OCFUNC-142]
|
||||
_ = x[OCHECKNIL-143]
|
||||
_ = x[ORESULT-144]
|
||||
_ = x[OINLMARK-145]
|
||||
_ = x[OLINKSYMOFFSET-146]
|
||||
_ = x[OJUMPTABLE-147]
|
||||
_ = x[ODYNAMICDOTTYPE-148]
|
||||
_ = x[ODYNAMICDOTTYPE2-149]
|
||||
_ = x[ODYNAMICTYPE-150]
|
||||
_ = x[OTAILCALL-151]
|
||||
_ = x[OGETG-152]
|
||||
_ = x[OGETCALLERPC-153]
|
||||
_ = x[OGETCALLERSP-154]
|
||||
_ = x[OEND-155]
|
||||
}
|
||||
|
||||
const _Op_name = "XXXNAMENONAMETYPELITERALNILADDSUBORXORADDSTRADDRANDANDAPPENDBYTES2STRBYTES2STRTMPRUNES2STRSTR2BYTESSTR2BYTESTMPSTR2RUNESSLICE2ARRSLICE2ARRPTRASAS2AS2DOTTYPEAS2FUNCAS2MAPRAS2RECVASOPCALLCALLFUNCCALLMETHCALLINTERCAPCLOSECLOSURECOMPLITMAPLITSTRUCTLITARRAYLITSLICELITPTRLITCONVCONVIFACECONVIDATACONVNOPCOPYDCLDCLFUNCDCLCONSTDCLTYPEDELETEDOTDOTPTRDOTMETHDOTINTERXDOTDOTTYPEDOTTYPE2EQNELTLEGEGTDEREFINDEXINDEXMAPKEYSTRUCTKEYLENMAKEMAKECHANMAKEMAPMAKESLICEMAKESLICECOPYMULDIVMODLSHRSHANDANDNOTNEWNOTBITNOTPLUSNEGORORPANICPRINTPRINTNPARENSENDSLICESLICEARRSLICESTRSLICE3SLICE3ARRSLICEHEADERSTRINGHEADERRECOVERRECOVERFPRECVRUNESTRSELRECV2REALIMAGCOMPLEXALIGNOFOFFSETOFSIZEOFUNSAFEADDUNSAFESLICEUNSAFESLICEDATAUNSAFESTRINGUNSAFESTRINGDATAMETHEXPRMETHVALUEBLOCKBREAKCASECONTINUEDEFERFALLFORGOTOIFLABELGORANGERETURNSELECTSWITCHTYPESWFUNCINSTINLCALLEFACEITABIDATASPTRCFUNCCHECKNILRESULTINLMARKLINKSYMOFFSETJUMPTABLEDYNAMICDOTTYPEDYNAMICDOTTYPE2DYNAMICTYPETAILCALLGETGGETCALLERPCGETCALLERSPEND"
|
||||
const _Op_name = "XXXNAMENONAMETYPELITERALNILADDSUBORXORADDSTRADDRANDANDAPPENDBYTES2STRBYTES2STRTMPRUNES2STRSTR2BYTESSTR2BYTESTMPSTR2RUNESSLICE2ARRSLICE2ARRPTRASAS2AS2DOTTYPEAS2FUNCAS2MAPRAS2RECVASOPCALLCALLFUNCCALLMETHCALLINTERCAPCLEARCLOSECLOSURECOMPLITMAPLITSTRUCTLITARRAYLITSLICELITPTRLITCONVCONVIFACECONVIDATACONVNOPCOPYDCLDCLFUNCDCLCONSTDCLTYPEDELETEDOTDOTPTRDOTMETHDOTINTERXDOTDOTTYPEDOTTYPE2EQNELTLEGEGTDEREFINDEXINDEXMAPKEYSTRUCTKEYLENMAKEMAKECHANMAKEMAPMAKESLICEMAKESLICECOPYMULDIVMODLSHRSHANDANDNOTNEWNOTBITNOTPLUSNEGORORPANICPRINTPRINTNPARENSENDSLICESLICEARRSLICESTRSLICE3SLICE3ARRSLICEHEADERSTRINGHEADERRECOVERRECOVERFPRECVRUNESTRSELRECV2REALIMAGCOMPLEXALIGNOFOFFSETOFSIZEOFUNSAFEADDUNSAFESLICEUNSAFESLICEDATAUNSAFESTRINGUNSAFESTRINGDATAMETHEXPRMETHVALUEBLOCKBREAKCASECONTINUEDEFERFALLFORGOTOIFLABELGORANGERETURNSELECTSWITCHTYPESWFUNCINSTINLCALLEFACEITABIDATASPTRCFUNCCHECKNILRESULTINLMARKLINKSYMOFFSETJUMPTABLEDYNAMICDOTTYPEDYNAMICDOTTYPE2DYNAMICTYPETAILCALLGETGGETCALLERPCGETCALLERSPEND"
|
||||
|
||||
var _Op_index = [...]uint16{0, 3, 7, 13, 17, 24, 27, 30, 33, 35, 38, 44, 48, 54, 60, 69, 81, 90, 99, 111, 120, 129, 141, 143, 146, 156, 163, 170, 177, 181, 185, 193, 201, 210, 213, 218, 225, 232, 238, 247, 255, 263, 269, 273, 282, 291, 298, 302, 305, 312, 320, 327, 333, 336, 342, 349, 357, 361, 368, 376, 378, 380, 382, 384, 386, 388, 393, 398, 406, 409, 418, 421, 425, 433, 440, 449, 462, 465, 468, 471, 474, 477, 480, 486, 489, 492, 498, 502, 505, 509, 514, 519, 525, 530, 534, 539, 547, 555, 561, 570, 581, 593, 600, 609, 613, 620, 628, 632, 636, 643, 650, 658, 664, 673, 684, 699, 711, 727, 735, 744, 749, 754, 758, 766, 771, 775, 778, 782, 784, 789, 791, 796, 802, 808, 814, 820, 828, 835, 840, 844, 849, 853, 858, 866, 872, 879, 892, 901, 915, 930, 941, 949, 953, 964, 975, 978}
|
||||
var _Op_index = [...]uint16{0, 3, 7, 13, 17, 24, 27, 30, 33, 35, 38, 44, 48, 54, 60, 69, 81, 90, 99, 111, 120, 129, 141, 143, 146, 156, 163, 170, 177, 181, 185, 193, 201, 210, 213, 218, 223, 230, 237, 243, 252, 260, 268, 274, 278, 287, 296, 303, 307, 310, 317, 325, 332, 338, 341, 347, 354, 362, 366, 373, 381, 383, 385, 387, 389, 391, 393, 398, 403, 411, 414, 423, 426, 430, 438, 445, 454, 467, 470, 473, 476, 479, 482, 485, 491, 494, 497, 503, 507, 510, 514, 519, 524, 530, 535, 539, 544, 552, 560, 566, 575, 586, 598, 605, 614, 618, 625, 633, 637, 641, 648, 655, 663, 669, 678, 689, 704, 716, 732, 740, 749, 754, 759, 763, 771, 776, 780, 783, 787, 789, 794, 796, 801, 807, 813, 819, 825, 833, 840, 845, 849, 854, 858, 863, 871, 877, 884, 897, 906, 920, 935, 946, 954, 958, 969, 980, 983}
|
||||
|
||||
func (i Op) String() string {
|
||||
if i >= Op(len(_Op_index)-1) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue