mirror of
https://github.com/golang/go.git
synced 2025-05-20 23:03:26 +00:00
Previously, we used OKEY nodes to represent keyed struct literal elements. The field names were represented by an ONAME node, but this is clumsy because it's the only remaining case where ONAME was used to represent a bare identifier and not a variable. This CL introduces a new OSTRUCTKEY node op for use in struct literals. These ops instead store the field name in the node's own Sym field. This is similar in spirit to golang.org/cl/20890. Significant reduction in allocations for struct literal heavy code like package unicode: name old time/op new time/op delta Template 345ms ± 6% 341ms ± 6% ~ (p=0.141 n=29+28) Unicode 200ms ± 9% 184ms ± 7% -7.77% (p=0.000 n=29+30) GoTypes 1.04s ± 3% 1.05s ± 3% ~ (p=0.096 n=30+30) Compiler 4.47s ± 9% 4.49s ± 6% ~ (p=0.890 n=29+29) name old user-ns/op new user-ns/op delta Template 523M ±13% 516M ±17% ~ (p=0.400 n=29+30) Unicode 334M ±27% 314M ±30% ~ (p=0.093 n=30+30) GoTypes 1.53G ±10% 1.52G ±10% ~ (p=0.572 n=30+30) Compiler 6.28G ± 7% 6.34G ±11% ~ (p=0.300 n=30+30) name old alloc/op new alloc/op delta Template 44.5MB ± 0% 44.4MB ± 0% -0.35% (p=0.000 n=27+30) Unicode 39.2MB ± 0% 34.5MB ± 0% -11.79% (p=0.000 n=26+30) GoTypes 125MB ± 0% 125MB ± 0% -0.12% (p=0.000 n=29+30) Compiler 515MB ± 0% 515MB ± 0% -0.10% (p=0.000 n=29+30) name old allocs/op new allocs/op delta Template 426k ± 0% 424k ± 0% -0.39% (p=0.000 n=29+30) Unicode 374k ± 0% 323k ± 0% -13.67% (p=0.000 n=29+30) GoTypes 1.21M ± 0% 1.21M ± 0% -0.14% (p=0.000 n=29+29) Compiler 4.40M ± 0% 4.39M ± 0% -0.13% (p=0.000 n=29+30) Passes toolstash/buildall. Change-Id: Iba4ee765dd1748f67e52fcade1cd75c9f6e13fa9 Reviewed-on: https://go-review.googlesource.com/30974 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
171 lines
4.7 KiB
Go
171 lines
4.7 KiB
Go
// Copyright 2011 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package gc
|
|
|
|
// auto generated by go tool dist
|
|
var opnames = []string{
|
|
OXXX: "XXX",
|
|
ONAME: "NAME",
|
|
ONONAME: "NONAME",
|
|
OTYPE: "TYPE",
|
|
OPACK: "PACK",
|
|
OLITERAL: "LITERAL",
|
|
OADD: "ADD",
|
|
OSUB: "SUB",
|
|
OOR: "OR",
|
|
OXOR: "XOR",
|
|
OADDSTR: "ADDSTR",
|
|
OADDR: "ADDR",
|
|
OANDAND: "ANDAND",
|
|
OAPPEND: "APPEND",
|
|
OARRAYBYTESTR: "ARRAYBYTESTR",
|
|
OARRAYBYTESTRTMP: "ARRAYBYTESTRTMP",
|
|
OARRAYRUNESTR: "ARRAYRUNESTR",
|
|
OSTRARRAYBYTE: "STRARRAYBYTE",
|
|
OSTRARRAYBYTETMP: "STRARRAYBYTETMP",
|
|
OSTRARRAYRUNE: "STRARRAYRUNE",
|
|
OAS: "AS",
|
|
OAS2: "AS2",
|
|
OAS2FUNC: "AS2FUNC",
|
|
OAS2RECV: "AS2RECV",
|
|
OAS2MAPR: "AS2MAPR",
|
|
OAS2DOTTYPE: "AS2DOTTYPE",
|
|
OASOP: "ASOP",
|
|
OASWB: "ASWB",
|
|
OCALL: "CALL",
|
|
OCALLFUNC: "CALLFUNC",
|
|
OCALLMETH: "CALLMETH",
|
|
OCALLINTER: "CALLINTER",
|
|
OCALLPART: "CALLPART",
|
|
OCAP: "CAP",
|
|
OCLOSE: "CLOSE",
|
|
OCLOSURE: "CLOSURE",
|
|
OCMPIFACE: "CMPIFACE",
|
|
OCMPSTR: "CMPSTR",
|
|
OCOMPLIT: "COMPLIT",
|
|
OMAPLIT: "MAPLIT",
|
|
OSTRUCTLIT: "STRUCTLIT",
|
|
OARRAYLIT: "ARRAYLIT",
|
|
OSLICELIT: "SLICELIT",
|
|
OPTRLIT: "PTRLIT",
|
|
OCONV: "CONV",
|
|
OCONVIFACE: "CONVIFACE",
|
|
OCONVNOP: "CONVNOP",
|
|
OCOPY: "COPY",
|
|
ODCL: "DCL",
|
|
ODCLFUNC: "DCLFUNC",
|
|
ODCLFIELD: "DCLFIELD",
|
|
ODCLCONST: "DCLCONST",
|
|
ODCLTYPE: "DCLTYPE",
|
|
ODELETE: "DELETE",
|
|
ODOT: "DOT",
|
|
ODOTPTR: "DOTPTR",
|
|
ODOTMETH: "DOTMETH",
|
|
ODOTINTER: "DOTINTER",
|
|
OXDOT: "XDOT",
|
|
ODOTTYPE: "DOTTYPE",
|
|
ODOTTYPE2: "DOTTYPE2",
|
|
OEQ: "EQ",
|
|
ONE: "NE",
|
|
OLT: "LT",
|
|
OLE: "LE",
|
|
OGE: "GE",
|
|
OGT: "GT",
|
|
OIND: "IND",
|
|
OINDEX: "INDEX",
|
|
OINDEXMAP: "INDEXMAP",
|
|
OKEY: "KEY",
|
|
OSTRUCTKEY: "STRUCTKEY",
|
|
OLEN: "LEN",
|
|
OMAKE: "MAKE",
|
|
OMAKECHAN: "MAKECHAN",
|
|
OMAKEMAP: "MAKEMAP",
|
|
OMAKESLICE: "MAKESLICE",
|
|
OMUL: "MUL",
|
|
ODIV: "DIV",
|
|
OMOD: "MOD",
|
|
OLSH: "LSH",
|
|
ORSH: "RSH",
|
|
OAND: "AND",
|
|
OANDNOT: "ANDNOT",
|
|
ONEW: "NEW",
|
|
ONOT: "NOT",
|
|
OCOM: "COM",
|
|
OPLUS: "PLUS",
|
|
OMINUS: "MINUS",
|
|
OOROR: "OROR",
|
|
OPANIC: "PANIC",
|
|
OPRINT: "PRINT",
|
|
OPRINTN: "PRINTN",
|
|
OPAREN: "PAREN",
|
|
OSEND: "SEND",
|
|
OSLICE: "SLICE",
|
|
OSLICEARR: "SLICEARR",
|
|
OSLICESTR: "SLICESTR",
|
|
OSLICE3: "SLICE3",
|
|
OSLICE3ARR: "SLICE3ARR",
|
|
ORECOVER: "RECOVER",
|
|
ORECV: "RECV",
|
|
ORUNESTR: "RUNESTR",
|
|
OSELRECV: "SELRECV",
|
|
OSELRECV2: "SELRECV2",
|
|
OIOTA: "IOTA",
|
|
OREAL: "REAL",
|
|
OIMAG: "IMAG",
|
|
OCOMPLEX: "COMPLEX",
|
|
OBLOCK: "BLOCK",
|
|
OBREAK: "BREAK",
|
|
OCASE: "CASE",
|
|
OXCASE: "XCASE",
|
|
OCONTINUE: "CONTINUE",
|
|
ODEFER: "DEFER",
|
|
OEMPTY: "EMPTY",
|
|
OFALL: "FALL",
|
|
OXFALL: "XFALL",
|
|
OFOR: "FOR",
|
|
OGOTO: "GOTO",
|
|
OIF: "IF",
|
|
OLABEL: "LABEL",
|
|
OPROC: "PROC",
|
|
ORANGE: "RANGE",
|
|
ORETURN: "RETURN",
|
|
OSELECT: "SELECT",
|
|
OSWITCH: "SWITCH",
|
|
OTYPESW: "TYPESW",
|
|
OTCHAN: "TCHAN",
|
|
OTMAP: "TMAP",
|
|
OTSTRUCT: "TSTRUCT",
|
|
OTINTER: "TINTER",
|
|
OTFUNC: "TFUNC",
|
|
OTARRAY: "TARRAY",
|
|
ODDD: "DDD",
|
|
ODDDARG: "DDDARG",
|
|
OINLCALL: "INLCALL",
|
|
OEFACE: "EFACE",
|
|
OITAB: "ITAB",
|
|
OIDATA: "IDATA",
|
|
OSPTR: "SPTR",
|
|
OCLOSUREVAR: "CLOSUREVAR",
|
|
OCFUNC: "CFUNC",
|
|
OCHECKNIL: "CHECKNIL",
|
|
OVARKILL: "VARKILL",
|
|
OVARLIVE: "VARLIVE",
|
|
OREGISTER: "REGISTER",
|
|
OINDREG: "INDREG",
|
|
OCMP: "CMP",
|
|
ODEC: "DEC",
|
|
OINC: "INC",
|
|
OEXTEND: "EXTEND",
|
|
OHMUL: "HMUL",
|
|
OLROT: "LROT",
|
|
ORROTC: "RROTC",
|
|
ORETJMP: "RETJMP",
|
|
OPS: "PS",
|
|
OPC: "PC",
|
|
OSQRT: "SQRT",
|
|
OGETG: "GETG",
|
|
OEND: "END",
|
|
}
|