mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-15 16:33:40 +00:00
compiler: do not emit nil checks for loading closure variables
Closure variables are allocated in a parent function and are thus never nil. Don't do a nil check before reading or modifying the value. This commit results in a slight reduction in code size in some test cases: calls.go, channel.go, goroutines.go, json.go, sort.go - presumably wherever closures are used.
This commit is contained in:
committed by
Ron Evans
parent
ec325c0643
commit
3edcdb5f0d
@@ -994,6 +994,8 @@ func getPos(val posser) token.Pos {
|
||||
switch val := val.(type) {
|
||||
case *ssa.MakeInterface:
|
||||
return getPos(val.X)
|
||||
case *ssa.MakeClosure:
|
||||
return val.Fn.(*ssa.Function).Pos()
|
||||
case *ssa.Return:
|
||||
syntax := val.Parent().Syntax()
|
||||
if syntax != nil {
|
||||
|
||||
Reference in New Issue
Block a user