• Russ Cox's avatar
    runtime: fix arm reflect.call boundary case · 141a4a17
    Russ Cox authored
    The fault was lucky: when it wasn't faulting it was silently
    copying a word from some other block and later putting
    that same word back.  If some other goroutine had changed
    that word of memory in the interim, too bad.
    
    The ARM code was inconsistent about whether the
    "argument frame" included the saved LR.  Including it made
    some things more regular but mostly just caused confusion
    in the places where the regularity broke.  Now the rule
    reflects reality: argp is always a pointer to arguments,
    never a saved link register.
    
    Renamed struct fields to make meaning clearer.
    
    Running ARM in QEMU, package time's gotest:
      * before: 27/58 failed
      * after: 0/50
    
    R=r, r2
    CC=golang-dev
    https://golang.org/cl/3993041
    141a4a17
ggen.c 20.1 KB