func()

in assembler.go [146:171]


func (p *Program) Assemble() ([]bpf.Instruction, error) {
	for _, jump := range p.jumps {
		// This is safe since we are only accessing instructions that were inserted as bpf.JumpIf.
		jumpInst := p.instructions[jump.index].(bpf.JumpIf)

		skip, err := p.resolveLabel(jump, jump.trueLabel)
		if err != nil {
			return nil, err
		}
		jumpInst.SkipTrue = skip

		skip, err = p.resolveLabel(jump, jump.falseLabel)
		if err != nil {
			return nil, err
		}
		jumpInst.SkipFalse = skip

		if jumpInst.SkipTrue == 0 && jumpInst.SkipFalse == 0 {
			return nil, fmt.Errorf("useless jump found")
		}

		p.instructions[jump.index] = jumpInst
	}

	return p.instructions, nil
}