000208797 001__ 208797
000208797 005__ 20190317000203.0
000208797 037__ $$aCONF
000208797 245__ $$aImproving the Interoperation between Generics Translations
000208797 269__ $$a2015
000208797 260__ $$bACM$$c2015
000208797 300__ $$a12
000208797 336__ $$aConference Papers
000208797 500__ $$aPublished at PPPJ 2015: http://pppj2015.cs.fit.edu/schedule
000208797 520__ $$aGenerics on the Java platform are compiled using the erasure transformation, which only supports by-reference values. This causes slowdowns when generics operate on primitive types, such as integers, as they have to be transformed into reference-based objects. Project Valhalla is an effort to remedy this problem by specializing classes at load-time so they can efficiently handle primitive values. In its current early prototype, the Valhalla compilation scheme limits the interaction between specialized and erased generics, thus preventing certain useful code patterns from being expressed. Scala has been using compile-time specialization for 6 years and has three generics compilation schemes working side by side. In Scala, programmers are allowed to write code that freely exercises the interaction between the different compilation schemes, at the expense of introducing subtle performance issues. Similar performance issues can affect Valhalla-enabled bytecode, whether the code was written in Java or translated from other JVM languages. In this context we explain how we help programmers avoid these performance regressions in the miniboxing transformation: (1) by issuing actionable performance advisories that steer programmers away from performance regressions and (2) by providing alternatives to the standard library constructs that use the miniboxing encoding, thus avoiding the conversion overhead.
000208797 6531_ $$agenerics
000208797 6531_ $$aspecialization
000208797 6531_ $$aminiboxing
000208797 6531_ $$abackward compatibility
000208797 6531_ $$adata representation
000208797 6531_ $$aperformance
000208797 6531_ $$aJava
000208797 6531_ $$abytecode
000208797 6531_ $$aJVM
000208797 700__ $$0245399$$g200717$$aUreche, Vlad
000208797 700__ $$aStojanovic, Milos
000208797 700__ $$aBeguet, Romain Michel
000208797 700__ $$0249091$$g226421$$aStucki, Nicolas Alexander
000208797 700__ $$0241835$$g126003$$aOdersky, Martin
000208797 7112_ $$dSeptember 9-11, 2015$$cMelbourne, Florida, USA$$aPrinciples and Practices of Programming on the Java platform (PPPJ)
000208797 8564_ $$uhttps://infoscience.epfl.ch/record/208797/files/main_2.pdf$$zPublisher's version$$s347221$$yPublisher's version
000208797 8564_ $$uhttps://infoscience.epfl.ch/record/208797/files/mbox2-transp-good.png$$zn/a$$s437108$$yn/a
000208797 909C0 $$xU10409$$0252187$$pLAMP
000208797 909CO $$ooai:infoscience.tind.io:208797$$qGLOBAL_SET$$pconf$$pIC
000208797 917Z8 $$x200717
000208797 917Z8 $$x200717
000208797 917Z8 $$x200717
000208797 917Z8 $$x200717
000208797 917Z8 $$x200717
000208797 917Z8 $$x200717
000208797 937__ $$aEPFL-CONF-208797
000208797 973__ $$aEPFL
000208797 980__ $$aCONF