From 5c1422afabb7efa26b382e818314748bb8c857d9 Mon Sep 17 00:00:00 2001 From: Jan Ziak <0xe2.0x9a.0x9b@gmail.com> Date: Thu, 1 Nov 2012 13:13:20 -0400 Subject: [PATCH] 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 --- src/pkg/runtime/iface.c | 13 ------------- src/pkg/runtime/runtime.h | 14 +++++++++++++- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/pkg/runtime/iface.c b/src/pkg/runtime/iface.c index 5566d88e3b..634c9e98f6 100644 --- a/src/pkg/runtime/iface.c +++ b/src/pkg/runtime/iface.c @@ -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; diff --git a/src/pkg/runtime/runtime.h b/src/pkg/runtime/runtime.h index cd2f6f0587..51a5aeca91 100644 --- a/src/pkg/runtime/runtime.h +++ b/src/pkg/runtime/runtime.h @@ -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);