mirror of
				https://github.com/golang/go.git
				synced 2025-10-31 16:50:58 +00:00 
			
		
		
		
	[dev.regabi] cmd/compile: add ONAMEOFFSET, delete to-be-deleted fields
Breaks toolstash but clearly no effect. Change-Id: Ic05bb7f74db170f140cf3b3cd7d629f159e3aae1 Reviewed-on: https://go-review.googlesource.com/c/go/+/278913 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
		
							parent
							
								
									4e8f1e139f
								
							
						
					
					
						commit
						c76be2a24e
					
				
					 4 changed files with 37 additions and 13 deletions
				
			
		|  | @ -530,8 +530,6 @@ func (n *MakeExpr) SetOp(op Op) { | ||||||
| type MethodExpr struct { | type MethodExpr struct { | ||||||
| 	miniExpr | 	miniExpr | ||||||
| 	T         *types.Type | 	T         *types.Type | ||||||
| 	X_Delete  Node |  | ||||||
| 	M_Delete  Node // TODO(rsc): Delete (breaks toolstash b/c inlining costs go down) |  | ||||||
| 	Method    *types.Field | 	Method    *types.Field | ||||||
| 	FuncName_ *Name | 	FuncName_ *Name | ||||||
| } | } | ||||||
|  | @ -540,8 +538,6 @@ func NewMethodExpr(pos src.XPos, t *types.Type, method *types.Field) *MethodExpr | ||||||
| 	n := &MethodExpr{T: t, Method: method} | 	n := &MethodExpr{T: t, Method: method} | ||||||
| 	n.pos = pos | 	n.pos = pos | ||||||
| 	n.op = OMETHEXPR | 	n.op = OMETHEXPR | ||||||
| 	n.X_Delete = TypeNode(t)                // TODO(rsc): Delete. |  | ||||||
| 	n.M_Delete = NewNameAt(pos, method.Sym) // TODO(rsc): Delete. |  | ||||||
| 	return n | 	return n | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -619,6 +615,21 @@ func NewResultExpr(pos src.XPos, typ *types.Type, offset int64) *ResultExpr { | ||||||
| func (n *ResultExpr) Offset() int64     { return n.Offset_ } | func (n *ResultExpr) Offset() int64     { return n.Offset_ } | ||||||
| func (n *ResultExpr) SetOffset(x int64) { n.Offset_ = x } | func (n *ResultExpr) SetOffset(x int64) { n.Offset_ = x } | ||||||
| 
 | 
 | ||||||
|  | // A NameOffsetExpr refers to an offset within a variable. | ||||||
|  | // It is like a SelectorExpr but without the field name. | ||||||
|  | type NameOffsetExpr struct { | ||||||
|  | 	miniExpr | ||||||
|  | 	Name_   *Name | ||||||
|  | 	Offset_ int64 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func NewNameOffsetExpr(pos src.XPos, name *Name, offset int64, typ *types.Type) *NameOffsetExpr { | ||||||
|  | 	n := &NameOffsetExpr{Name_: name, Offset_: offset} | ||||||
|  | 	n.typ = typ | ||||||
|  | 	n.op = ONAMEOFFSET | ||||||
|  | 	return n | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // A SelectorExpr is a selector expression X.Sym. | // A SelectorExpr is a selector expression X.Sym. | ||||||
| type SelectorExpr struct { | type SelectorExpr struct { | ||||||
| 	miniExpr | 	miniExpr | ||||||
|  |  | ||||||
|  | @ -345,6 +345,7 @@ const ( | ||||||
| 	OVARLIVE     // variable is alive | 	OVARLIVE     // variable is alive | ||||||
| 	ORESULT      // result of a function call; Xoffset is stack offset | 	ORESULT      // result of a function call; Xoffset is stack offset | ||||||
| 	OINLMARK     // start of an inlined body, with file/line of caller. Xoffset is an index into the inline tree. | 	OINLMARK     // start of an inlined body, with file/line of caller. Xoffset is an index into the inline tree. | ||||||
|  | 	ONAMEOFFSET  // offset within a name | ||||||
| 
 | 
 | ||||||
| 	// arch-specific opcodes | 	// arch-specific opcodes | ||||||
| 	ORETJMP // return to other function | 	ORETJMP // return to other function | ||||||
|  |  | ||||||
|  | @ -632,14 +632,10 @@ func (n *MethodExpr) copy() Node { | ||||||
| func (n *MethodExpr) doChildren(do func(Node) error) error { | func (n *MethodExpr) doChildren(do func(Node) error) error { | ||||||
| 	var err error | 	var err error | ||||||
| 	err = maybeDoList(n.init, err, do) | 	err = maybeDoList(n.init, err, do) | ||||||
| 	err = maybeDo(n.X_Delete, err, do) |  | ||||||
| 	err = maybeDo(n.M_Delete, err, do) |  | ||||||
| 	return err | 	return err | ||||||
| } | } | ||||||
| func (n *MethodExpr) editChildren(edit func(Node) Node) { | func (n *MethodExpr) editChildren(edit func(Node) Node) { | ||||||
| 	editList(n.init, edit) | 	editList(n.init, edit) | ||||||
| 	n.X_Delete = maybeEdit(n.X_Delete, edit) |  | ||||||
| 	n.M_Delete = maybeEdit(n.M_Delete, edit) |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (n *Name) Format(s fmt.State, verb rune) { FmtNode(n, s, verb) } | func (n *Name) Format(s fmt.State, verb rune) { FmtNode(n, s, verb) } | ||||||
|  | @ -654,6 +650,21 @@ func (n *Name) doChildren(do func(Node) error) error { | ||||||
| func (n *Name) editChildren(edit func(Node) Node) { | func (n *Name) editChildren(edit func(Node) Node) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (n *NameOffsetExpr) Format(s fmt.State, verb rune) { FmtNode(n, s, verb) } | ||||||
|  | func (n *NameOffsetExpr) copy() Node { | ||||||
|  | 	c := *n | ||||||
|  | 	c.init = c.init.Copy() | ||||||
|  | 	return &c | ||||||
|  | } | ||||||
|  | func (n *NameOffsetExpr) doChildren(do func(Node) error) error { | ||||||
|  | 	var err error | ||||||
|  | 	err = maybeDoList(n.init, err, do) | ||||||
|  | 	return err | ||||||
|  | } | ||||||
|  | func (n *NameOffsetExpr) editChildren(edit func(Node) Node) { | ||||||
|  | 	editList(n.init, edit) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (n *NilExpr) Format(s fmt.State, verb rune) { FmtNode(n, s, verb) } | func (n *NilExpr) Format(s fmt.State, verb rune) { FmtNode(n, s, verb) } | ||||||
| func (n *NilExpr) copy() Node { | func (n *NilExpr) copy() Node { | ||||||
| 	c := *n | 	c := *n | ||||||
|  |  | ||||||
|  | @ -158,14 +158,15 @@ func _() { | ||||||
| 	_ = x[OVARLIVE-147] | 	_ = x[OVARLIVE-147] | ||||||
| 	_ = x[ORESULT-148] | 	_ = x[ORESULT-148] | ||||||
| 	_ = x[OINLMARK-149] | 	_ = x[OINLMARK-149] | ||||||
| 	_ = x[ORETJMP-150] | 	_ = x[ONAMEOFFSET-150] | ||||||
| 	_ = x[OGETG-151] | 	_ = x[ORETJMP-151] | ||||||
| 	_ = x[OEND-152] | 	_ = x[OGETG-152] | ||||||
|  | 	_ = x[OEND-153] | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| const _Op_name = "XXXNAMENONAMETYPEPACKLITERALNILADDSUBORXORADDSTRADDRANDANDAPPENDBYTES2STRBYTES2STRTMPRUNES2STRSTR2BYTESSTR2BYTESTMPSTR2RUNESASAS2AS2DOTTYPEAS2FUNCAS2MAPRAS2RECVASOPCALLCALLFUNCCALLMETHCALLINTERCALLPARTCAPCLOSECLOSURECOMPLITMAPLITSTRUCTLITARRAYLITSLICELITPTRLITCONVCONVIFACECONVNOPCOPYDCLDCLFUNCDCLCONSTDCLTYPEDELETEDOTDOTPTRDOTMETHDOTINTERXDOTDOTTYPEDOTTYPE2EQNELTLEGEGTDEREFINDEXINDEXMAPKEYSTRUCTKEYLENMAKEMAKECHANMAKEMAPMAKESLICEMAKESLICECOPYMULDIVMODLSHRSHANDANDNOTNEWNEWOBJNOTBITNOTPLUSNEGORORPANICPRINTPRINTNPARENSENDSLICESLICEARRSLICESTRSLICE3SLICE3ARRSLICEHEADERRECOVERRECVRUNESTRSELRECV2IOTAREALIMAGCOMPLEXALIGNOFOFFSETOFSIZEOFMETHEXPRSTMTEXPRBLOCKBREAKCASECONTINUEDEFERFALLFORFORUNTILGOTOIFLABELGORANGERETURNSELECTSWITCHTYPESWTCHANTMAPTSTRUCTTINTERTFUNCTARRAYTSLICEINLCALLEFACEITABIDATASPTRCLOSUREREADCFUNCCHECKNILVARDEFVARKILLVARLIVERESULTINLMARKRETJMPGETGEND" | const _Op_name = "XXXNAMENONAMETYPEPACKLITERALNILADDSUBORXORADDSTRADDRANDANDAPPENDBYTES2STRBYTES2STRTMPRUNES2STRSTR2BYTESSTR2BYTESTMPSTR2RUNESASAS2AS2DOTTYPEAS2FUNCAS2MAPRAS2RECVASOPCALLCALLFUNCCALLMETHCALLINTERCALLPARTCAPCLOSECLOSURECOMPLITMAPLITSTRUCTLITARRAYLITSLICELITPTRLITCONVCONVIFACECONVNOPCOPYDCLDCLFUNCDCLCONSTDCLTYPEDELETEDOTDOTPTRDOTMETHDOTINTERXDOTDOTTYPEDOTTYPE2EQNELTLEGEGTDEREFINDEXINDEXMAPKEYSTRUCTKEYLENMAKEMAKECHANMAKEMAPMAKESLICEMAKESLICECOPYMULDIVMODLSHRSHANDANDNOTNEWNEWOBJNOTBITNOTPLUSNEGORORPANICPRINTPRINTNPARENSENDSLICESLICEARRSLICESTRSLICE3SLICE3ARRSLICEHEADERRECOVERRECVRUNESTRSELRECV2IOTAREALIMAGCOMPLEXALIGNOFOFFSETOFSIZEOFMETHEXPRSTMTEXPRBLOCKBREAKCASECONTINUEDEFERFALLFORFORUNTILGOTOIFLABELGORANGERETURNSELECTSWITCHTYPESWTCHANTMAPTSTRUCTTINTERTFUNCTARRAYTSLICEINLCALLEFACEITABIDATASPTRCLOSUREREADCFUNCCHECKNILVARDEFVARKILLVARLIVERESULTINLMARKNAMEOFFSETRETJMPGETGEND" | ||||||
| 
 | 
 | ||||||
| var _Op_index = [...]uint16{0, 3, 7, 13, 17, 21, 28, 31, 34, 37, 39, 42, 48, 52, 58, 64, 73, 85, 94, 103, 115, 124, 126, 129, 139, 146, 153, 160, 164, 168, 176, 184, 193, 201, 204, 209, 216, 223, 229, 238, 246, 254, 260, 264, 273, 280, 284, 287, 294, 302, 309, 315, 318, 324, 331, 339, 343, 350, 358, 360, 362, 364, 366, 368, 370, 375, 380, 388, 391, 400, 403, 407, 415, 422, 431, 444, 447, 450, 453, 456, 459, 462, 468, 471, 477, 480, 486, 490, 493, 497, 502, 507, 513, 518, 522, 527, 535, 543, 549, 558, 569, 576, 580, 587, 595, 599, 603, 607, 614, 621, 629, 635, 643, 651, 656, 661, 665, 673, 678, 682, 685, 693, 697, 699, 704, 706, 711, 717, 723, 729, 735, 740, 744, 751, 757, 762, 768, 774, 781, 786, 790, 795, 799, 810, 815, 823, 829, 836, 843, 849, 856, 862, 866, 869} | var _Op_index = [...]uint16{0, 3, 7, 13, 17, 21, 28, 31, 34, 37, 39, 42, 48, 52, 58, 64, 73, 85, 94, 103, 115, 124, 126, 129, 139, 146, 153, 160, 164, 168, 176, 184, 193, 201, 204, 209, 216, 223, 229, 238, 246, 254, 260, 264, 273, 280, 284, 287, 294, 302, 309, 315, 318, 324, 331, 339, 343, 350, 358, 360, 362, 364, 366, 368, 370, 375, 380, 388, 391, 400, 403, 407, 415, 422, 431, 444, 447, 450, 453, 456, 459, 462, 468, 471, 477, 480, 486, 490, 493, 497, 502, 507, 513, 518, 522, 527, 535, 543, 549, 558, 569, 576, 580, 587, 595, 599, 603, 607, 614, 621, 629, 635, 643, 651, 656, 661, 665, 673, 678, 682, 685, 693, 697, 699, 704, 706, 711, 717, 723, 729, 735, 740, 744, 751, 757, 762, 768, 774, 781, 786, 790, 795, 799, 810, 815, 823, 829, 836, 843, 849, 856, 866, 872, 876, 879} | ||||||
| 
 | 
 | ||||||
| func (i Op) String() string { | func (i Op) String() string { | ||||||
| 	if i >= Op(len(_Op_index)-1) { | 	if i >= Op(len(_Op_index)-1) { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Russ Cox
						Russ Cox