1
0
mirror of https://github.com/golang/go synced 2024-10-02 20:41:21 -06:00

runtime: move Itab to runtime.h

The 'type' field of Itab will be used by the garbage collector.

R=rsc
CC=golang-dev
https://golang.org/cl/6815059
This commit is contained in:
Jan Ziak 2012-11-01 13:13:20 -04:00 committed by Russ Cox
parent 1eae1252e9
commit 5c1422afab
2 changed files with 13 additions and 14 deletions

View File

@ -20,19 +20,6 @@ runtime·printeface(Eface e)
runtime·printf("(%p,%p)", e.type, e.data);
}
/*
* layout of Itab known to compilers
*/
struct Itab
{
InterfaceType* inter;
Type* type;
Itab* link;
int32 bad;
int32 unused;
void (*fun[])(void);
};
static Itab* hash[1009];
static Lock ifacelock;

View File

@ -62,6 +62,7 @@ typedef struct MCache MCache;
typedef struct FixAlloc FixAlloc;
typedef struct Iface Iface;
typedef struct Itab Itab;
typedef struct InterfaceType InterfaceType;
typedef struct Eface Eface;
typedef struct Type Type;
typedef struct ChanType ChanType;
@ -322,6 +323,17 @@ struct Func
int32 locals; // number of 32-bit locals
};
// layout of Itab known to compilers
struct Itab
{
InterfaceType* inter;
Type* type;
Itab* link;
int32 bad;
int32 unused;
void (*fun[])(void);
};
struct WinCall
{
void (*fn)(void*);
@ -823,7 +835,7 @@ void runtime·chansend(ChanType*, Hchan*, byte*, bool*, void*);
void runtime·chanrecv(ChanType*, Hchan*, byte*, bool*, bool*);
bool runtime·showframe(Func*);
void runtime·ifaceE2I(struct InterfaceType*, Eface, Iface*);
void runtime·ifaceE2I(InterfaceType*, Eface, Iface*);
uintptr runtime·memlimit(void);