]> Cypherpunks repositories - gostls13.git/commit
Flatten the Frame tree. Now each function call produces a
authorAustin Clements <aclements@csail.mit.edu>
Wed, 29 Jul 2009 18:57:46 +0000 (11:57 -0700)
committerAustin Clements <aclements@csail.mit.edu>
Wed, 29 Jul 2009 18:57:46 +0000 (11:57 -0700)
commit8f694f66613db1d5bf1eb6eb13a9ec00a59ef3b8
treeeea7019f7e07a3a6e3f801510489ef285050a586
parent4152b925f97de964af1553784f3886d93da22aff
Flatten the Frame tree.  Now each function call produces a
single frame and non-overlapping variables reuse frame slots.
As a result, entering and exiting blocks no longer requires
code execution, which means jumps across block boundaries
should be doable now.  Frame slot initialization happens at
definition time now, instead of at frame creation time.  As an
added bonus, Scope's are now exclusively compile-time objects
and we no longer need to specially track the function
activation frame for access to out vars.

R=rsc
APPROVED=rsc
DELTA=313  (102 added, 90 deleted, 121 changed)
OCL=32416
CL=32420
usr/austin/eval/compiler.go
usr/austin/eval/decls.go
usr/austin/eval/expr.go
usr/austin/eval/func.go
usr/austin/eval/scope.go
usr/austin/eval/stmt.go
usr/austin/eval/type.go
usr/austin/eval/typec.go