From 4acb87b80fc4854b5f325160623119279893436a Mon Sep 17 00:00:00 2001 From: Paul Cacheux Date: Tue, 7 Nov 2023 01:21:54 +0100 Subject: [PATCH] splitSymbols: fast-path for case where there is only one symbol Signed-off-by: Paul Cacheux --- linker.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/linker.go b/linker.go index b653b805e..fd6323315 100644 --- a/linker.go +++ b/linker.go @@ -57,10 +57,24 @@ func splitSymbols(insns asm.Instructions) (map[string]asm.Instructions, error) { return nil, errors.New("insns is empty") } - if insns[0].Symbol() == "" { + firstSymbol := insns[0].Symbol() + if firstSymbol == "" { return nil, errors.New("insns must start with a Symbol") } + onlyOneSymbol := true + for _, ins := range insns[1:] { + if ins.Symbol() != "" { + onlyOneSymbol = false + break + } + } + if onlyOneSymbol { + return map[string]asm.Instructions{ + firstSymbol: insns, + }, nil + } + var name string progs := make(map[string]asm.Instructions) for _, ins := range insns {