a117777ff3
Shrinking reductions consist of * dead-cont: letprim x = V in K -> K (x not free in K), * dead-val: letcont k x = L in K -> K (k not free in K), * beta-cont-lin: letcont k x = K in C[k y] ->C[K[y/x]] (k not free in C), and * eta-cont: letcont k x = j x in K -> K[j/k] as described in 'Compiling with Continuations, Continued' by Andrew Kennedy. This also requires adding parent pointers to both Node and Reference classes as well as setting them in a separate pass. BUG= R=kmillikin@google.com, sigurdm@google.com Review URL: https://codereview.chromium.org//417043003 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39087 260f80e4-7a28-3924-810f-c04153c831b5