ACM Home Page
Please provide us with feedback. Feedback
Instrumenting annotated programs
Full text PdfPdf (223 KB)
Source ACM/Usenix International Conference On Virtual Execution Environments archive
Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments table of contents
Chicago, IL, USA
SESSION: Language representations table of contents
Pages: 164 - 174  
Year of Publication: 2005
ISBN:1-59593-047-7
Authors
Marina Biberstein  IBM Haifa Labs, Haifa University Campus, Haifa, Israel
Vugranam C. Sreedhar  IBM T.J. Watson Research Lab, Hawthorne, NY
Bilha Mendelson  IBM Haifa Labs, Haifa University Campus, Haifa, Israel
Daniel Citron  IBM Haifa Labs, Haifa University Campus, Haifa, Israel
Alberto Giammaria  IBM Austin, Austin, TX
Sponsors
SIGPLAN: ACM Special Interest Group on Programming Languages
SIGOPS: ACM Special Interest Group on Operating Systems
ACM: Association for Computing Machinery
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 5,   Downloads (12 Months): 47,   Citation Count: 0
Additional Information:

abstract   references   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1064979.1065002
What is a DOI?

ABSTRACT

Instrumentation is commonly used to track application behavior: to collect program profiles; to monitor component health and performance; to aid in component testing; and more. Program annotation enables developers and tools to pass extra information to later stages of software development and execution. For example, the .NET runtime relies on annotations for a significant chunk of the services it provides. Both mechanisms are evolving into important parts of software development %, in the context of modern platforms such as Java and .NET.Instrumentation tools are generally not aware of the semantics of information passed via the annotation mechanism. This is especially true for post-compiler, e.g., run-time, instrumentation. The problem is that instrumentation may affect the correctness of annotations, rendering them invalid or misleading, and producing unforeseen side-effects during program execution. This problem has not been addressed so far.In this paper, we show the subtle interaction that takes place between annotations and instrumentation using several real-life examples. Many annotations are intended to provide information for the runtime; the virtual environment is a prominent annotation consumer, and must be aware of this conflict. It may also be required to provide runtime support to other annotation consumers. We propose an annotation taxonomy and show how instrumentation affects various annotations that were used in research and in industrial applications. We show how the annotations can expose enough information about themselves to prevent the instrumentation from accidentally corrupting the annotations. We demonstrate this approach on our annotations benchmark.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

1
 
2
A. Azevedo, A. Nicolau, and J. Hummel. An annotation-aware Java virtual machine implementation. Concurrency: Practice and Experience, 12(6):423--444, 2000.
3
 
4
J. Bloch. JSR 175: A metadata facility for the Java programming language. http://jcp.org/en/jsr/detail?id=175.
 
5
 
6
M. Debusmann and K. Geihs. Efficient and transparent instrumentation of application components using an aspect-oriented approach. In 14th IFIP/IEEE Workshop on Distributed Systems: Operations and Management (DSOM 2003), Heidelberg, Germany, October 2003.
 
7
D. Detlefs, K. R. M. Leino, G. Nelson, and J. Saxe. Extended Static Checking. Technical Report 159, Compaq Systems Research Center, Palo Alto, CA, Dec. 1998.
 
8
ECMA. Standard ECMA-335. Common Language Infrastructure (CLI). ECMA, 2nd edition, December 2002.
 
9
O. Edelstein, E. Farchi, Y. Nir, G. Ratsaby, and S. Ur. Multithreaded Java program test generation. IBM Systems Journal, 41(1):111--125, 2002. Also available as http://www.research.ibm.com/journal/sj/411/edelstein.html.
10
 
11
R. Field. JSR 163: Java platform profiling architecture. http://jcp.org/en/jsr/detail?id=163.
 
12
A. Goldberg and K. Havelund. Instrumentation of Java bytecode for runtime analysis. In Proceedings of the ECOOP 2003 Workshop on Formal Techniques for Java-like Programs, Technical Report 408, 2003.
 
13
J. Jones and S. N. Kamin. Annotating Java class files with virtual registers for performance. Concurrency: Practice and Experience, 12(6):423--444, 2000.
14
 
15
G. Kniesel, P. Costanza, and M. Austermann. Independent extensibility for aspect-oriented systems. In ASC Workshop, ECOOP 2001, Budapest, Hungary, 2001.
16
 
17
18
19
 
20
21
 
22
Microsoft. The .NET framework class library. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/cpref_start.asp.
 
23
 
24
 
25
OOPSLA 2002. Proceedings of the 17th Annual Conference on Object-Oriented Programming Systems, Languages, and Applications, Seattle, Washington, Nov. 4--8 2002. ACM SIGPLAN 36(11) Nov. 2002.
 
26
Open Group. Technical Standard C014: Application Response Measurement Issue 3.0 Java Binding. Open Group, October 2001.
 
27
28
 
29
 
30
 
31
M. Rinard and D. Marinov. Credible compilation with pointers. In Proceedings of the Workshop on Run-Time Result Verification, Trento, Italy, July 1999.
32
 
33
M. Sihman and S. Katz. Superimpositions and aspect-oriented programming. The Computer Journal, 46(5):529--541, September 2003.
 
34
A. Taivalsaari. JSR 139: Connected limited device configuration 1.1. http://jcp.org/en/jsr/detail?id=139.
 
35
L. Wittgenstein. Philosophische Untersuchungen --- Philosophical Investigations, chapter I.22. Blackwell, Oxford, 1953.

Collaborative Colleagues:
Marina Biberstein: colleagues
Vugranam C. Sreedhar: colleagues
Bilha Mendelson: colleagues
Daniel Citron: colleagues
Alberto Giammaria: colleagues