Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
research:dsal:rg [2008/12/29 18:46] – created jfabry | research:dsal:rg [2009/01/08 20:05] (current) – jfabry | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ===== RG ===== | ||
+ | (Internal classification: | ||
+ | |||
+ | Reference paper: **" | ||
+ | |||
+ | There is a Xerox PARC techreport ((**RG: A Case-Study for Aspect-Oriented Programming** Anurag Mendhekar, Gregor Kiczales, John Lamping, Xerox PARC technical Report SPL97-009, 1997)) but this however does not give any more detailed information. | ||
+ | |||
+ | From Lopes' history paper ((**Aspect-Oriented Programming: | ||
+ | > Although the optimization of memory usage has never, since then, been analyzed as an aspect, the RG example was actually very interesting, | ||
+ | |||
+ | ===== Domain of the language ===== | ||
+ | |||
+ | An image processing system in which model is one of images passing through a series of filters, implemented as procedures. (RG stands for Reverse Graphics) | ||
+ | |||
+ | ===== Intent of the language ===== | ||
+ | |||
+ | Optimization of memory usage when composing filters by performing loop fusion. When each filter procedure is called, it loops over a number of input images and produces a new output image. Output images only exist briefly before being consumed by another loop. Results are " | ||
+ | |||
+ | (In the original techreport referenced in the paper computation and cache use optimisation is also mentioned.) | ||
+ | |||
+ | ===== Join Point Model and Advice Model ===== | ||
+ | |||
+ | * JPM: Domain-Specific: | ||
+ | * AM: Domain-Specific: | ||
+ | |||
+ | |||
+ | ===== Anatomy of the language ===== | ||
+ | |||
+ | The grammar of the language is not explicitly described, a Common Lisp syntax is used in the examples. | ||
+ | |||
+ | ===== Typical Example ===== | ||
+ | |||
+ | The example from the paper we reference (which is the same as in the techreport): | ||
+ | |||
+ | (cond ((and (eq (loop-shape node) ' | ||
+ | (eq (loop-shape input) ' | ||
+ | (fuse loop input ' | ||
+ | : | ||
+ | : | ||
+ | : | ||
+ | |||
+ | The example " | ||
+ | |||
+ | ===== Enforced Restrictions ===== | ||
+ | |||
+ | No explicit mention is made of restrictions in the advice language. | ||
+ | |||
+ | ===== Implementation description ===== | ||
+ | |||
+ | Weaving is done through source code transformation: | ||
+ | |||
+ | |||