]> Cypherpunks repositories - gostls13.git/commit
runtime: fix arm reflect.call boundary case
authorRuss Cox <rsc@golang.org>
Fri, 14 Jan 2011 19:05:20 +0000 (14:05 -0500)
committerRuss Cox <rsc@golang.org>
Fri, 14 Jan 2011 19:05:20 +0000 (14:05 -0500)
commit141a4a17598ccefe7f0c909a38a7c78b17fdf7a5
tree8d0c9706c0d3e0346b8efe74e9a97cdbbea50e53
parent5adfe9375238421f3143c781996540acfcc77adc
runtime: 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

R=r, r2
CC=golang-dev
https://golang.org/cl/3993041
src/cmd/5g/ggen.c
src/cmd/5l/noop.c
src/pkg/runtime/386/asm.s
src/pkg/runtime/amd64/asm.s
src/pkg/runtime/arm/asm.s
src/pkg/runtime/proc.c
src/pkg/runtime/runtime.h
src/pkg/runtime/runtime_defs.go