go/src/runtime
Russ Cox 2da5022bcf change representation of interface values.
this is not a user-visible change.

before, all interface values were

	struct Itype {
		Sigt *type;
		Sigi *inter;
		void *method[n];
	}

	struct Iface {
		void *addr;
		Itype *itype;
	}

the itype is basically a vtable, but it's unnecessary
if the static type is interface{ }.
for interface values with static type empty, the
new representation is

	struct Eface {
		void *addr;
		Sigt *type;
	}

this complicates the code somewhat, but
it reduces the number of Itypes that
have to be computed and cached,
it opens up opportunities to avoid function
calls in a few common cases,
and it will make it possible to lay out
interface{} values at compile time,
which i think i'll need for the new reflection.

R=ken
OCL=28701
CL=29121
2009-05-20 14:57:55 -07:00
..
386 move things out of sys into os and runtime 2009-05-08 15:21:41 -07:00
amd64 move things out of sys into os and runtime 2009-05-08 15:21:41 -07:00
darwin move things out of sys into os and runtime 2009-05-08 15:21:41 -07:00
linux move things out of sys into os and runtime 2009-05-08 15:21:41 -07:00
Makefile more 386 runtime - can run tiny c programs. 2009-03-30 00:01:07 -07:00
array.c print(array) 2008-12-18 22:17:05 -08:00
cgo2c.c move math routines from package sys to package math, 2009-01-22 16:23:44 -08:00
chan.c move things out of sys into os and runtime 2009-05-08 15:21:41 -07:00
float.c move math routines from package sys to package math, 2009-01-22 16:23:44 -08:00
float_go.cgo move math routines from package sys to package math, 2009-01-22 16:23:44 -08:00
hashmap.c allow range on nil maps 2009-03-23 18:32:37 -07:00
hashmap.h range statement 2008-12-05 18:24:05 -08:00
iface.c change representation of interface values. 2009-05-20 14:57:55 -07:00
malloc.c more 386 runtime - can run tiny c programs. 2009-03-30 00:01:07 -07:00
malloc.h more 386 runtime - can run tiny c programs. 2009-03-30 00:01:07 -07:00
malloc_go.cgo gc #0. mark and sweep collector. 2009-01-26 17:37:05 -08:00
mcache.c malloc bug fixes. 2008-12-19 03:13:39 -08:00
mcentral.c gc #0. mark and sweep collector. 2009-01-26 17:37:05 -08:00
mem.c more 386 runtime - can run tiny c programs. 2009-03-30 00:01:07 -07:00
mfixalloc.c Use explicit allspan list instead of 2009-01-28 15:22:16 -08:00
mgc0.c more 386 runtime - can run tiny c programs. 2009-03-30 00:01:07 -07:00
mheap.c split heapmap, which is specific to 64-bit pointer addresses, 2009-03-24 15:11:56 -07:00
mheapmap32.c more 386 runtime - can run tiny c programs. 2009-03-30 00:01:07 -07:00
mheapmap32.h more 386 runtime - can run tiny c programs. 2009-03-30 00:01:07 -07:00
mheapmap64.c split heapmap, which is specific to 64-bit pointer addresses, 2009-03-24 15:11:56 -07:00
mheapmap64.h split heapmap, which is specific to 64-bit pointer addresses, 2009-03-24 15:11:56 -07:00
msize.c embarassing bug in allocator: 2009-03-20 16:34:13 -07:00
print.c fix traceback prints - %S was not advancing pointer enough 2009-04-15 18:52:28 -07:00
proc.c move things out of sys into os and runtime 2009-05-08 15:21:41 -07:00
rune.c fix string range to have full unicode range (up to 10FFFF). 2009-04-12 17:01:17 -07:00
runtime.c change representation of interface values. 2009-05-20 14:57:55 -07:00
runtime.h change representation of interface values. 2009-05-20 14:57:55 -07:00
sema.c move things out of sys into os and runtime 2009-05-08 15:21:41 -07:00
sema_go.cgo move math routines from package sys to package math, 2009-01-22 16:23:44 -08:00
string.c move things out of sys into os and runtime 2009-05-08 15:21:41 -07:00
symtab.c fix handling of line numbers for first function 2009-05-15 17:26:08 -07:00