Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Using prototypical objects to implement shared behavior in object-oriented systems
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Semantics and implementation of schema evolution in object-oriented databases
SIGMOD '87 Proceedings of the 1987 ACM SIGMOD international conference on Management of data
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
Parents are shared parts of objects: inheritance and encapsulation in SELF
Lisp and Symbolic Computation
The design and implementation of the self compiler, an optimizing compiler for object-oriented programming languages
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Delegation versus concatenation or cloning is inheritance too
ACM SIGPLAN OOPS Messenger
Type inference of SELF: analysis of objects with dynamic and multiple inheritance
Software—Practice & Experience
Lua—an extensible extension language
Software—Practice & Experience
ACM Computing Surveys (CSUR)
The pragmatic programmer: from journeyman to master
The pragmatic programmer: from journeyman to master
Classes versus prototypes in object-oriented languages
ACM '86 Proceedings of 1986 ACM Fall joint computer conference
Types and programming languages
Types and programming languages
A Theory of Objects
Shared Source Cli Essentials
The Common Lisp Object System: An Overview
ECOOP '87 Proceedings of the European Conference on Object-Oriented Programming
Object-Oriented Multi-Methods in Cecil
ECOOP '92 Proceedings of the European Conference on Object-Oriented Programming
ECOOP '93 Proceedings of the 7th European Conference on Object-Oriented Programming
Fickle: Dynamic Object Re-classification
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
Proceedings of the Workshop on Object-Oriented Technology
Dynamic adaptation of application aspects
Journal of Systems and Software - Special issue: Computer systems
Ajax in Action
A provenly correct translation of Fickle into Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Statistically rigorous java performance evaluation
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Visual Zero: A persistent and interactive object-oriented programming environment
Journal of Visual Languages and Computing
Efficient virtual machine support of runtime structural reflection
Science of Computer Programming
Dynamic code evolution for Java
Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Union and intersection types to support both dynamic and static typing
Information Processing Letters
The Python Language Reference Manual
The Python Language Reference Manual
Type Inference to Optimize a Hybrid Statically and Dynamically Typed Language
The Computer Journal
A hybrid class- and prototype-based object model to support language-neutral structural intercession
Information and Software Technology
Hi-index | 0.00 |
Dynamically typed languages are becoming increasingly popular for different software development scenarios where runtime adaptability is important. Therefore, existing class-based platforms such as Java and .Net have been gradually incorporating dynamic features to support the execution of these languages. The implementations of dynamic languages on these platforms commonly generate an extra layer of software over the virtual machine, which reproduces the reflective prototype-based object model provided by most dynamic languages. Simulating this model frequently involves a runtime performance penalty, and makes the interoperation between class- and prototype-based languages difficult. Instead of simulating the reflective model of dynamic languages, our approach has been to extend the object-model of an efficient class-based virtual machine with prototype-based semantics, so that it can directly support both kinds of languages. Consequently, we obtain the runtime performance improvement of using the virtual machine JIT compiler, while a direct interoperation between languages compiled to our platform is also possible. In this paper, we formalize dynamic inheritance for both class- and prototype-based languages, and implement it as an extension of an efficient virtual machine that performs JIT compilation. We also present an extensive evaluation of the runtime performance and memory consumption of the programming language implementations that provide dynamic inheritance, including ours.