F-bounded polymorphism for object-oriented programming
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
An interpretation of typed OOP in a language
Lisp and Symbolic Computation - Special issue on state in programming languages (part I)
Theory and Practice of Object Systems - Special issue: type systems
Vortex: an optimizing compiler for object-oriented languages
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
An interpretation of objects and object types
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Objective ML: a simple object-oriented extension of ML
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Pizza into Java: translating theory into practice
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The SLam calculus: programming with secrecy and integrity
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Security properties of typed applets
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
On the relationship between classes, objects, and data abstraction
Theory and Practice of Object Systems - Third workshop on foundations of object-oriented languages (FOOL 3)
Compiling standard ML to Java bytecodes
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Typed cross-module compilation
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Implementing typed intermediate languages
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
The design of a class mechanism for Moby
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Type dispatch for named hierarchical types
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Information and Computation
Java Virtual Machine Specification
Java Virtual Machine Specification
Towards a theory of type structure
Programming Symposium, Proceedings Colloque sur la Programmation
Compiling Java to a Typed Lambda-Calculus: A Preliminary Report
TIC '98 Proceedings of the Second International Workshop on Types in Compilation
Type systems for object-oriented programming languages
Type systems for object-oriented programming languages
Journal of Functional Programming
Typed common intermediate format
DSL'97 Proceedings of the Conference on Domain-Specific Languages on Conference on Domain-Specific Languages (DSL), 1997
Toba: java for applications a way ahead of time (WAT) compiler
COOTS'97 Proceedings of the 3rd conference on USENIX Conference on Object-Oriented Technologies (COOTS) - Volume 3
Type elaboration and subtype completion for Java bytecode
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A semantic model of types and machine instructions for proof-carrying code
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type system for expressive security policies
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Fully reflexive intensional type analysis
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
An efficient class and object encoding
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Type elaboration and subtype completion for Java bytecode
ACM Transactions on Programming Languages and Systems (TOPLAS)
Type-based hot swapping of running modules (extended abstract)
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Type-preserving compilation of Featherweight Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Intensional analysis of quantified types
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Calculus for Compiling and Linking Classes
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
An Abstract Model of Java Dynamic Linking and Loading
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
Numbering matters: first-order canonical forms for second-order recursive types
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
Extensible objects without labels
ACM Transactions on Programming Languages and Systems (TOPLAS)
Enabling constant-time interface method dispatch in embedded Java processors
JTRES '07 Proceedings of the 5th international workshop on Java technologies for real-time and embedded systems
Precision in practice: a type-preserving java compiler
CC'03 Proceedings of the 12th international conference on Compiler construction
Type-safe optimisation of plugin architectures
SAS'05 Proceedings of the 12th international conference on Static Analysis
Hi-index | 0.00 |
We propose a conservative extension of the polymorphic lambda calculus (Fω) as an intermediate language for compiling languages with name-based class and interface hierarchies. Our extension enriches standard Fω with recursive types, existential types, and row polymorphism, but only ordered records with no subtyping. Basing our language on Fω makes it also a suitable target for translation from other higher-order languages; this enables the safe interoperation between class-based and higher-order languages and the reuse of common type-directed optimization techniques, compiler back ends, and runtime support.We present the formal semantics of our intermediate language and illustrate its features by providing a formal translation from a subset of Java, including classes, interfaces, and private instance variables. The translation preserves the name-based hierarchical relation between Java classes and interfaces, and allows access to private instance variables of parameters of the same class as the one defining the method. It also exposes the details of method invocation and instance variable access and allows many standard optimizations to be performed on the object-oriented code.