mirror of https://github.com/golang/go.git
cmd/gc: fix method value closures on nacl amd64p32
The code was assuming that pointer alignment is the maximum alignment, but on NaCl uint64 alignment is even more strict. Brad checked in the test earlier today; this fixes the build. Fixes #7863. TBR=iant CC=golang-codereviews https://golang.org/cl/98630046
This commit is contained in:
parent
eeb87c3660
commit
6c0bcb1863
|
|
@ -374,6 +374,8 @@ makepartialcall(Node *fn, Type *t0, Node *meth)
|
|||
cv = nod(OCLOSUREVAR, N, N);
|
||||
cv->xoffset = widthptr;
|
||||
cv->type = rcvrtype;
|
||||
if(cv->type->align > widthptr)
|
||||
cv->xoffset = cv->type->align;
|
||||
ptr = nod(ONAME, N, N);
|
||||
ptr->sym = lookup("rcvr");
|
||||
ptr->class = PAUTO;
|
||||
|
|
|
|||
|
|
@ -1438,6 +1438,8 @@ funccompile(Node *n, int isclosure)
|
|||
|
||||
// record offset to actual frame pointer.
|
||||
// for closure, have to skip over leading pointers and PC slot.
|
||||
// TODO(rsc): this is the old jit closure handling code.
|
||||
// with the new closures, isclosure is always 0; delete this block.
|
||||
nodfp->xoffset = 0;
|
||||
if(isclosure) {
|
||||
NodeList *l;
|
||||
|
|
|
|||
Loading…
Reference in New Issue