Speeding up the Meta-level Processing of Java Through Partial. Evaluation.

Size: px
Start display at page:

Download "Speeding up the Meta-level Processing of Java Through Partial. Evaluation."

Transcription

1 Speeding up the Meta-level Processing of Java Through Partial Evaluation Mathias Braux Ecole des Mines de Nantes La Chantrerie - 4, rue Alfred Kastler - B.P Nantes Cedex 3, France Abstract Run-time features like reection in object-oriented languages decrease application performance. In order to reconcile exibility and performance, we adapt the standard partial evaluation process to deal with Java reection API. This paper present away to evaluate at compile time the meta-object computations that normally take place at run time. A classication of the Java reective methods allows the partial evaluation process when to start and end. 1 Introduction Many useful features of object-oriented languages which improve sofware exibility, like inheritance or polymorphism, are run-time features. This means that they rely on some mechanisms ensuring late binding e.g., a reference to a class instance, or a table for virtual functions implies one more level to evaluate. In the same way, reective features imply a level of indirection which lowers performance. However, to recover software performance, some of run-time bindings can be computed at compile time. For example, the run-time binding of a class (i.e., polymorphism) can be computed at compile time with a class hierarchy analysis process (see for instance [6]). Also, useless code can be removed at compile time from the program through program slicing [18, 17]. Partial evaluation [2, 11] is another compile-time technique. When part of a program input is known at compile time, partial evaluation propagetes this information and produce a residualized program which wil deal, at run time, with the rest of the input. Good results have been shown when applying this technique to signicant applications (RPC protocol [15], Fast Fourrier Transformation [8]...). However, partial evaluation had been mainly used to deal with languages that do not separate well the meta-level from the baselevel (C, logic programming language like Prolog, fonctional programming languages like Lisp or Scheme). Therefore, nowadays, partial evaluation techniques are also used to compile away the meta-object code of a program (by propagating invariant properties through this code) [4, 14]. This paper focuses on partial evaluation for the re- ective part of Java. The reection features of Java are described in Section 2 and an example is given. We present a useful taxonomy of the reection API which will enable partial evaluation. In Section 3, we introduce the standard partial evaluation and we present an extended version of such a process to optimize the reection API of Java. In Section 4, we address related work and we conclude in Section 5. 2 The Reection API of Java Java provides a reection API which reies the basic structural elements of its model, classes, constructors, methods, elds... into objects of type Class, Constructor, Method, Field.... Since these objects

2 are objects used to describe objects, they are called meta-objects [12]. When a meta-object receives a message, the computation resulting from the invocation of the method (a meta-level method) is called a meta-level computation. The other computations are located at the base-level and deal with base-objects. 2.1 A Toy Example The following example returns a string that concatenates the class name of an object and the name of the rst method held in its dictionary. The packagename argument represents a the name of a package to be added at the beginning of the string. public String getinfo(object obj, String packagename) { Method[] setofmethods = obj.getclass().getmethods(); String theresult = new String(); theresult=theresult.concat(packagename); theresult=theresult.concat(obj.getclass().getname()); theresult=theresult.concat(setofmethods[0].getname()); return(theresult); } Two kinds of objects are involved in this code: the base-objects (obj, theresult and packagename) and the meta-objects (setofmethods). 2.2 The Reective Features The Java API provides reective features to allow introspection of Java code. We believe that the reection API (cf Java documentation) is dierent from the other Java APIs. Many meta-level computations are independent from the base-level object state. The result of these meta-level computations depends only on the base-object types (i.e., classes). Figure 1 gives an example which computes the expression X. This expression returns the rst method name of the baseobject obj (which is a RemoteObject instance). The arrow run-time1 is a method call which goesuptothe meta-level and returns the reied class of obj. The arrow run-time2 is a second kind of method which works at the meta-level and returns the entire method dictionary of obj. The arrow run-time3 corresponds to a method which ends the meta-level computation, it goes down to the base-level and returns the name of the rst method of a RemoteObject (i.e. Object Clone()). Therefore, once the class of an object is xed, the result of the meta-level method can be computed at compile time (cf. arrow compile-time on Figure 1). We have identied three important categories of such meta-level methods. All of these methods can be subject to partial evalutation. 1. The rst category contains methods which go up to the meta-level. There is a single such method: Object.getClass(), which returns the class of the receiver. 2. The second category contains methods whose computations take place within the meta-level (i.e. they work on meta-objects). They return a meta-object (for example getmethods() returns an array of meta-objects Method). This category includes Method[] Class.getMethods(), Constructor[] Class.getConstructors(), Field[] Class.getFields(), Class[] Class.getInterfaces(), Class Class.getSuperclass(), Class[] Class.getClasses(). 3. The third category also work on meta-objects and contains methods which return a base-object (String, primitive type wrappers and for sake of simplicity, we include primitive types in the term "base-object") and terminate the metacomputation by going down back to the baselevel. Here we nd tostring(), getname(), hashcode(), getmodifiers(), for each of the classes Field, Method, Constructor and Class class. We nd also int getmodiers() from Class, Method and Field classes. Those method calls are performed at run-time. In order to improve software performance, we want to perform them at compile time. The classication given above allows the partial evaluation process to know when a meta-computation starts (a method of the rst category is invoked) and when it stops (a method of the third category is invoked). 3 Partial Evaluation Partial evaluation [2, 11] is a source to source transformation technique whose aim is to improve software

3 Meta-object Level C Run-time 2 M Method M = C.getMethods() String S = M[0].getName() Run-time evaluation of X Run-time 1 Class C = obj.getclass() RemoteObject obj Run-time 3 X="Object Clone()" X=obj.getClass().getMethods()[0].getName() Base-level Compile-time evaluation of X Base-level Compile-time Partial evaluation X="Object Clone()" Meta-level object Base-level object Figure 1: Meta-object level compile-time optimization performance. From a generic program and part of the program input (called the static part of the input), partial evaluation produces a specialized program which only needs to deal with the remaining part of the input (the dynamic part of the input) at run-time. Partial evaluation can be applied in two ways: on-line or o-line. On-line partial evaluation directly propagates the static input through the program. Alternatively, an o-line partial evaluator rst deals with abstract values. There are basically two abstract values, "static" for static input and "dynamic" for dynamic input. A Binding-time analysis [10] propagates this information through the program. It is only in a second phase that the program is actually specialized using concrete values. The binding-time analysis factorizes a part of the whole process. When the same program must be specialized several times with respect to multiple static input, some redondant computation are avoided. The basic partial evaluation of the example given in Section 2 is described in Section 3.1. However, in this article, we focus on the meta-level method calls. Egon Borger [1] split Java semantic in several parts. Those we are interested in are the standard imperative core semantics JAVA I and the object core semantics JAVA C and JAVA O.JAVA I denes a domain for variables and both JAVA C and JAVA O dene domains for object and their classes (i.e. their types). Standard partial evaluation techniques such as the ones used in Tempo [5] can straightforwardly deals with JAVA I. Here, we are interested in extending them in order to deal with both JAVA C (classes) and JAVA O (objects) semantic parts. In this way, we extend a standard partial evaluator to propagate both variable values and variable type. The two following examples are processed by an online partial evaluator. 3.1 An Example of Partial Evaluation Given the method getinfo() of Section 2.1, and assuming it is only used with a particular context (for example, packagename = "java.lang: "), the variable packagename becomes static in the whole code. Then, getinfo() can be transformed through standard partial evaluation techniques into a faster residual method which we call R1 getinfo(object obj):

4 public String R1_getInfo(Object obj) { Method[] setofmethods = obj.getclass().getmethods(); String theresult = new String(); theresult=theresult.concat("the class is : "); // CHANGED theresult=theresult.concat(obj.getclass().getname()); theresult=theresult.concat(setofmethods[0].getname()); return(theresult); } In the previous example, the value of variable packagename has been "inlined" in the method body. The late binding of the variable has been removed, making the method faster. This partial evaluation process only deals with base-object states. Let us consider its extension to base-object types. 3.2 Partial Evaluation at Meta-Level A part of meta-level computations deals with another kind of invariant: classes. Objects references cannot have a textual representation, and therefore, cannot be manipulated like primitive types. The results of meta-level operations can only be usefully computed at compile time when the results of those methods can be represented textually (e.g., when applied to a known class, the getname() method returns a character string). Each method that belongs to the classication (cf. Section 2.2) will be evaluated at compile time with respect to its category. Denition The partial evaluation of a metacomputation starts with the invocation of a method from the rst category, proceeds while it encounters methods from the second category (while keeping the results in a special store) and ends when returning from the rst invocation of a method from the third category. At this stage, the result of the last method is a base-object. Then, the process can replace the evaluated expression with this base-object value. Example We illustrate the specialization process with an on-line technique and we reuse the previous example with another kind of context. The context only include base-object types. For example, we assume that the type of obj is a RemoteObject (package RMI in Java API) and that the rst method in its dictionary is Object clone(). The R1 getinfo() method can be transformed into a faster residual method (which we call R2 getinfo()): public String R2_getInfo() { String theresult = new String(); theresult=theresult.concat("the class is : "); theresult=theresult.concat("remoteobject"); // CHANGED theresult=theresult.concat("clone()"); // CHANGED return(theresult); } This example is automatically computed by our transformation framework that is under construction (cf. Section 5). The rst line of the method body is evaluated at compile time and the set of the public methods of obj is stored. The expression obj.getclass().getname() is partially evaluated in the above context and returns the string "RemoteObject". Then, the special store is used to statically compute the expression setofmethods[0].getname() (the computation returns the string "clone()"). A dead code elimination process discard the variable setofmethods and Object Obj declarations (since they are no more useful). The speedup of such specialization for 1000 invocations at the method getinfo() is closed to 7 times (on a SPARC station 5 running Java jdk1.1.6). In a larger frame, applications using meta-object protocol are good applicants to such a partial evaluation process. Therefore, we think that "extended partial evaluation" should be taken into account. At the moment, we only deal with meta-level methods that do not have any side eect on the base-level, and for which the base-level does not also have any side eect on the meta-level. For example, we do not handle the forname(string classname) method since "classname" is a base variable which inuences meta-level computations. 4 Related Work Three main directions for implementing ecient reective languages exist [4]. They all try to anticipate the binding time of meta computations at compile time. The Currying technique (applied to CLOS [12]), partial evaluation for meta-object protocol [14] and the specialization technique of compile-time meta-object protocol (applied to OpenC++ [3]) do not t well with the Java meta-level model. The Currying technique and the specialization technique of compile-time meta-object protocol are both

5 need to process their program division (separation of meta-object code in a static part and a dynamic part) by hand. Partial evaluation directly compute a residual program of an meta-object code, according to an base-object code. The Currying technique uses lambda-expressions to factorize recurrent metaclass method calls (a part of the call context is usually constant). Then, the result of the lambda-expression can be stored in order to avoid some useless computations. This transformation is used to directly retrieve computation results via a cache improving the meta-object protocol performance. This process is closed to data-specilization [13]. The specialization technique of compile-time metaobject protocol do not use a cache neither a lambdaexpression but factorize by hand static part of a metaobject code, and therefore, is closed to a partial evaluation process by hand). The third method uses partial evaluation. Partial evaluation can compute a specialized meta-level program according to a base-level code. This ts the Futamura projection [7] but cannot be applied as Java is not interpreted but compiled to byte-code. This technique is used [14] to partial evaluate a meta-level interpreter for ABCL/R3 (a concurrent reective language) but requires to modify the standard meta-object protocol. In Java, no meta-object protocol source code is provided, except for some extensions like MetaJava [9] or OpenJava (the OpenC++ Java version). These three directions cannot be applied. We have therefore proposed a partial evaluation process which propagates type values through the meta-level. 5 Conclusion and Future Works This paper presents a method for compiling-away a part of meta-level computation of a program. These meta-level computations should be isolated in order to specialize it. A partial evaluator which propagates type values is required because the meta-level methods are not processed like the others in Java. We must therefore deal with these methods in another way. We have given an example that could have been produced by an on-line partial evaluator taking types into account and for which, speed-up is promising. In order to completely validate our work, an application for several transformation processes is currently being developed. In addition, this transformation of the reective part of a program can be a prerequisite to run other kinds of specialization (for example, another partial evaluation or an object slice [16, 17]... ). We are currently interested in extending our approach to methods with side-eects in order to compose variable value propagation and type value propagation. 6 Acknowledgments Special thanks to Jacques Noye for many fruitful discussions. Thanks to Thomas Ledoux, Noury Bouraqadi and Gilles Trombettoni for their comments on a draft of this paper. References [1] E. Borger and W. Schulte. Programmer friendly modular denition of the semantics of Java. In J. Alves-Foss, editor, Formal Syntax and Semantics of Java, Lecture Notes in Computer Science. Springer-Verlag, [2] Charles Consel and Olivier Danvy. Tutorial Notes on Partial Evaluation. ACM Symposium on Principles of Programming Languages, pages 493{501, [3] Shigeru Chiba. A Metaobject Protocol for C++. In OOPSLA'95, Tenth Annual Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 285{299, Austin, Texas, USA, October ACM Press. ACM SIGPLAN Notices, 30(9). [4] Shigeru Chiba. Implementing Techniques for Ecient Reective Languages. Technical report, Departement of Information Science, University of Tokyo, June [5] C. Consel, L. Hornof, J. Lawall, R. Marlet, G. Muller, J. Noye, S. Thibault, and N. Volanschi.

6 Tempo: Specializing systems applications and beyond. In ACM Computing Surveys,Symposium on Partial Evaluation, [6] Jerey Dean, David Grove, and Craig Chambers. Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis. In ECOOP'95 - Object-Oriented Programming - 9th European Conference, volume 707, Aarhus, Denmark, August Springer-Verlag. [7] Y. Futamura. Partial Computation of Programs. In RMIS Symposia on Software Science and Engineering, number 147 in LNCS, page 135, [8] Robert Gluck, Ryo Nakashige, and Robert Zochling. Binding-time analysis applied to mathematical algorithms. In J. Dolezal and J. Fidler, editors, System Modelling and Optimization, pages 137{146. Chapman & Hall, [9] Michael Golm and Jurgen Kleinoder. MetaJava - A Plateform for Adaptable Operating-System Mechanisms. In ECOOP 97 Workshop on Reective Real-time Object-Oriented Programming and Systems, June [10] Luke Hornof and Jacques Noye. Accurate Binding-Time Analysis For Imperative Languages: Flow, Context, and Return Sensitivity. In ACM SIGPLAN Symposium on Partial Evaluation and Semantic-Based Program Manipulation, June [14] Hidehiko Masuhara and Akinori Yonezawa. Design and Partial Evaluation of Meta-objects for a Concurrent Reective Language. In ECOOP'98 - Object-Oriented Programming - 12th European Conference, volume 1445, pages 418{439, Brussels, Belgium, July Springer-Verlag. [15] Gilles Muller, Eugen-Nicolae Volanschi, and Renaud Marlet. Scaling up Partial Evaluation for Optimizing the Sun RPC Protocol. In Symposium on Partial Evaluation and Semantic-Based Program Manipulation, Amsterdam, June ACM SIGPLAN. [16] Thomas Reps. Program Analysis via Graph Reachability. In J. Maluszynski, editor, ILPS '97: International Logic Programming Symposium, Port Jeerson, NY, pages 5{19, Cambridge, MA, October The M.I.T. Press. [17] Thomas Reps and Todd Turnidge. Program Specialization via Program Slicing. In O. Danvy, R. Glueck, and P. Thiemann, editors, Lecture Notes in Computer Science, volume 1110, pages 409{429, Springer-Verlag, New York, NY, [18] Frank Tip. A survey of program Slicing Techniques. Technical report, Computer center of Wiskunde dpt of software technologie, [11] Neil D. Jones, Carsten K. Gomard, and Peter Sestoft. Partial Evaluation and Automatic Program Generation. Prentice Hall, International series in computer science, [12] Gregor Kiczales, Jim des Rivieres, and Daniel G. Bobrow. The Art of the Metaobject Protocol. Cambridge, MIT Press, [13] T.B. Knoblock and E. Ruf. Data specialization. In Proceedings of the ACM SIGPLAN '96 Conference on Programming Language Design and Implementation, pages 215{225. ACM SIGPLAN Notices, 31(5), May 1996.

Shigeru Chiba Michiaki Tatsubori. University of Tsukuba. The Java language already has the ability for reection [2, 4]. java.lang.

Shigeru Chiba Michiaki Tatsubori. University of Tsukuba. The Java language already has the ability for reection [2, 4]. java.lang. A Yet Another java.lang.class Shigeru Chiba Michiaki Tatsubori Institute of Information Science and Electronics University of Tsukuba 1-1-1 Tennodai, Tsukuba, Ibaraki 305-8573, Japan. Phone: +81-298-53-5349

More information

Black-Box Program Specialization

Black-Box Program Specialization Published in Technical Report 17/99, Department of Software Engineering and Computer Science, University of Karlskrona/Ronneby: Proceedings of WCOP 99 Black-Box Program Specialization Ulrik Pagh Schultz

More information

Generative Programming from a Domain-Specific Language Viewpoint

Generative Programming from a Domain-Specific Language Viewpoint Generative Programming from a Domain-Specific Language Viewpoint Charles Consel To cite this version: Charles Consel. Generative Programming from a Domain-Specific Language Viewpoint. Unconventional Programming

More information

RbCl: A Reective Object-Oriented Concurrent Language. without a Run-time Kernel. Yuuji Ichisugi, Satoshi Matsuoka, Akinori Yonezawa

RbCl: A Reective Object-Oriented Concurrent Language. without a Run-time Kernel. Yuuji Ichisugi, Satoshi Matsuoka, Akinori Yonezawa RbCl: A Reective Object-Oriented Concurrent Language without a Run-time Kernel Yuuji Ichisugi, Satoshi Matsuoka, Akinori Yonezawa Department of Information Science, The University of Tokyo 3 Abstract We

More information

Natural Semantics [14] within the Centaur system [6], and the Typol formalism [8] which provides us with executable specications. The outcome of such

Natural Semantics [14] within the Centaur system [6], and the Typol formalism [8] which provides us with executable specications. The outcome of such A Formal Executable Semantics for Java Isabelle Attali, Denis Caromel, Marjorie Russo INRIA Sophia Antipolis, CNRS - I3S - Univ. Nice Sophia Antipolis, BP 93, 06902 Sophia Antipolis Cedex - France tel:

More information

A practical and modular implementation of extended transaction models

A practical and modular implementation of extended transaction models Oregon Health & Science University OHSU Digital Commons CSETech January 1995 A practical and modular implementation of extended transaction models Roger Barga Calton Pu Follow this and additional works

More information

Information Processing Letters Vol. 30, No. 2, pp , January Acad. Andrei Ershov, ed. Partial Evaluation of Pattern Matching in Strings

Information Processing Letters Vol. 30, No. 2, pp , January Acad. Andrei Ershov, ed. Partial Evaluation of Pattern Matching in Strings Information Processing Letters Vol. 30, No. 2, pp. 79-86, January 1989 Acad. Andrei Ershov, ed. Partial Evaluation of Pattern Matching in Strings Charles Consel Olivier Danvy LITP DIKU { Computer Science

More information

A Meta-Model for Composition Techniques in Object-Oriented Software Development

A Meta-Model for Composition Techniques in Object-Oriented Software Development A Meta-Model for Composition Techniques in Object-Oriented Software Development Bedir Tekinerdogan Department of Computer Science University of Twente P.O. Box 217, 7500 AE Enschede, The Netherlands E-Mail:

More information

Reflective Java and A Reflective Component-Based Transaction Architecture

Reflective Java and A Reflective Component-Based Transaction Architecture Reflective Java and A Reflective Component-Based Transaction Architecture Zhixue Wu APM Ltd., Poseidon House, Castle Park, Cambridge CB3 0RD UK +44 1223 568930 zhixue.wu@citrix.com ABSTRACT In this paper,

More information

Structural Reflection by Java Bytecode Instrumentation

Structural Reflection by Java Bytecode Instrumentation Vol. 42 No. 11 Nov. 2001 Java, Java API introspection API Javassist Java JVM Javassist JVM Javassist Structural Reflection by Java Bytecode Instrumentation Shigeru Chiba, and Michiaki Tatsubori The standard

More information

GOO: a Generative Object-Oriented Language

GOO: a Generative Object-Oriented Language Position paper for the ECOOP 02 workshop on generative programming GOO: a Generative Object-Oriented Language Ulrik P. Schultz Center for Pervasive Computing University of Aarhus, Denmark Wednesday 10th

More information

Standard JIT Compiler - Ad-hoc construction - Limited/overspec optim - restricted portability

Standard JIT Compiler - Ad-hoc construction - Limited/overspec optim - restricted portability OpenJIT A Reective Java JIT Compiler Short Version for the OOPSLA'98 Reection Workshop Satoshi Matsuoka Tokyo Institute of Technology and Japan Science and Technology Corporation Hirotaka Ogawa Tokyo Institute

More information

The Extensible Java Preprocessor Kit. and a Tiny Data-Parallel Java. Abstract

The Extensible Java Preprocessor Kit. and a Tiny Data-Parallel Java. Abstract The Extensible Java Preprocessor Kit and a Tiny Data-Parallel Java Yuuji ICHISUGI 1, Yves ROUDIER 2 fichisugi,roudierg@etl.go.jp 1 Electrotechnical Laboratory, 2 STA Fellow, Electrotechnical Laboratory

More information

features of Python 1.5, including the features earlier described in [2]. Section 2.6 summarizes what is new in Python The class and the class

features of Python 1.5, including the features earlier described in [2]. Section 2.6 summarizes what is new in Python The class and the class A note on reection in Python 1.5 Anders Andersen y AAndersen@ACM.Org March 13, 1998 Abstract This is a note on reection in Python 1.5. Both this and earlier versions of Python has an open implementation

More information

Do! environment. DoT

Do! environment. DoT The Do! project: distributed programming using Java Pascale Launay and Jean-Louis Pazat IRISA, Campus de Beaulieu, F35042 RENNES cedex Pascale.Launay@irisa.fr, Jean-Louis.Pazat@irisa.fr http://www.irisa.fr/caps/projects/do/

More information

Implementing Software Connectors through First-Class Methods

Implementing Software Connectors through First-Class Methods Implementing Software Connectors through First-Class Methods Cheoljoo Jeong and Sangduck Lee Computer & Software Technology Laboratory Electronics and Telecommunications Research Institute Taejon, 305-350,

More information

Konstantinos Sagonas and Michael Leuschel. ACM Computing Surveys, Vol. 30, No. 3es, September 1998

Konstantinos Sagonas and Michael Leuschel. ACM Computing Surveys, Vol. 30, No. 3es, September 1998 Extending partial deduction to tabled execution: some results and open issues Konstantinos Sagonas and Michael Leuschel ACM Computing Surveys, Vol. 30, No. 3es, September 1998 Article 16 Permission to

More information

Dynamic Adaptability of Services in Enterprise JavaBeans Architecture

Dynamic Adaptability of Services in Enterprise JavaBeans Architecture 1. Introduction Dynamic Adaptability of Services in Enterprise JavaBeans Architecture Zahi Jarir *, Pierre-Charles David **, Thomas Ledoux ** zahijarir@ucam.ac.ma, {pcdavid, ledoux}@emn.fr (*) Faculté

More information

An Efficient Staging Algorithm for Binding-Time Analysis

An Efficient Staging Algorithm for Binding-Time Analysis An Efficient Staging Algorithm for Binding-Time Analysis Takuma Murakami 1, Zhenjiang Hu 1,2, Kazuhiko Kakehi 1, and Masato Takeichi 1 1 Department of Mathematical Informatics, Graduate School of Information

More information

Efficient Separate Compilation of Object-Oriented Languages

Efficient Separate Compilation of Object-Oriented Languages Efficient Separate Compilation of Object-Oriented Languages Jean Privat, Floréal Morandat, and Roland Ducournau LIRMM Université Montpellier II CNRS 161 rue Ada 34392 Montpellier cedex 5, France {privat,morandat,ducour}@lirmm.fr

More information

Compilation Strategies as Objects

Compilation Strategies as Objects Compilation Strategies as Objects Anurag Mendhekar, Gregor J. Kiczales and John Lamping Published in Proceedings of the 1994 OOPSLA Workshop on Object-Oriented Compilation -- What are the Objects? 1994.

More information

Reflex Towards an Open Reflective Extension of Java

Reflex Towards an Open Reflective Extension of Java Reflex Towards an Open Reflective Extension of Java Éric Tanter 2, Noury M. N. Bouraqadi-Saâdani 1, and Jacques Noyé 1 1 École des Mines de Nantes La Chantrerie - 4, rue Alfred Kastler B.P. 20722 F-44307

More information

An Approach to Polyvariant Binding Time Analysis for a Stack-Based Language

An Approach to Polyvariant Binding Time Analysis for a Stack-Based Language Supported by Russian Foundation for Basic Research project No. 06-01-00574-a and No. 08-07-00280-a, and Russian Federal Agency of Science and Innovation project No. 2007-4-1.4-18-02-064. An Approach to

More information

An Approach to Polyvariant Binding Time Analysis for a Stack-Based Language

An Approach to Polyvariant Binding Time Analysis for a Stack-Based Language An Approach to Polyvariant Binding Time Analysis for a Stack-Based Language Yuri A. Klimov Keldysh Institute of Applied Mathematics, Russian Academy of Sciences RU-125047 Moscow, Russia, yuklimov@keldysh.ru

More information

Thunks (continued) Olivier Danvy, John Hatcli. Department of Computing and Information Sciences. Kansas State University. Manhattan, Kansas 66506, USA

Thunks (continued) Olivier Danvy, John Hatcli. Department of Computing and Information Sciences. Kansas State University. Manhattan, Kansas 66506, USA Thunks (continued) Olivier Danvy, John Hatcli Department of Computing and Information Sciences Kansas State University Manhattan, Kansas 66506, USA e-mail: (danvy, hatcli)@cis.ksu.edu Abstract: Call-by-name

More information

Efficient Support for Mixin-Based Inheritance Using Metaclasses

Efficient Support for Mixin-Based Inheritance Using Metaclasses ubmission to the Workshop on Reflectively Extensible Programming Languages and ytems (REPL) at the International Conference on Generative Programming and Component Engineering (GPCE 03) eptember 22 nd,

More information

Status of work on AOP at the OCM group, APRIL 2001 (Ecole des Mines de Nantes, Technical Report no. 01/4/INFO)

Status of work on AOP at the OCM group, APRIL 2001 (Ecole des Mines de Nantes, Technical Report no. 01/4/INFO) Status of work on AOP at the OCM group, APRIL 2001 (Ecole des Mines de Nantes, Technical Report no. 01/4/INFO) The OCM (Objects, Components, Models) group of the computer science department at Ecole des

More information

Suppose a merchant wants to provide faster service to \big spenders" whose records indicate recent spending exceeding some threshold. Determining whet

Suppose a merchant wants to provide faster service to \big spenders whose records indicate recent spending exceeding some threshold. Determining whet Multi-Stage Specialization with Relative Binding Times Mark Leone Indiana University Peter Lee Carnegie Mellon University Technical Report #497 Computer Science Department, Indiana University November

More information

Call by Declaration. Erik Ernst 1. Dept. of Computer Science, University of Aarhus, Denmark

Call by Declaration. Erik Ernst 1. Dept. of Computer Science, University of Aarhus, Denmark Call by Declaration Erik Ernst 1 Dept. of Computer Science, University of Aarhus, Denmark eernst@daimi.au.dk Abstract. With traditional inheritance mechanisms, a subclass is able to use inherited features

More information

Publications related to Chez Scheme

Publications related to Chez Scheme Publications related to Chez Scheme [1] Andrew W. Keep and R. Kent Dybvig. Automatic cross-library optimization. In Scheme 2013: Workshop on Scheme and Functional Programming, 2013. Describes how Chez

More information

Dimensions of Precision in Reference Analysis of Object-oriented Programming Languages. Outline

Dimensions of Precision in Reference Analysis of Object-oriented Programming Languages. Outline Dimensions of Precision in Reference Analysis of Object-oriented Programming Languages Dr. Barbara G. Ryder Rutgers University http://www.cs.rutgers.edu/~ryder http://prolangs.rutgers.edu/ Research supported,

More information

with a Meta-Level Architecture Department of Information Science, The University oftokyo In Proceedings of 7th European Conference on Object-Oriented

with a Meta-Level Architecture Department of Information Science, The University oftokyo In Proceedings of 7th European Conference on Object-Oriented Designing an Extensible Distributed Language with a Meta-Level Architecture Shigeru Chiba Takashi Masuda Department of Information Science, The University oftokyo E-mail: fchiba,masudag@is.s.u-tokyo.ac.jp

More information

Composition and Separation of Concerns in the Object-Oriented Model

Composition and Separation of Concerns in the Object-Oriented Model ACM Computing Surveys 28A(4), December 1996, http://www.acm.org/surveys/1996/. Copyright 1996 by the Association for Computing Machinery, Inc. See the permissions statement below. Composition and Separation

More information

Efficient Separate Compilation of Object-Oriented Languages

Efficient Separate Compilation of Object-Oriented Languages Efficient Separate Compilation of Object-Oriented Languages Jean Privat, Floréal Morandat, and Roland Ducournau LIRMM Université Montpellier II CNRS 161 rue Ada 34392 Montpellier cedex 5, France {privat,morandat,ducour}@lirmm.fr

More information

A computational model for an object-oriented operating system

A computational model for an object-oriented operating system A computational model for an object-oriented operating system Lourdes Tajes Martínez, Fernando Álvarez García, Marian Díaz Fondón, Darío Álvarez Gutiérrez y Juan Manuel Cueva L? ovelle Abstract--The design

More information

Reuse Contracts As Component Interface. Descriptions. Koen De Hondt, Carine Lucas, and Patrick Steyaert. Programming Technology Lab

Reuse Contracts As Component Interface. Descriptions. Koen De Hondt, Carine Lucas, and Patrick Steyaert. Programming Technology Lab Reuse Contracts As Component Interface Descriptions Koen De Hondt, Carine Lucas, and Patrick Steyaert Programming Technology Lab Computer Science Department Vrije Universiteit Brussel Pleinlaan 2, B-1050

More information

2. Department of Computer Science, Yale University

2. Department of Computer Science, Yale University Report on the Visit to Department of Computer Sciences, Yale University Wenbiao Wu ESD Lab, Department of Electronics Royal Institute of Technology Sweden 1. Introduction Department of Computer Science

More information

Macro Processing in Object-Oriented Languages

Macro Processing in Object-Oriented Languages Macro Processing in Object-Oriented Languages Shigeru Chiba Institute of Information Science and Electronics, University of Tsukuba and PRESTO, Japan Science and Technology Corporation E-mail: chiba@is.tsukuba.ac.jp

More information

AL-1/D: A Distributed Programming System. with Multi-Model Reection Framework. Yutaka Ishikawayy.

AL-1/D: A Distributed Programming System. with Multi-Model Reection Framework. Yutaka Ishikawayy. AL-1/D: A Distributed Programming System with Multi- Reection Framework Hideaki Okamuray okamura@mt.cs.keio.ac.jp Yutaka Ishikawayy yisikawa@etl.go.jp Mario Tokoroy 3 mario@mt.cs.keio.ac.jp y Department

More information

PROXY WORLD WRAPPED WORLD. link V V V. link FSV FSV DFSV. link. V: Vector FSV: FSVector DFS: DFSVector

PROXY WORLD WRAPPED WORLD. link V V V. link FSV FSV DFSV. link. V: Vector FSV: FSVector DFS: DFSVector Engineering Java Proxy Objects using Reection Karen Renaud & Huw Evans University of Glasgow fkaren,huwg@dcs.gla.ac.uk Abstract Java programmers need to be able to locally specialise the run-time behaviour

More information

Chalmers University of Technology. Without adding any primitives to the language, we dene a concurrency monad transformer

Chalmers University of Technology. Without adding any primitives to the language, we dene a concurrency monad transformer J. Functional Programming 1 (1): 1{000, January 1993 c 1993 Cambridge University Press 1 F U N C T I O N A L P E A R L S A Poor Man's Concurrency Monad Koen Claessen Chalmers University of Technology email:

More information

Safe Metaclass Composition Using Mixin-Based Inheritance

Safe Metaclass Composition Using Mixin-Based Inheritance Safe Metaclass Composition Using Mixin-Based Inheritance Noury Bouraqadi bouraqadi@ensm-douai.fr http://csl.ensm-douai.fr/noury Dépt. G.I.P. - Ecole des Mines de Douai 941, rue Charles Bourseul - B.P.

More information

m() super.m (execution path) extension f n() f.m n() o.m extension e m() n() m() extensible object o composite object (o < e < f)

m() super.m (execution path) extension f n() f.m n() o.m extension e m() n() m() extensible object o composite object (o < e < f) Reective implementation of non-functional properts with the JavaPod component platform Eric Bruneton, Michel Riveill SIRAC Project (INPG-UJF-INRIA) INRIA, 655 av. de l'europe, 38330 Montbonnot Saint-Martin,

More information

COFFEESTRAINER - Statically Checking Structural Constraints on Java Programs

COFFEESTRAINER - Statically Checking Structural Constraints on Java Programs COFFEESTRAINER - Statically Checking Structural Constraints on Java Programs Boris Bokowski bokowski@inf.fu-berlin.de Technical Report B-98-14 December 1998 Abstract It is generally desirable to detect

More information

Extracting the Range of cps from Affine Typing

Extracting the Range of cps from Affine Typing Extracting the Range of cps from Affine Typing Extended Abstract Josh Berdine, Peter W. O Hearn Queen Mary, University of London {berdine, ohearn}@dcs.qmul.ac.uk Hayo Thielecke The University of Birmingham

More information

More about Formatting. Olivier Danvy. Aarhus University. December Abstract

More about Formatting. Olivier Danvy. Aarhus University. December Abstract More about Formatting Olivier Danvy Computer Science Department Aarhus University (danvy@daimi.aau.dk) December 1993 Abstract This is an extension of the \format" example, in our POPL tutorial [2]. The

More information

language (no restrictions due to self-application) the generator manipulates only syntax trees (no need to implement a self-interpreter) values in gen

language (no restrictions due to self-application) the generator manipulates only syntax trees (no need to implement a self-interpreter) values in gen Multi-Level Specialization (Extended Abstract) Robert Gluck 1 and Jesper Jrgensen 2 1 DIKU, Department of Computer Science, University of Copenhagen, Universitetsparken 1, DK-2100 Copenhagen, Denmark.

More information

Specializing Java Programs in a Distributed Environment

Specializing Java Programs in a Distributed Environment JOURNAL OF INFORMATION SCIENCE AND ENGINEERING 18, 787-801 (2002) Specializing Java Programs in a Distributed Environment Internet Computing Lab. Department of Computer Science and Engineering Korea University

More information

COMPOSABILITY, PROVABILITY, REUSABILITY (CPR) FOR SURVIVABILITY

COMPOSABILITY, PROVABILITY, REUSABILITY (CPR) FOR SURVIVABILITY AFRL-IF-RS-TR-2002-61 Final Technical Report April 2002 COMPOSABILITY, PROVABILITY, REUSABILITY (CPR) FOR SURVIVABILITY Kestrel Institute Sponsored by Defense Advanced Research Projects Agency DARPA Order

More information

Programming language design and analysis

Programming language design and analysis Programming language design and analysis Introduction Marius Minea 25 September 2017 Why this course? Programming languages are fundamental and one of the oldest CS fields Language design is an important

More information

2 LaT E X style le for Lecture Notes in Computer Science { documentation 2 The Basic Algorithm This section describes the basic algorithm where all th

2 LaT E X style le for Lecture Notes in Computer Science { documentation 2 The Basic Algorithm This section describes the basic algorithm where all th One Pass Real-Time Generational Mark-Sweep Garbage Collection Joe Armstrong and Robert Virding Computer Science Laboratory Ellemtel Telecommunications Systems Laboratories Box 1505 S-125 25 ALVSJ O SWEDEN

More information

Checkpoint (T1) Thread 1. Thread 1. Thread2. Thread2. Time

Checkpoint (T1) Thread 1. Thread 1. Thread2. Thread2. Time Using Reection for Checkpointing Concurrent Object Oriented Programs Mangesh Kasbekar, Chandramouli Narayanan, Chita R Das Department of Computer Science & Engineering The Pennsylvania State University

More information

Common Lisp Object System Specification. 1. Programmer Interface Concepts

Common Lisp Object System Specification. 1. Programmer Interface Concepts Common Lisp Object System Specification 1. Programmer Interface Concepts Authors: Daniel G. Bobrow, Linda G. DeMichiel, Richard P. Gabriel, Sonya E. Keene, Gregor Kiczales, and David A. Moon. Draft Dated:

More information

CS555: Distributed Systems [Fall 2017] Dept. Of Computer Science, Colorado State University

CS555: Distributed Systems [Fall 2017] Dept. Of Computer Science, Colorado State University CS 555: DISTRIBUTED SYSTEMS [RPC & DISTRIBUTED OBJECTS] Shrideep Pallickara Computer Science Colorado State University Frequently asked questions from the previous class survey XDR Standard serialization

More information

The Stepping Stones. to Object-Oriented Design and Programming. Karl J. Lieberherr. Northeastern University, College of Computer Science

The Stepping Stones. to Object-Oriented Design and Programming. Karl J. Lieberherr. Northeastern University, College of Computer Science The Stepping Stones to Object-Oriented Design and Programming Karl J. Lieberherr Northeastern University, College of Computer Science Cullinane Hall, 360 Huntington Ave., Boston MA 02115 lieber@corwin.ccs.northeastern.edu

More information

An Introduction to Type Inference

An Introduction to Type Inference Sebastian Zimmeck An Introduction to Type Inference Professor Alfred V. Aho - COMS E6998-2 Advanced Topics in Programming Languages and Compilers November 29, 2011 Presentation Overview 1. Introduction

More information

which a value is evaluated. When parallelising a program, instances of this class need to be produced for all the program's types. The paper commented

which a value is evaluated. When parallelising a program, instances of this class need to be produced for all the program's types. The paper commented A Type-Sensitive Preprocessor For Haskell Noel Winstanley Department of Computer Science University of Glasgow September 4, 1997 Abstract This paper presents a preprocessor which generates code from type

More information

Making fast move generators with partial evaluation

Making fast move generators with partial evaluation ktanaka@ecc.u-tokyo.ac.jp Making fast move generators with partial evaluation Tetsuro Tanaka ktanaka@ecc.u-tokyo.ac.jp Information Processing Center, University of Tokyo, Yayoi 2-11-16, Bunkyo, Tokyo,

More information

compile Target Interpreter t:target s:source Parsing Type Checking Stack Manipulation Code Generation Updating Store Optimization

compile Target Interpreter t:target s:source Parsing Type Checking Stack Manipulation Code Generation Updating Store Optimization Compilation as Metacomputation: Binding Time Separation in Modular Compilers (Extende d Abstract) William L. Harrison Samuel N. Kamin Department of Computer Science University of Illinois, Urbana-Champaign

More information

Towards a Methodology for Explicit Composition of MetaObjects

Towards a Methodology for Explicit Composition of MetaObjects See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/2610218 Towards a Methodology for Explicit Composition of MetaObjects Article December 1999

More information

Jarcler: Aspect-Oriented Middleware for Distributed Software in Java

Jarcler: Aspect-Oriented Middleware for Distributed Software in Java Jarcler: Aspect-Oriented Middleware for Distributed Software in Java Muga Nishizawa Shigeru Chiba Dept. of Mathematical and Computing Sciences Tokyo Institute of Technology Email: {muga,chiba@csg.is.titech.ac.jp

More information

Announcement. Agenda 7/31/2008. Polymorphism, Dynamic Binding and Interface. The class will continue on Tuesday, 12 th August

Announcement. Agenda 7/31/2008. Polymorphism, Dynamic Binding and Interface. The class will continue on Tuesday, 12 th August Polymorphism, Dynamic Binding and Interface 2 4 pm Thursday 7/31/2008 @JD2211 1 Announcement Next week is off The class will continue on Tuesday, 12 th August 2 Agenda Review Inheritance Abstract Array

More information

residual residual program final result

residual residual program final result C-Mix: Making Easily Maintainable C-Programs run FAST The C-Mix Group, DIKU, University of Copenhagen Abstract C-Mix is a tool based on state-of-the-art technology that solves the dilemma of whether to

More information

Teaching Encapsulation and Modularity in Object-Oriented Languages with Access Graphs

Teaching Encapsulation and Modularity in Object-Oriented Languages with Access Graphs Teaching Encapsulation and Modularity in Object-Oriented Languages with Access Graphs Gilles Ardourel, Marianne Huchard To cite this version: Gilles Ardourel, Marianne Huchard. Teaching Encapsulation and

More information

Programming Languages 2nd edition Tucker and Noonan"

Programming Languages 2nd edition Tucker and Noonan Programming Languages 2nd edition Tucker and Noonan" " Chapter 1" Overview" " A good programming language is a conceptual universe for thinking about programming. " " " " " " " " " " " " "A. Perlis" "

More information

Programming for Mobile Computing

Programming for Mobile Computing 1/57 Programming for Mobile Computing EECS 1022 moodle.yorku.ca Labs 2/57 For the things we have to learn before we can do them, we learn by doing them. Aristotle During the labs, carefully read the instructions,

More information

2 Egon Borger, Wolfram Schulte: Initialization Problems for Java 1 class A implements I{ } 2 3 interface I { static boolean dummy = Main.sideeffect =

2 Egon Borger, Wolfram Schulte: Initialization Problems for Java 1 class A implements I{ } 2 3 interface I { static boolean dummy = Main.sideeffect = Initialization Problems for Java? Egon Borger 1, Wolfram Schulte 2 1 Universita di Pisa, Dipartimento di Informatica, I-56125 Pisa, Italy, e-mail: boerger@di.unipi.it 2 Universitat Ulm, Fakultat fur Informatik,

More information

Type Feedback for Bytecode Interpreters

Type Feedback for Bytecode Interpreters Type Feedback for Bytecode Interpreters Michael Haupt, Robert Hirschfeld, Marcus Denker To cite this version: Michael Haupt, Robert Hirschfeld, Marcus Denker. Type Feedback for Bytecode Interpreters. ICOOOLPS

More information

RAMSES: a Reflective Middleware for Software Evolution

RAMSES: a Reflective Middleware for Software Evolution RAMSES: a Reflective Middleware for Software Evolution Walter Cazzola 1, Ahmed Ghoneim 2, and Gunter Saake 2 1 Department of Informatics and Communication, Università degli Studi di Milano, Italy cazzola@dico.unimi.it

More information

Lecture 9 : Basics of Reflection in Java

Lecture 9 : Basics of Reflection in Java Lecture 9 : Basics of Reflection in Java LSINF 2335 Programming Paradigms Prof. Kim Mens UCL / EPL / INGI (Slides partly based on the book Java Reflection in Action, on The Java Tutorials, and on slides

More information

Meta-Architectures. For Programming Languages. Guruduth Banavar and Gary Lindstrom. Department of Computer Science

Meta-Architectures. For Programming Languages. Guruduth Banavar and Gary Lindstrom. Department of Computer Science The Design of Object-Oriented Meta-Architectures For Programming Languages Guruduth Banavar and Gary Lindstrom Department of Computer Science University of Utah, Salt Lake City Abstract. This paper is

More information

THE IMPLEMENTATION OF A DISTRIBUTED FILE SYSTEM SUPPORTING THE PARALLEL WORLD MODEL. Jun Sun, Yasushi Shinjo and Kozo Itano

THE IMPLEMENTATION OF A DISTRIBUTED FILE SYSTEM SUPPORTING THE PARALLEL WORLD MODEL. Jun Sun, Yasushi Shinjo and Kozo Itano THE IMPLEMENTATION OF A DISTRIBUTED FILE SYSTEM SUPPORTING THE PARALLEL WORLD MODEL Jun Sun, Yasushi Shinjo and Kozo Itano Institute of Information Sciences and Electronics University of Tsukuba Tsukuba,

More information

Experimental Evaluation of Fault-Tolerant Mechanisms for Object-Oriented Software

Experimental Evaluation of Fault-Tolerant Mechanisms for Object-Oriented Software Experimental Evaluation of Fault-Tolerant Mechanisms for Object-Oriented Software Avelino Zorzo, Jie Xu, and Brian Randell * Department of Computing Science, University of Newcastle upon Tyne, NE1 7RU,UK

More information

callee s frame... arg k caller s frame

callee s frame... arg k caller s frame An Ecient Implementation of Multiple Return Values in Scheme J. Michael Ashley R. Kent Dybvig Indiana University Computer Science Department Lindley Hall 215 Bloomington, Indiana 47405 fjashley,dybg@cs.indiana.edu

More information

Late-bound Pragmatical Class Methods

Late-bound Pragmatical Class Methods Late-bound Pragmatical Class Methods AXEL SCHMOLITZKY, MARK EVERED, J. LESLIE KEEDY, GISELA MENGER Department of Computer Structures University of Ulm 89069 Ulm, Germany {axel, markev, keedy, gisela@informatik.uni-ulm.de

More information

compute event display

compute event display Programming Connectors In an Open Language Uwe Amann, Andreas Ludwig, Daniel Pfeifer Institut fur Programmstrukturen und Datenorganisation Universitat Karlsruhe Postfach 6980, Zirkel 2, 76128 Karlsruhe,

More information

Compilation Semantics of Aspect-Oriented Programs

Compilation Semantics of Aspect-Oriented Programs Compilation Semantics of Aspect-Oriented Programs Hidehiko Masuhara Graduate School of Arts and Sciences University of Tokyo masuhara@acm.org Gregor Kiczales Department of Computer Science University of

More information

Design of it : an Aldor library to express parallel programs Extended Abstract Niklaus Mannhart Institute for Scientic Computing ETH-Zentrum CH-8092 Z

Design of it : an Aldor library to express parallel programs Extended Abstract Niklaus Mannhart Institute for Scientic Computing ETH-Zentrum CH-8092 Z Design of it : an Aldor library to express parallel programs Extended Abstract Niklaus Mannhart Institute for Scientic Computing ETH-Zentrum CH-8092 Zurich, Switzerland e-mail: mannhart@inf.ethz.ch url:

More information

Global Scheduler. Global Issue. Global Retire

Global Scheduler. Global Issue. Global Retire The Delft-Java Engine: An Introduction C. John Glossner 1;2 and Stamatis Vassiliadis 2 1 Lucent / Bell Labs, Allentown, Pa. 2 Delft University oftechnology, Department of Electrical Engineering Delft,

More information

Principles of Programming Languages, 2

Principles of Programming Languages, 2 Principles of Programming Languages, 2 Matteo Pradella February 2015 Matteo Pradella Principles of Programming Languages, 2 February 2015 1 / 23 1 Object Oriented Programming (OO) Matteo Pradella Principles

More information

Improving the Static Analysis of Loops by Dynamic Partitioning Techniques

Improving the Static Analysis of Loops by Dynamic Partitioning Techniques Improving the Static Analysis of Loops by Dynamic Partitioning echniques Matthieu Martel CEA - Recherche echnologique LIS-DSI-SLA CEA F91191 Gif-Sur-Yvette Cedex, France Matthieu.Martel@cea.fr Abstract

More information

On Object Orientation as a Paradigm for General Purpose. Distributed Operating Systems

On Object Orientation as a Paradigm for General Purpose. Distributed Operating Systems On Object Orientation as a Paradigm for General Purpose Distributed Operating Systems Vinny Cahill, Sean Baker, Brendan Tangney, Chris Horn and Neville Harris Distributed Systems Group, Dept. of Computer

More information

Advanced Slicing of Sequential and Concurrent Programs

Advanced Slicing of Sequential and Concurrent Programs Advanced Slicing of Sequential and Concurrent Programs Jens Krinke FernUniversität in Hagen, Germany JensKrinke@FernUni-Hagende Abstract Program slicing is a technique to identify statements that may influence

More information

type conversion polymorphism (intro only) Class class

type conversion polymorphism (intro only) Class class COMP 250 Lecture 33 type conversion polymorphism (intro only) Class class Nov. 24, 2017 1 Primitive Type Conversion double float long int short char byte boolean non-integers integers In COMP 273, you

More information

proc {Produce State Out} local State2 Out2 in State2 = State + 1 Out = State Out2 {Produce State2 Out2}

proc {Produce State Out} local State2 Out2 in State2 = State + 1 Out = State Out2 {Produce State2 Out2} Laziness and Declarative Concurrency Raphael Collet Universite Catholique de Louvain, B-1348 Louvain-la-Neuve, Belgium raph@info.ucl.ac.be May 7, 2004 Abstract Concurrency and distribution in a programming

More information

A Boolean Expression. Reachability Analysis or Bisimulation. Equation Solver. Boolean. equations.

A Boolean Expression. Reachability Analysis or Bisimulation. Equation Solver. Boolean. equations. A Framework for Embedded Real-time System Design? Jin-Young Choi 1, Hee-Hwan Kwak 2, and Insup Lee 2 1 Department of Computer Science and Engineering, Korea Univerity choi@formal.korea.ac.kr 2 Department

More information

Reflection (in Java)

Reflection (in Java) CSC7336 : Advanced Software Engineering... J Paul Gibson, D311 paul.gibson@telecom-sudparis.eu http://www-public.telecom-sudparis.eu/~gibson/teaching/csc7336/ Reflection (in Java).../~gibson/Teaching/CSC7336/L4-Reflection.pdf

More information

information is saved on a history stack, and Reverse, which runs back through a previous conservative execution and undoes its eect. We extend Forth's

information is saved on a history stack, and Reverse, which runs back through a previous conservative execution and undoes its eect. We extend Forth's A Virtual Machine Architecture for Constraint Based Programming Bill Stoddart October 25, 2000 Abstract We present a Forth style virtual machine architecture designed to provide for constriant based programming.

More information

Evaluation of Object-Oriented Reflective Models

Evaluation of Object-Oriented Reflective Models Evaluation of -Oriented Reflective Models Walter Cazzola DSI-University of Milano, Via Comelico 39-41, 20135 Milano, Italy Phone:(+39) 10 353 6709 Fax:(+39) 10 353 6699 E-mail:cazzola@dsi.unimi.it Abstract

More information

Generic Function Parameter and Method Parameter Metaobjects: A Proposed Enhancement to the CLOS Metaobject Protocol. Eric L.

Generic Function Parameter and Method Parameter Metaobjects: A Proposed Enhancement to the CLOS Metaobject Protocol. Eric L. Generic Function Parameter and Method Parameter Metaobjects: A Proposed Enhancement to the CLOS Metaobject Protocol Eric L. Peterson Articial Intelligence Technologies Center MITRE Corporation 1820 Dolley

More information

Martin P. Robillard and Gail C. Murphy. University of British Columbia. November, 1999

Martin P. Robillard and Gail C. Murphy. University of British Columbia. November, 1999 Migrating a Static Analysis Tool to AspectJ TM Martin P. Robillard and Gail C. Murphy Department of Computer Science University of British Columbia 201-2366 Main Mall Vancouver BC Canada V6T 1Z4 fmrobilla,murphyg@cs.ubc.ca

More information

COMP 250. Lecture 32. polymorphism. Nov. 25, 2016

COMP 250. Lecture 32. polymorphism. Nov. 25, 2016 COMP 250 Lecture 32 polymorphism Nov. 25, 2016 1 Recall example from lecture 30 class String serialnumber Person owner void bark() {print woof } : my = new (); my.bark();?????? extends extends class void

More information

Programming with Patterns. ACM SIGPLAN Developer Tracks on Functional Programming (DEFUN 2009)

Programming with Patterns. ACM SIGPLAN Developer Tracks on Functional Programming (DEFUN 2009) Programming with Patterns ACM SIGPLAN Developer Tracks on Functional Programming (DEFUN 2009) Barry Jay Centre for Quantum Computing and Intelligent Systems University of Technology, Sydney 1:30-5:00pm,

More information

New Programming Paradigms

New Programming Paradigms New Programming Paradigms Lecturer: Pánovics János (google the name for further details) Requirements: For signature: classroom work and a 15-minute presentation Exam: written exam (mainly concepts and

More information

A Thought on Specification Reflection

A Thought on Specification Reflection A Thought on Specification Reflection Yoonsik Cheon, Yoshiki Hayashi Department of Computer Science, University of Texas at El Paso El Paso, Texas 79912 USA cheon@cs.utep.edu Gary T. Leavens Department

More information

when a process of the form if be then p else q is executed and also when an output action is performed. 1. Unnecessary substitution: Let p = c!25 c?x:

when a process of the form if be then p else q is executed and also when an output action is performed. 1. Unnecessary substitution: Let p = c!25 c?x: URL: http://www.elsevier.nl/locate/entcs/volume27.html 7 pages Towards Veried Lazy Implementation of Concurrent Value-Passing Languages (Abstract) Anna Ingolfsdottir (annai@cs.auc.dk) BRICS, Dept. of Computer

More information

SmartMethod: an Efficient Replacement for Method

SmartMethod: an Efficient Replacement for Method SmartMethod: an Efficient Replacement for Method Walter Cazzola DICo - Department of Informatics and Communication, Università degli Studi di Milano cazzola@dico.unimi.it ABSTRACT In the last few years

More information

A Type Graph Model for Java Programs

A Type Graph Model for Java Programs A Type Graph Model for Java Programs Arend Rensink and Eduardo Zambon Formal Methods and Tools Group, EWI-INF, University of Twente PO Box 217, 7500 AE, Enschede, The Netherlands {rensink,zambon}@cs.utwente.nl

More information

An Object Model for Multiparadigm

An Object Model for Multiparadigm 1 of 7 03/02/2007 15:37 http://www.dmst.aueb.gr/dds/pubs/conf/1994-oopsla-multipar/html/mlom.html This is an HTML rendering of a working paper draft that led to a publication. The publication should always

More information

Josh. Java. AspectJ weave. 2 AspectJ. Josh Javassist[1] Javassist Java. AspectJ[3, 4] Java. AspectJ. weave. weave. weave. weave. weaver 1.

Josh. Java. AspectJ weave. 2 AspectJ. Josh Javassist[1] Javassist Java. AspectJ[3, 4] Java. AspectJ. weave. weave. weave. weave. weaver 1. Josh Java Aspect Weaver weaver 1 AspectJ Java AspectJ Java weave AspectJ weave Josh weave Javassist weave 1 weaver 1 AspectJ[3, 4] 1 Java AspectJ Java weave Java AspectJ weave Josh Josh Java weave weave

More information