• Russ Cox's avatar
    change representation of interface values. · 2da5022b
    Russ Cox authored
    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
    2da5022b
Name
Last commit
Last update
..
bugs Loading commit data...
chan Loading commit data...
fixedbugs Loading commit data...
ken Loading commit data...
235.go Loading commit data...
args.go Loading commit data...
bigalg.go Loading commit data...
char_lit.go Loading commit data...
closedchan.go Loading commit data...
closure.go Loading commit data...
cmp1.go Loading commit data...
cmp2.go Loading commit data...
cmp3.go Loading commit data...
cmp4.go Loading commit data...
cmp5.go Loading commit data...
complit.go Loading commit data...
const.go Loading commit data...
const1.go Loading commit data...
const2.go Loading commit data...
const3.go Loading commit data...
convert.go Loading commit data...
convlit.go Loading commit data...
convlit1.go Loading commit data...
decl.go Loading commit data...
declbad.go Loading commit data...
defer.go Loading commit data...
empty.go Loading commit data...
env.go Loading commit data...
errchk Loading commit data...
escape.go Loading commit data...
escape1.go Loading commit data...
export.go Loading commit data...
float_lit.go Loading commit data...
for.go Loading commit data...
func.go Loading commit data...
func1.go Loading commit data...
func2.go Loading commit data...
func3.go Loading commit data...
func4.go Loading commit data...
func5.go Loading commit data...
gc.go Loading commit data...
gc1.go Loading commit data...
golden.out Loading commit data...
hashmap.go Loading commit data...
helloworld.go Loading commit data...
hilbert.go Loading commit data...
if.go Loading commit data...
if1.go Loading commit data...
import.go Loading commit data...
import1.go Loading commit data...
indirect.go Loading commit data...
initcomma.go Loading commit data...
int_lit.go Loading commit data...
interface.go Loading commit data...
interface1.go Loading commit data...
interface10.go Loading commit data...
interface11.go Loading commit data...
interface2.go Loading commit data...
interface3.go Loading commit data...
interface4.go Loading commit data...
interface5.go Loading commit data...
interface6.go Loading commit data...
interface7.go Loading commit data...
interface8.go Loading commit data...
interface9.go Loading commit data...
iota.go Loading commit data...
literal.go Loading commit data...
malloc1.go Loading commit data...
mallocrand.go Loading commit data...
mallocrep.go Loading commit data...
mallocrep1.go Loading commit data...
map.go Loading commit data...
method.go Loading commit data...
method1.go Loading commit data...
method2.go Loading commit data...
method3.go Loading commit data...
nil.go Loading commit data...
parentype.go Loading commit data...
peano.go Loading commit data...
printbig.go Loading commit data...
range.go Loading commit data...
run Loading commit data...
sieve.go Loading commit data...
sigchld.go Loading commit data...
simassign.go Loading commit data...
stack.go Loading commit data...
string_lit.go Loading commit data...
stringrange.go Loading commit data...
switch.go Loading commit data...
switch1.go Loading commit data...
test0.go Loading commit data...
turing.go Loading commit data...
typeswitch.go Loading commit data...
utf.go Loading commit data...
varinit.go Loading commit data...
vectors.go Loading commit data...