Descriptionruntime: fix arm reflect.call boundary case
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
Patch Set 1 #Patch Set 2 : code review 3993041: runtime: fix arm reflect.call boundary case #Patch Set 3 : code review 3993041: runtime: fix arm reflect.call boundary case #Patch Set 4 : code review 3993041: runtime: fix arm reflect.call boundary case #Patch Set 5 : code review 3993041: runtime: fix arm reflect.call boundary case #
MessagesTotal messages: 7
|