License
When quoting this document, please refer to the following
DOI: 10.4230/LIPIcs.ECOOP.2018.26
URN: urn:nbn:de:0030-drops-92319
URL: http://drops.dagstuhl.de/opus/volltexte/2018/9231/
Go to the corresponding LIPIcs Volume Portal


Grech, Neville ; Kastrinis, George ; Smaragdakis, Yannis

Efficient Reflection String Analysis via Graph Coloring

pdf-format:
LIPIcs-ECOOP-2018-26.pdf (0.6 MB)


Abstract

Static analyses for reflection and other dynamic language features have recently increased in number and advanced in sophistication. Most such analyses rely on a whole-program model of the flow of strings, through the stack and heap. We show that this global modeling of strings remains a major bottleneck of static analyses and propose a compact encoding, in order to battle unnecessary complexity. In our encoding, strings are maximally merged if they can never serve to differentiate class members in reflection operations. We formulate the problem as an instance of graph coloring and propose a fast polynomial-time algorithm that exploits the unique features of the setting (esp. large cliques, leading to hundreds of colors for realistic programs). The encoding is applied to two different frameworks for string-guided Java reflection analysis from past literature and leads to significant optimization (e.g., a ~2x reduction in the number of string-flow inferences), for a whole-program points-to analysis that uses strings.

BibTeX - Entry

@InProceedings{grech_et_al:LIPIcs:2018:9231,
  author =	{Neville Grech and George Kastrinis and Yannis Smaragdakis},
  title =	{{Efficient Reflection String Analysis via Graph Coloring}},
  booktitle =	{32nd European Conference on Object-Oriented Programming  (ECOOP 2018)},
  pages =	{26:1--26:25},
  series =	{Leibniz International Proceedings in Informatics (LIPIcs)},
  ISBN =	{978-3-95977-079-8},
  ISSN =	{1868-8969},
  year =	{2018},
  volume =	{109},
  editor =	{Todd Millstein},
  publisher =	{Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik},
  address =	{Dagstuhl, Germany},
  URL =		{http://drops.dagstuhl.de/opus/volltexte/2018/9231},
  URN =		{urn:nbn:de:0030-drops-92319},
  doi =		{10.4230/LIPIcs.ECOOP.2018.26},
  annote =	{Keywords: reflection, static analysis, graph coloring}
}

Keywords: reflection, static analysis, graph coloring
Seminar: 32nd European Conference on Object-Oriented Programming (ECOOP 2018)
Issue Date: 2018
Date of publication: 05.07.2018


DROPS-Home | Imprint | Privacy Published by LZI