1
0
mirror of https://github.com/golang/go synced 2024-11-22 15:14:53 -07:00

runtime: replace unions with structs

Unions can break precise GC.
Update #5193.

R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/8456043
This commit is contained in:
Dmitriy Vyukov 2013-04-06 20:02:49 -07:00
parent cfe336770b
commit 60682c4f59
2 changed files with 5 additions and 5 deletions

View File

@ -5,9 +5,9 @@
#include "runtime.h"
#include "arch_GOARCH.h"
static union {
static struct {
Lock l;
byte pad [CacheLineSize];
byte pad[CacheLineSize-sizeof(Lock)];
} locktab[57];
#define LOCK(addr) (&locktab[((uintptr)(addr)>>3)%nelem(locktab)].l)

View File

@ -44,13 +44,13 @@ struct SemaRoot
// Prime to not correlate with any user patterns.
#define SEMTABLESZ 251
union semtable
struct semtable
{
SemaRoot;
uint8 pad[CacheLineSize];
uint8 pad[CacheLineSize-sizeof(SemaRoot)];
};
#pragma dataflag 16 /* mark semtable as 'no pointers', hiding from garbage collector */
static union semtable semtable[SEMTABLESZ];
static struct semtable semtable[SEMTABLESZ];
static SemaRoot*
semroot(uint32 *addr)