Title: Friday 24 August 2001
1Translation of Java to Real-Time Java Using
Aspects
Nicholas Leidenfrost
Morgan Deters
Ron K. Cytron
Department of Computer Science Washington
University in St. Louis
Presented at the Workshop on Aspect-Oriented Progr
amming and Separation of Concerns Lancaster
University, UK
Friday 24 August 2001
Research sponsored by National Science
Foundation (0081214) DARPA (F33615-00-C-1697)
2Overview
- Briefing on the Real-Time Java Memory Model
- Dynamic Analysis with Aspects
- RT-Java Transformation with Aspects
- Concluding Remarks
3Real-Time Java
- Real-Time Specification for Java (RTSJ) brings
infrastructure for real-time accountability to
Java - Real-time schedulability
- High-precision timers
- Asynchronous transfer of control
- Physical memory address access
- Choice of memory allocators and garbage
collectors - Memory reclamation without garbage collection
4Real-Time Java Memory Model
MemoryArea
ImmortalMemory
ScopeMemory
HeapMemory
LTMemory
VTMemory
5ScopeMemory
- A ScopeMemory area is tied to a particular scope
of execution at runtime - Programmer specification of scoped memory can
introduce application-specific code into
application classes, defeating their reuse
class C void foo() / call bar() /
bar() void bar() / generate
garbage /
class C implements Runnable void foo()
/ call bar() / ScopeMemory lt new
LTMemory(1024,1024) lt.enter(this)
void bar() / generate garbage /
void run() bar()
6Nested ScopeMemory References
Y
X
Z
A
G
D
B
F
E
C
ScopeMemory areas may be nested
Object references must point outward
A thread entering nested memory scopes
7High-Level View
AspectJ
Real-Time Java
Java
P
AspectJ
8Reference Probe
- Determine references between objects
- Track objects' references to other objects
- target(a) args(x) set( .)
- Build a doesReference graph
- Discover legal scoping hierarchies
- Take the reverse of the doesReference graph
- Collapse strongly connected components
- The resulting DAG is a representation of legal
scoping hierarchies
9Liveness Probe(Death Probe)
- Determine the points at which objects become
collectible - Track object birth times
- After each execution join point, run a garbage
collection cycle and determine which objects were
collected - Express object liveness behavior in terms of
- Enclosing execution join points
- Distance from birth to death
10Object Recognition
- How to map objects observed in previous analyses
to objects observed in current program execution? - Class-based behavior
- All instances of a class behave similarly
- "New site"-based behavior
- All instances of a class instantiated at the same
source code location behave similarly - Instance-based behavior
- Instances of a class behave differently
11Adding an Enforcement Aspect
- We have
- A set of all legal ScopeMemory hierarchies
- Object lifetime behavior (join points)
- From this information, we
- Select a desirable, legal scope memory hierarchy
- Direct a dispatch unit to implement this hierarchy
12Concluding Remarks
- We have demonstrated the use of aspects in
dynamic analysis - We are working toward
- A software analysis tool that can provide crucial
memory trace information to the programmer - Automation of scope detection and selection
- A Real-Time Java translation system, implemented
in AspectJ, that requires no program annotation
and transforms Java programs into
ScopeMemory-aware RT-Java programs modularly
13Thanks !
Morgan Deters mdeters_at_cs.wustl.edu Nicholas
Leidenfrost naleiden_at_cs.wustl.edu Ron K.
Cytron cytron_at_cs.wustl.edu www.cs.wustl.edu/
doc Department of Computer Science Washington
University Box 1045 St. Louis, MO 63130 USA