000188060 001__ 188060
000188060 005__ 20190316235701.0
000188060 0247_ $$2doi$$a10.1145/2509136.2509537
000188060 02470 $$2ISI$$a000327697300004
000188060 037__ $$aCONF
000188060 245__ $$aMiniboxing: Improving the Speed to Code Size Tradeoff in Parametric Polymorphism Translations
000188060 269__ $$a2013
000188060 260__ $$c2013
000188060 336__ $$aConference Papers
000188060 520__ $$aParametric polymorphism enables code reuse and type safety. Underneath the uniform interface exposed to programmers, however, its low level implementation has to cope with inherently non-uniform data: value types of different sizes and semantics (bytes, integers, floating point numbers) and reference types (pointers to heap objects). On the Java Virtual Machine, parametric polymorphism is currently translated to bytecode using two competing approaches: homogeneous and heterogeneous. Homogeneous translation requires boxing, and thus introduces indirect access delays. Heterogeneous translation duplicates and adapts code for each value type individually, producing more bytecode. Therefore bytecode speed and size are at odds with each other. This paper proposes a novel translation that significantly reduces the bytecode size without affecting the execution speed. The key insight is that larger value types (such as integers) can hold smaller ones (such as bytes) thus reducing the duplication necessary in heterogeneous translations. In our implementation, on the Scala compiler, we encode all primitive value types in long integers. The resulting bytecode approaches the performance of monomorphic code, matches the performance of the heterogeneous translation and obtains speedups of up to 22x over the homogeneous translation, all with modest increases in size.
000188060 6531_ $$aMiniboxing
000188060 6531_ $$aSpecialization
000188060 6531_ $$aData Representation
000188060 6531_ $$aParametric Polymorphism
000188060 6531_ $$aErasure
000188060 6531_ $$aScala
000188060 6531_ $$aJava Virtual Machine
000188060 6531_ $$aBytecode
000188060 6531_ $$aGenerics
000188060 700__ $$0245399$$aUreche, Vlad$$g200717
000188060 700__ $$aTalau, Cristian
000188060 700__ $$0241835$$aOdersky, Martin$$g126003
000188060 7112_ $$aACM SIGPLAN 2013 Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'13)$$cIndianapolis, Indiana, USA$$dOctober 26-31, 2013
000188060 773__ $$tProceedings of the ACM SIGPLAN 2013 Conference on Object Oriented Programming, Systems, Languages and Applications (OOPSLA'13)
000188060 8564_ $$uhttps://github.com/miniboxing/miniboxing-plugin$$zURL
000188060 8564_ $$s528368$$uhttps://infoscience.epfl.ch/record/188060/files/mbox2-trans-big.png$$yn/a$$zn/a
000188060 8564_ $$s1829538$$uhttps://infoscience.epfl.ch/record/188060/files/miniboxing-oopsla13.pdf$$yPublisher's version$$zPublisher's version
000188060 909C0 $$0252187$$pLAMP$$xU10409
000188060 909CO $$ooai:infoscience.tind.io:188060$$pconf$$pIC$$qGLOBAL_SET
000188060 917Z8 $$x200717
000188060 917Z8 $$x200717
000188060 917Z8 $$x200717
000188060 917Z8 $$x200717
000188060 917Z8 $$x200717
000188060 917Z8 $$x200717
000188060 917Z8 $$x200717
000188060 917Z8 $$x200717
000188060 917Z8 $$x200717
000188060 937__ $$aEPFL-CONF-188060
000188060 973__ $$aEPFL$$rREVIEWED$$sPUBLISHED
000188060 980__ $$aCONF