Changes between Version 30 and Version 31 of NewPlugins
- Timestamp:
- 01/21/11 15:35:45 (2 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
NewPlugins
v30 v31 121 121 [http://hackage.haskell.org/package/hoopl Hoopl] is the main workhorse behind the new GHC code generator - it is a sophisticated, higher order and highly polymorphic library for writing optimization and dataflow passes over imperative code graphs. It is based on the work of Lerner, Grove and Chambers [3], and one of the nice properties of the design is that it makes it easy to compose independent dataflow analysis to create a super-analysis that is more powerful than either analysis on its own, without the tedium of having to manually write such a super-analysis. 122 122 123 The question here is: how can users specify in what ways their plugin pass composes with other passes? This is one of the very tantalizing things about hoopl: independent writers of optimization passes can piggyback off each other and combine separate passes to create a much more powerful optimization pass. Part of the question for the API is - how should plugin writers specify when and how transformations occur? 123 The question here is: how can users specify in what ways their plugin pass composes with other passes? This is one of the very tantalizing things about hoopl: independent writers of optimization passes can piggyback off each other and combine separate passes to create a much more powerful optimization pass. Part of the question for the API is - how should plugin writers specify when and how transformations occur? And how should/could they compose their own transformation with the transformations offered by another plugin, or by GHC itself? 124 124 125 TODO: fixme 125 TODO: fixme. check and explain current Hoopl combinators for deep/shallow passes (deepFwdRw and deepBwdRw,) as well as composing them (thenFwdRw and thenBwdRw) and how they should fit into this part of the API 126 126 127 127 == New Backends ==
