• Dave Cheney's avatar
    cmd/5g: use MOVB for fixed array nil check · 54e8d504
    Dave Cheney authored
    Fixes #4396.
    
    For fixed arrays larger than the unmapped page, agenr would general a nil check by loading the first word of the array. However there is no requirement for the first element of a byte array to be word aligned, so this check causes a trap on ARMv5 hardware (ARMv6 since relaxed that restriction, but it probably still comes at a cost).
    
    Switching the check to MOVB ensures alignment is not an issue. This check is only invoked in a few places in the code where large fixed arrays are embedded into structs, compress/lzw is the biggest offender, and switching to MOVB has no observable performance penalty.
    
    Thanks to Rémy and Daniel Morsing for helping me debug this on IRC last night.
    
    R=remyoudompheng, minux.ma, rsc
    CC=golang-dev
    https://golang.org/cl/6854063
    54e8d504
issue4396a.go 628 Bytes