{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,5]],"date-time":"2026-02-05T08:56:09Z","timestamp":1770281769622,"version":"3.49.0"},"reference-count":58,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2018,10,24]],"date-time":"2018-10-24T00:00:00Z","timestamp":1540339200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["1318808,1552944,1717022"],"award-info":[{"award-number":["1318808,1552944,1717022"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100000185","name":"Defense Advanced Research Projects Agency","doi-asserted-by":"publisher","award":["FA8750-16-2-0042"],"award-info":[{"award-number":["FA8750-16-2-0042"]}],"id":[{"id":"10.13039\/100000185","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2018,10,24]]},"abstract":"<jats:p>Variational execution is a novel dynamic analysis technique for exploring highly configurable systems and accurately tracking information flow. It is able to efficiently analyze many configurations by aggressively sharing redundancies of program executions. The idea of variational execution has been demonstrated to be effective in exploring variations in the program, especially when the configuration space grows out of control. Existing implementations of variational execution often require heavy lifting of the runtime interpreter, which is painstaking and error-prone. Furthermore, the performance of this approach is suboptimal. For example, the state-of-the-art variational execution interpreter for Java, VarexJ, slows down executions by 100 to 800 times over a single execution for small to medium size Java programs. Instead of modifying existing JVMs, we propose to transform existing bytecode to make it variational, so it can be executed on an unmodified commodity JVM. Our evaluation shows a dramatic improvement on performance over the state-of-the-art, with a speedup of 2 to 46 times, and high efficiency in sharing computations.<\/jats:p>","DOI":"10.1145\/3276487","type":"journal-article","created":{"date-parts":[[2018,10,24]],"date-time":"2018-10-24T11:57:18Z","timestamp":1540382238000},"page":"1-30","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":24,"title":["Faster variational execution with transparent bytecode transformation"],"prefix":"10.1145","volume":"2","author":[{"given":"Chu-Pan","family":"Wong","sequence":"first","affiliation":[{"name":"Carnegie Mellon University, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Jens","family":"Meinicke","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University, USA \/ University of Magdeburg, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Lukas","family":"Lazarek","sequence":"additional","affiliation":[{"name":"Northwestern University, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Christian","family":"K\u00e4stner","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2018,10,24]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/2103656.2103677"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/2465106.2465121"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/3182657"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-30793-5_12"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/2660193.2660212"},{"key":"e_1_2_1_6_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Schloss Dagstuhl\u2013Leibniz-Zentrum fuer Informatik, 17:1\u201317:31","author":"Bell Jonathan","year":"2018","unstructured":"Jonathan Bell and Lu\u00eds Pina . 2018 . CROCHET: Checkpoint and Rollback via Lightweight Heap Traversal on Stock JVMs . In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Schloss Dagstuhl\u2013Leibniz-Zentrum fuer Informatik, 17:1\u201317:31 . Jonathan Bell and Lu\u00eds Pina. 2018. CROCHET: Checkpoint and Rollback via Lightweight Heap Traversal on Stock JVMs. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP). Schloss Dagstuhl\u2013Leibniz-Zentrum fuer Informatik, 17:1\u201317:31."},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/2491956.2491976"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/2025113.2025139"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1016\/S1389-1286(02)00352-3"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2008.37"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/2382196.2382275"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1109\/SP.2010.15"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10009-016-0425-2"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.infsof.2010.05.011"},{"key":"e_1_2_1_15_1","volume-title":"Generative and Transformational Techniques in Software Engineering IV (GTTSE)","author":"Erwig Martin","unstructured":"Martin Erwig and Eric Walkingshaw . 2013. Variation Programming with the Choice Calculus . In Generative and Transformational Techniques in Software Engineering IV (GTTSE) . Springer , 55\u2013100. Martin Erwig and Eric Walkingshaw. 2013. Variation Programming with the Choice Calculus. In Generative and Transformational Techniques in Software Engineering IV (GTTSE). Springer, 55\u2013100."},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/1297027.1297033"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1007\/s100090050043"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.5555\/2486788.2486869"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2010.62"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/2377816.2377817"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1109\/ISSRE.2012.23"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/2694344.2694394"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1109\/SP.2012.48"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/2872362.2872395"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/3135932.3135951"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2011.104"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/2491411.2491437"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/2642937.2643001"},{"key":"e_1_2_1_30_1","unstructured":"Tim Lindholm Frank Yellin Gilad Bracha and Alex Buckley. 2015. The Java\u00ae Virtual Machine Specification (1 ed.). AddisonWesley Professional.   Tim Lindholm Frank Yellin Gilad Bracha and Alex Buckley. 2015. The Java\u00ae Virtual Machine Specification (1 ed.). AddisonWesley Professional."},{"key":"e_1_2_1_31_1","volume-title":"Proceedings of the USENIX Security Symposium. USENIX, 617\u2013630","author":"Maurer Matthew","year":"2012","unstructured":"Matthew Maurer and David Brumley . 2012 . Tachyon: Tandem Execution for Efficient Live Patch Testing . In Proceedings of the USENIX Security Symposium. USENIX, 617\u2013630 . Matthew Maurer and David Brumley. 2012. Tachyon: Tandem Execution for Efficient Live Patch Testing. In Proceedings of the USENIX Security Symposium. USENIX, 617\u2013630."},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/2884781.2884793"},{"key":"e_1_2_1_33_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming (ECOOP)","volume":"37","author":"Medeiros Fl\u00e1vio","year":"2015","unstructured":"Fl\u00e1vio Medeiros , Christian K\u00e4stner , M\u00e1rcio Ribeiro , Sarah Nadi , and Rohit Gheyi . 2015 . The Love\/Hate Relationship with the C Preprocessor: An Interview Study . In Proceedings of the European Conference on Object-Oriented Programming (ECOOP) , Vol. 37 . Schloss Dagstuhl\u2013Leibniz-Zentrum fuer Informatik, 495\u2013518. Fl\u00e1vio Medeiros, Christian K\u00e4stner, M\u00e1rcio Ribeiro, Sarah Nadi, and Rohit Gheyi. 2015. The Love\/Hate Relationship with the C Preprocessor: An Interview Study. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP), Vol. 37. Schloss Dagstuhl\u2013Leibniz-Zentrum fuer Informatik, 495\u2013518."},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/2970276.2970322"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/3023956.3023966"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1016\/0022-2836(70)90057-4"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/2568225.2568300"},{"key":"e_1_2_1_39_1","volume-title":"Feature Interaction: the Security Threat from within Software Systems. Progress in Informatics","author":"Nhlabatsi A","year":"2008","unstructured":"A Nhlabatsi , R Laney , and B Nuseibeh . 2008. Feature Interaction: the Security Threat from within Software Systems. Progress in Informatics ( 2008 ), 75\u201389. A Nhlabatsi, R Laney, and B Nuseibeh. 2008. Feature Interaction: the Security Threat from within Software Systems. Progress in Informatics (2008), 75\u201389."},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/1883612.1883618"},{"key":"e_1_2_1_41_1","volume-title":"van der Linden","author":"Pohl Klaus","year":"2005","unstructured":"Klaus Pohl , G\u00fcnter B\u00f6ckle , and Frank J . van der Linden . 2005 . Software Product Line Engineering: Foundations, Principles and Techniques. Springer . Klaus Pohl, G\u00fcnter B\u00f6ckle, and Frank J. van der Linden. 2005. Software Product Line Engineering: Foundations, Principles and Techniques. Springer."},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/1806799.1806864"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/3243734.3243806"},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-662-49635-0_1"},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-33666-9_17"},{"key":"e_1_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/2786805.2786830"},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/3168365.3168376"},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/1294261.1294284"},{"key":"e_1_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/1985793.1985872"},{"key":"e_1_2_1_50_1","volume-title":"Proceedings of the International Conference on Software Engineering (ICSE). IEEE, 272\u2013281","author":"William","unstructured":"William N. Sumner and Xiangyu Zhang. 2013. Comparative Causality: Explaining the Differences between Executions . In Proceedings of the International Conference on Software Engineering (ICSE). IEEE, 272\u2013281 . William N. Sumner and Xiangyu Zhang. 2013. Comparative Causality: Explaining the Differences between Executions. In Proceedings of the International Conference on Software Engineering (ICSE). IEEE, 272\u2013281."},{"key":"e_1_2_1_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/2580950"},{"key":"e_1_2_1_52_1","doi-asserted-by":"publisher","DOI":"10.1145\/1508244.1508267"},{"key":"e_1_2_1_53_1","volume-title":"Proceedings of the Java Pathfinder Workshop.","author":"von Rhein Alexander","year":"2011","unstructured":"Alexander von Rhein , Sven Apel , and Franco Raimondi . 2011 . Introducing Binary Decision Diagrams in the Explicit-State Verification of Java Code . In Proceedings of the Java Pathfinder Workshop. Alexander von Rhein, Sven Apel, and Franco Raimondi. 2011. Introducing Binary Decision Diagrams in the Explicit-State Verification of Java Code. In Proceedings of the Java Pathfinder Workshop."},{"key":"e_1_2_1_54_1","doi-asserted-by":"publisher","DOI":"10.1145\/2661136.2661143"},{"key":"e_1_2_1_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/3092703.3092714"},{"key":"e_1_2_1_56_1","doi-asserted-by":"publisher","DOI":"10.1089\/cmb.1994.1.337"},{"key":"e_1_2_1_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/3236024.3264837"},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/2908080.2908098"},{"key":"e_1_2_1_59_1","doi-asserted-by":"publisher","DOI":"10.1145\/587051.587053"},{"key":"e_1_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/1250734.1250782"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3276487","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3276487","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3276487","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T01:01:58Z","timestamp":1750208518000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3276487"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,10,24]]},"references-count":58,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2018,10,24]]}},"alternative-id":["10.1145\/3276487"],"URL":"https:\/\/doi.org\/10.1145\/3276487","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2018,10,24]]},"assertion":[{"value":"2018-10-24","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}