Adding Structural Reflection to the SSCLI

Although dynamic languages are becoming widely used due to the flexibility needs of specific software products, their major drawback is their runtime performance. Compiling the source program to an abstract machine’s intermediate language is the current technique used to obtain the best performance results. This intermediate code is then executed by a virtual machine developed as an interpreter. Although JIT adaptive optimizing compilation is currently used to speed up Java and .net intermediate code execution, this practice has not been employed successfully in the implementation of dynamically adaptive platforms yet. We present an approach to improve the runtime performance of a specific set of structural reflective primitives, extensively used in adaptive software development. Looking for a better performance, as well as interaction with other languages, we have employed the Microsoft Shared Source CLI platform, making use of its JIT compiler. The SSCLI computational model has been enhanced with semantics of the prototype-based object-oriented computational model. This model is much more suitable for reflective environments. The initial assessment of performance results reveals that augmenting the semantics of the SSCLI model, together with JIT generation of native code, produces better runtime performance than the existing implementations.

[1]  Alan Borning,et al.  Classes versus Prototypes in Object-Oriented Languages , 1986, FJCC.

[2]  P. J. Landin The Mechanical Evaluation of Expressions , 1964, Comput. J..

[3]  Vaidy S. Sunderam,et al.  PVM: A Framework for Parallel Distributed Computing , 1990, Concurr. Pract. Exp..

[4]  Pieter H. Hartel,et al.  Abstract machines for programming language implementation , 2000, Future Gener. Comput. Syst..

[5]  Urs Hölzle,et al.  A third-generation SELF implementation: reconciling responsiveness with performance , 1994, OOPSLA 1994.

[6]  Craig Chambers,et al.  Organizing programs without classes , 1991, LISP Symb. Comput..

[7]  Denis Caromel,et al.  Partial behavioral reflection: spatial and temporal selection of reification , 2003, OOPSLA '03.

[8]  John F. Roddick,et al.  A survey of schema versioning issues for database systems , 1995, Inf. Softw. Technol..

[9]  Konrad Hinsen,et al.  High-Level Parallel Software Development with Python and BSP , 2003, Parallel Process. Lett..

[10]  Takuya Katayama,et al.  Meta Operations for Type Management in Object-Oriented Databases , 1989, DOOD.

[11]  Pattie Maes,et al.  Computational reflection , 1987, The Knowledge Engineering Review.

[12]  Stanley B. Zdonik,et al.  Type Evolution in an Object-Oriented Database , 1987, Research Foundations in Object-Oriented and Semantic Database Systems.

[13]  Pierre Cointe,et al.  Definition of a Reflective Kernel for a Prototype-Based Language , 1993, ISOTAS.

[14]  Fred L. Drake,et al.  The Python Language Reference Manual , 1999 .

[15]  David Stutz,et al.  Shared source CLI essentials , 2003 .

[16]  Andrew Shalit,et al.  The Dylan Reference Manual , 1996 .

[17]  Martin D. Westhead,et al.  A benchmark suite for high performance Java , 2000, Concurr. Pract. Exp..

[18]  Michael Golm,et al.  MetaJava - A Platform for Adaptable Operating-System Mechanisms , 1997, ECOOP Workshops.

[19]  Randall B. Smith,et al.  Self: The power of simplicity , 1987, OOPSLA 1987.

[20]  Lorna Smith,et al.  A benchmark suite for high performance Java , 2000 .

[21]  Francisco Ortin,et al.  Designing an adaptable heterogeneous abstract machine by means of reflection , 2005, Inf. Softw. Technol..

[22]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[23]  Jack Trout,et al.  The Power Of Simplicity , 1998 .

[24]  Urs Hölzle,et al.  A third-generation SELF implementation: reconciling responsiveness with performance , 1994, OOPSLA '94.

[25]  Stéphane Ducasse,et al.  2nd Workshop on Object-Oriented Language Engineering for the Post-Java Era: Back to Dynamicity , 2004, ECOOP Workshops.

[26]  C. H. Moore,et al.  FORTH: a new Way to Program a Mini Computer , 1974 .

[27]  Ole Agesen,et al.  Towards a Universal Implementation Substrate for Object-Oriented Languages , 1996 .

[28]  Juan Manuel Cueva Lovelle,et al.  Dynamic adaptation of application aspects , 2004, J. Syst. Softw..

[29]  Jr. T. B. Steel,et al.  A first version of UNCOL , 1899, IRE-AIEE-ACM '61 (Western).

[30]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.