(ctx *compileContext, isFirstField, isEndField bool)
| 756 | } |
| 757 | |
| 758 | func (c *StructFieldCode) ToOpcode(ctx *compileContext, isFirstField, isEndField bool) Opcodes { |
| 759 | field := &Opcode{ |
| 760 | Idx: opcodeOffset(ctx.ptrIndex), |
| 761 | Flags: c.flags(), |
| 762 | Key: c.structKey(ctx), |
| 763 | Offset: uint32(c.offset), |
| 764 | Type: c.typ, |
| 765 | DisplayIdx: ctx.opcodeIndex, |
| 766 | Indent: ctx.indent, |
| 767 | DisplayKey: c.key, |
| 768 | } |
| 769 | ctx.incIndex() |
| 770 | valueCodes := c.toValueOpcodes(ctx) |
| 771 | if isFirstField { |
| 772 | codes := c.headerOpcodes(ctx, field, valueCodes) |
| 773 | if isEndField { |
| 774 | codes = c.addStructEndCode(ctx, codes) |
| 775 | } |
| 776 | return codes |
| 777 | } |
| 778 | codes := c.fieldOpcodes(ctx, field, valueCodes) |
| 779 | if isEndField { |
| 780 | if isEnableStructEndOptimization(c.value) { |
| 781 | field.Op = field.Op.FieldToEnd() |
| 782 | } else { |
| 783 | codes = c.addStructEndCode(ctx, codes) |
| 784 | } |
| 785 | } |
| 786 | return codes |
| 787 | } |
| 788 | |
| 789 | func (c *StructFieldCode) ToAnonymousOpcode(ctx *compileContext, isFirstField, isEndField bool) Opcodes { |
| 790 | field := &Opcode{ |
nothing calls this directly
no test coverage detected