Type evolution in an object-oriented database
Research directions in object-oriented programming
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
Dynamic typing in a statically typed language
ACM Transactions on Programming Languages and Systems (TOPLAS)
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Organizing programs without classes
Lisp and Symbolic Computation
The design and implementation of the self compiler, an optimizing compiler for object-oriented programming languages
Strongtalk: typechecking Smalltalk in a production environment
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
CLOS in context: the shape of the design space
Object-oriented programming
Compiling polymorphism using intensional type analysis
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Delegation versus concatenation or cloning is inheritance too
ACM SIGPLAN OOPS Messenger
Lua—an extensible extension language
Software—Practice & Experience
Smalltalk: best practice patterns
Smalltalk: best practice patterns
Classes versus prototypes in object-oriented languages
ACM '86 Proceedings of 1986 ACM Fall joint computer conference
Abstract machines for programming language implementation
Future Generation Computer Systems
Dhrystone: a synthetic systems programming benchmark
Communications of the ACM
Types and programming languages
Types and programming languages
A Theory of Objects
The Art of the Metaobject Protocol
The Art of the Metaobject Protocol
Shared Source Cli Essentials
Fickle: Dynamic Object Re-classification
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Definition of a Reflective Kernel for a Prototype-Based Language
Proceedings of the First JSSST International Symposium on Object Technologies for Advanced Software
AspectS - Aspect-Oriented Programming with Squeak
NODe '02 Revised Papers from the International Conference NetObjectDays on Objects, Components, Architectures, Services, and Applications for a Networked World
Efficient implementation of the smalltalk-80 system
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
MetaJava: an efficient run-time meta architecture for Java/sup TM/
IWOOOS '96 Proceedings of the 5th International Workshop on Object Orientation in Operating Systems (IWOOOS '96)
Adaptive Optimization for SELF: Reconciling High Performance with Exploratory Programming
Adaptive Optimization for SELF: Reconciling High Performance with Exploratory Programming
Partial behavioral reflection: spatial and temporal selection of reification
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
JVM versus CLR: a comparative study
PPPJ '03 Proceedings of the 2nd international conference on Principles and practice of programming in Java
Implementing the essence of reflection: a reflective run-time environment
Proceedings of the 2004 ACM symposium on Applied computing
A safe approximate algorithm for interprocedural pointer aliasing
ACM SIGPLAN Notices - Best of PLDI 1979-1999
Dynamic adaptation of application aspects
Journal of Systems and Software - Special issue: Computer systems
Representation-based just-in-time specialization and the psyco prototype for python
Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Ajax in Action
Traits: A mechanism for fine-grained reuse
ACM Transactions on Programming Languages and Systems (TOPLAS)
Agile Web Development with Rails
Agile Web Development with Rails
Visual Zero: A persistent and interactive object-oriented programming environment
Journal of Visual Languages and Computing
Zope 3 developer's handbook
ECOOP '07 Proceedings of the 21st European conference on ECOOP 2007: Object-Oriented Programming
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
On the revival of dynamic languages
SC'05 Proceedings of the 4th international conference on Software Composition
Union and intersection types to support both dynamic and static typing
Information Processing Letters
Separating different responsibilities into parallel hierarchies
Proceedings of The Fourth International C* Conference on Computer Science and Software Engineering
Efficient support of dynamic inheritance for class- and prototype-based languages
Journal of Systems and Software
A performance cost evaluation of aspect weaving
ACSC '13 Proceedings of the Thirty-Sixth Australasian Computer Science Conference - Volume 135
A hybrid class- and prototype-based object model to support language-neutral structural intercession
Information and Software Technology
Using standards to build the DIMAG connected mobile applications framework
Computer Standards & Interfaces
Hi-index | 0.00 |
Increasing trends towards adaptive, distributed, generative and pervasive software have made object-oriented dynamically typed languages become increasingly popular. These languages offer dynamic software evolution by means of reflection, facilitating the development of dynamic systems. Unfortunately, this dynamism commonly imposes a runtime performance penalty. In this paper, we describe how to extend a production JIT-compiler virtual machine to support runtime object-oriented structural reflection offered by many dynamic languages. Our approach improves runtime performance of dynamic languages running on statically typed virtual machines. At the same time, existing statically typed languages are still supported by the virtual machine. We have extended the .Net platform with runtime structural reflection adding prototype-based object-oriented semantics to the statically typed class-based model of .Net, supporting both kinds of programming languages. The assessment of runtime performance and memory consumption has revealed that a direct support of structural reflection in a production JIT-based virtual machine designed for statically typed languages provides a significant performance improvement for dynamically typed languages.