74592b0457
The propagated types at call sites for dynamic invocations are collected. When a functions is compiled it is checked whether there is type information available from call sites. If so the function is compiled with the asumption that these types will always be provided. If these expected types change during the rest of the compilation process the generated code for the function will be flushed and the function scheduled for compilation again. Note that the scheduling for being compiled again is not using the re-compilation queue. The Re-compilation queue is used for re-compilation functions when all functions have been compile once and type information will not change. R=floitsch@google.com, ahe@google.com BUG= Review URL: https://chromiumcodereview.appspot.com//10827181 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@10383 260f80e4-7a28-3924-810f-c04153c831b5
Leg is an experimental add-on to the Frog compiler that aims to explore areas of long-term interest: * high-performance extensible scanner and parser * concrete type inferencing * fancy language tool support * programming environment integration * SSA-based intermediate representation * adaptive compilation on the client * ... Some of the things listed above are very experimental of nature and may prove themselves infeasible or unnecesary, so we want to work on them in a way that guarantees we will not disrupt the work being done to make Frog a fantastic compiler for Dart in its default setup. To keep things simple and allow quick experimentation, Leg will only support a subset of Dart and fall back on using the default Frog compiler for the remaining parts of the language. We expect Leg to be a complete and correct implementation of the supported subset throughout the implementation and experimentation so you should always be able to try Leg on any Dart project. The plan is to share code between the default Frog compiler and Leg where it makes sense and to learn from both code bases along the way.