mirror of
				https://github.com/golang/go.git
				synced 2025-10-31 00:30:57 +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 { | ||||
| 	miniExpr | ||||
| 	T         *types.Type | ||||
| 	X_Delete  Node | ||||
| 	M_Delete  Node // TODO(rsc): Delete (breaks toolstash b/c inlining costs go down) | ||||
| 	Method    *types.Field | ||||
| 	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.pos = pos | ||||
| 	n.op = OMETHEXPR | ||||
| 	n.X_Delete = TypeNode(t)                // TODO(rsc): Delete. | ||||
| 	n.M_Delete = NewNameAt(pos, method.Sym) // TODO(rsc): Delete. | ||||
| 	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) 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. | ||||
| type SelectorExpr struct { | ||||
| 	miniExpr | ||||
|  |  | |||
|  | @ -345,6 +345,7 @@ const ( | |||
| 	OVARLIVE     // variable is alive | ||||
| 	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. | ||||
| 	ONAMEOFFSET  // offset within a name | ||||
| 
 | ||||
| 	// arch-specific opcodes | ||||
| 	ORETJMP // return to other function | ||||
|  |  | |||
|  | @ -632,14 +632,10 @@ func (n *MethodExpr) copy() Node { | |||
| func (n *MethodExpr) doChildren(do func(Node) error) error { | ||||
| 	var err error | ||||
| 	err = maybeDoList(n.init, err, do) | ||||
| 	err = maybeDo(n.X_Delete, err, do) | ||||
| 	err = maybeDo(n.M_Delete, err, do) | ||||
| 	return err | ||||
| } | ||||
| func (n *MethodExpr) editChildren(edit func(Node) Node) { | ||||
| 	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) } | ||||
|  | @ -654,6 +650,21 @@ func (n *Name) doChildren(do func(Node) error) error { | |||
| 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) copy() Node { | ||||
| 	c := *n | ||||
|  |  | |||
|  | @ -158,14 +158,15 @@ func _() { | |||
| 	_ = x[OVARLIVE-147] | ||||
| 	_ = x[ORESULT-148] | ||||
| 	_ = x[OINLMARK-149] | ||||
| 	_ = x[ORETJMP-150] | ||||
| 	_ = x[OGETG-151] | ||||
| 	_ = x[OEND-152] | ||||
| 	_ = x[ONAMEOFFSET-150] | ||||
| 	_ = x[ORETJMP-151] | ||||
| 	_ = 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 { | ||||
| 	if i >= Op(len(_Op_index)-1) { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Russ Cox
						Russ Cox