000200963 001__ 200963
000200963 005__ 20190316235959.0
000200963 022__ $$a0397-416
000200963 02470 $$2ISI$$a000348907400023
000200963 0247_ $$2doi$$a10.1145/2660193.2660197
000200963 037__ $$aCONF
000200963 245__ $$aLate Data Layout: Unifying Data Representation Transformations
000200963 269__ $$a2014
000200963 260__ $$bACM$$c2014$$aNew York, NY, United States
000200963 336__ $$aConference Papers
000200963 520__ $$aValues need to be represented differently when interacting with certain language features. For example, an integer has to take an object-based representation when interacting with erased generics, although, for performance reasons, the stack-based value representation is better. To abstract over these implementation details, some programming languages choose to expose a unified high-level concept (the integer) and let the compiler choose its exact representation and insert coercions where necessary. This pattern appears in multiple language features such as value classes, specialization and multi-stage programming: they all expose a unified concept which they later refine into multiple representations. Yet, the underlying compiler implementations typically entangle the core mechanism with assumptions about the alternative representations and their interaction with other language features. In this paper we present the Late Data Layout mechanism, a simple but versatile type-driven generalization that subsumes and improves the state-of-the-art representation transformations. In doing so, we make two key observations: (1) annotated types conveniently capture the semantics of using multiple representations and (2) local type inference can be used to consistently and optimally introduce coercions. We validated our approach by implementing three language features as Scala compiler extensions: value classes, specialization (using the miniboxing representation) and a simplified multi-stage programming mechanism.
000200963 6531_ $$aData Representation
000200963 6531_ $$aObject-oriented
000200963 6531_ $$aAnnotated Types
000200963 6531_ $$aType Systems
000200963 6531_ $$aLocal Type Inference
000200963 700__ $$0245399$$g200717$$aUreche, Vlad
000200963 700__ $$0246182$$g214505$$aBurmako, Eugene
000200963 700__ $$0241835$$g126003$$aOdersky, Martin
000200963 7112_ $$dOctober 19-21 2014$$cPortland, OR, USA$$aObject Oriented Programming Systems Languages and Applications (OOPSLA)
000200963 773__ $$j49$$k10$$q397-416$$tProceedings of the 2014 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages and Applications
000200963 8564_ $$uhttp://www.scala-ldl.org/$$zURL
000200963 8564_ $$uhttps://infoscience.epfl.ch/record/200963/files/ldl-logo.png$$zn/a$$s72651$$yn/a
000200963 8564_ $$uhttps://infoscience.epfl.ch/record/200963/files/ldl-oopsla14_1.pdf$$zPublisher's version$$s354337$$yPublisher's version
000200963 909C0 $$xU10409$$0252187$$pLAMP
000200963 909CO $$qGLOBAL_SET$$pconf$$ooai:infoscience.tind.io:200963$$pIC
000200963 917Z8 $$x200717
000200963 917Z8 $$x200717
000200963 917Z8 $$x200717
000200963 937__ $$aEPFL-CONF-200963
000200963 973__ $$rREVIEWED$$sPUBLISHED$$aEPFL
000200963 980__ $$aCONF