Optimizing Java Programs in the Presence of Exceptions
The support for precise exceptions in Java, combined with frequent checks for runtime exceptions, leads to severe limitations on the compiler’s ability to perform program optimizations that involve reordering of instructions. This paper presents a novel framework that allows a compiler to relax thes...
Gespeichert in:
Hauptverfasser: | , , |
---|---|
Format: | Buchkapitel |
Sprache: | eng |
Schlagworte: | |
Online-Zugang: | Volltext |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
container_end_page | 446 |
---|---|
container_issue | |
container_start_page | 422 |
container_title | |
container_volume | 1850 |
creator | Gupta, Manish Choi, Jong-Deok Hind, Michael |
description | The support for precise exceptions in Java, combined with frequent checks for runtime exceptions, leads to severe limitations on the compiler’s ability to perform program optimizations that involve reordering of instructions. This paper presents a novel framework that allows a compiler to relax these constraints. We first present an algorithm using dynamic analysis, and a variant using static analysis, to identify the subset of program state that need not be preserved if an exception is thrown. This allows many spurious dependence constraints between potentially excepting instructions (PEIs) and writes into variables to be eliminated. Our dynamic algorithm is particularly suitable for dynamically dispatched methods in object-oriented languages, where static analysis may be quite conservative. We then present the first software-only solution that allows dependence constraints among PEIs to be completely ignored while applying program optimizations, with no need to execute any additional instructions if an exception is not thrown. With a preliminary implementation, we show that for many benchmark programs, a large percentage of methods can be optimized (while honoring the precise exception requirement) without any constraints imposed by frequent runtime exceptions. Finally, we show that relaxing these reordering constraints can lead to substantial improvements (up to a factor of 7 on small codes) in the performance of programs. |
doi_str_mv | 10.1007/3-540-45102-1_21 |
format | Book Chapter |
fullrecord | <record><control><sourceid>proquest_pasca</sourceid><recordid>TN_cdi_pascalfrancis_primary_1377716</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>EBC3072080_27_434</sourcerecordid><originalsourceid>FETCH-LOGICAL-p267t-23e868de6ed0008a1c089eec8096fe0e0d9381fe2942d8b5017df8a42cfcfc233</originalsourceid><addsrcrecordid>eNo9UMtOwzAQNE9Rld455sA1Ze1NbOeIqvJSpXKAs-U6mzbQJsEOCPh63IfYPax2dmZWGsauOIw5gLrBNM8gzXIOIuVG8CM2KpTGCO4wOGYDLjlPEbPi5P8mlZSgTtkAMOoKleE5GxS5zgVHqS_YKIQ3iIVCaJADJuddX2_q37pZJk_2yybPvl16uwlJ3ST9iuJOgRpHSVsl029Hkd424ZKdVXYdaHSYQ_Z6N32ZPKSz-f3j5HaWdkKqPhVIWuqSJJXxp7bcgS6InIZCVgQEZYGaVySKTJR6kQNXZaVtJlwVWyAO2fXet7PB2XXlbePqYDpfb6z_MRyVUlxG2nhPC_HSLMmbRdu-B8PBbLM0aGI0Zpeb2WYZBXjw9e3HJ4Xe0FbhqOm9XbuV7XrywSAoARqMUCbDDP8AO1pwFg</addsrcrecordid><sourcetype>Index Database</sourcetype><iscdi>true</iscdi><recordtype>book_chapter</recordtype><pqid>EBC3072080_27_434</pqid></control><display><type>book_chapter</type><title>Optimizing Java Programs in the Presence of Exceptions</title><source>Springer Books</source><creator>Gupta, Manish ; Choi, Jong-Deok ; Hind, Michael</creator><contributor>Bertino, Elisa ; Bertino, Elisa</contributor><creatorcontrib>Gupta, Manish ; Choi, Jong-Deok ; Hind, Michael ; Bertino, Elisa ; Bertino, Elisa</creatorcontrib><description>The support for precise exceptions in Java, combined with frequent checks for runtime exceptions, leads to severe limitations on the compiler’s ability to perform program optimizations that involve reordering of instructions. This paper presents a novel framework that allows a compiler to relax these constraints. We first present an algorithm using dynamic analysis, and a variant using static analysis, to identify the subset of program state that need not be preserved if an exception is thrown. This allows many spurious dependence constraints between potentially excepting instructions (PEIs) and writes into variables to be eliminated. Our dynamic algorithm is particularly suitable for dynamically dispatched methods in object-oriented languages, where static analysis may be quite conservative. We then present the first software-only solution that allows dependence constraints among PEIs to be completely ignored while applying program optimizations, with no need to execute any additional instructions if an exception is not thrown. With a preliminary implementation, we show that for many benchmark programs, a large percentage of methods can be optimized (while honoring the precise exception requirement) without any constraints imposed by frequent runtime exceptions. Finally, we show that relaxing these reordering constraints can lead to substantial improvements (up to a factor of 7 on small codes) in the performance of programs.</description><identifier>ISSN: 0302-9743</identifier><identifier>ISBN: 9783540676607</identifier><identifier>ISBN: 3540676600</identifier><identifier>EISSN: 1611-3349</identifier><identifier>EISBN: 9783540451020</identifier><identifier>EISBN: 3540451021</identifier><identifier>DOI: 10.1007/3-540-45102-1_21</identifier><identifier>OCLC: 958521368</identifier><identifier>LCCallNum: QA76.6-76.66</identifier><language>eng</language><publisher>Germany: Springer Berlin / Heidelberg</publisher><subject>Applied sciences ; Computer science; control theory; systems ; Dependence Graph ; Exact sciences and technology ; Live Variable ; Matrix Multiply ; Program Dependence Graph ; Program Transformation ; Programming languages ; Software ; Software engineering</subject><ispartof>ECOOP 2000 - Object-Oriented Programming, 2000, Vol.1850, p.422-446</ispartof><rights>Springer-Verlag Berlin Heidelberg 2000</rights><rights>2000 INIST-CNRS</rights><lds50>peer_reviewed</lds50><woscitedreferencessubscribed>false</woscitedreferencessubscribed><relation>Lecture Notes in Computer Science</relation></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Uhttps://ebookcentral.proquest.com/covers/3072080-l.jpg</thumbnail><linktopdf>$$Uhttps://link.springer.com/content/pdf/10.1007/3-540-45102-1_21$$EPDF$$P50$$Gspringer$$H</linktopdf><linktohtml>$$Uhttps://link.springer.com/10.1007/3-540-45102-1_21$$EHTML$$P50$$Gspringer$$H</linktohtml><link.rule.ids>309,310,779,780,784,789,790,793,4050,4051,27925,38255,41442,42511</link.rule.ids><backlink>$$Uhttp://pascal-francis.inist.fr/vibad/index.php?action=getRecordDetail&idt=1377716$$DView record in Pascal Francis$$Hfree_for_read</backlink></links><search><contributor>Bertino, Elisa</contributor><contributor>Bertino, Elisa</contributor><creatorcontrib>Gupta, Manish</creatorcontrib><creatorcontrib>Choi, Jong-Deok</creatorcontrib><creatorcontrib>Hind, Michael</creatorcontrib><title>Optimizing Java Programs in the Presence of Exceptions</title><title>ECOOP 2000 - Object-Oriented Programming</title><description>The support for precise exceptions in Java, combined with frequent checks for runtime exceptions, leads to severe limitations on the compiler’s ability to perform program optimizations that involve reordering of instructions. This paper presents a novel framework that allows a compiler to relax these constraints. We first present an algorithm using dynamic analysis, and a variant using static analysis, to identify the subset of program state that need not be preserved if an exception is thrown. This allows many spurious dependence constraints between potentially excepting instructions (PEIs) and writes into variables to be eliminated. Our dynamic algorithm is particularly suitable for dynamically dispatched methods in object-oriented languages, where static analysis may be quite conservative. We then present the first software-only solution that allows dependence constraints among PEIs to be completely ignored while applying program optimizations, with no need to execute any additional instructions if an exception is not thrown. With a preliminary implementation, we show that for many benchmark programs, a large percentage of methods can be optimized (while honoring the precise exception requirement) without any constraints imposed by frequent runtime exceptions. Finally, we show that relaxing these reordering constraints can lead to substantial improvements (up to a factor of 7 on small codes) in the performance of programs.</description><subject>Applied sciences</subject><subject>Computer science; control theory; systems</subject><subject>Dependence Graph</subject><subject>Exact sciences and technology</subject><subject>Live Variable</subject><subject>Matrix Multiply</subject><subject>Program Dependence Graph</subject><subject>Program Transformation</subject><subject>Programming languages</subject><subject>Software</subject><subject>Software engineering</subject><issn>0302-9743</issn><issn>1611-3349</issn><isbn>9783540676607</isbn><isbn>3540676600</isbn><isbn>9783540451020</isbn><isbn>3540451021</isbn><fulltext>true</fulltext><rsrctype>book_chapter</rsrctype><creationdate>2000</creationdate><recordtype>book_chapter</recordtype><recordid>eNo9UMtOwzAQNE9Rld455sA1Ze1NbOeIqvJSpXKAs-U6mzbQJsEOCPh63IfYPax2dmZWGsauOIw5gLrBNM8gzXIOIuVG8CM2KpTGCO4wOGYDLjlPEbPi5P8mlZSgTtkAMOoKleE5GxS5zgVHqS_YKIQ3iIVCaJADJuddX2_q37pZJk_2yybPvl16uwlJ3ST9iuJOgRpHSVsl029Hkd424ZKdVXYdaHSYQ_Z6N32ZPKSz-f3j5HaWdkKqPhVIWuqSJJXxp7bcgS6InIZCVgQEZYGaVySKTJR6kQNXZaVtJlwVWyAO2fXet7PB2XXlbePqYDpfb6z_MRyVUlxG2nhPC_HSLMmbRdu-B8PBbLM0aGI0Zpeb2WYZBXjw9e3HJ4Xe0FbhqOm9XbuV7XrywSAoARqMUCbDDP8AO1pwFg</recordid><startdate>2000</startdate><enddate>2000</enddate><creator>Gupta, Manish</creator><creator>Choi, Jong-Deok</creator><creator>Hind, Michael</creator><general>Springer Berlin / Heidelberg</general><general>Springer Berlin Heidelberg</general><general>Springer</general><scope>FFUUA</scope><scope>IQODW</scope></search><sort><creationdate>2000</creationdate><title>Optimizing Java Programs in the Presence of Exceptions</title><author>Gupta, Manish ; Choi, Jong-Deok ; Hind, Michael</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-p267t-23e868de6ed0008a1c089eec8096fe0e0d9381fe2942d8b5017df8a42cfcfc233</frbrgroupid><rsrctype>book_chapters</rsrctype><prefilter>book_chapters</prefilter><language>eng</language><creationdate>2000</creationdate><topic>Applied sciences</topic><topic>Computer science; control theory; systems</topic><topic>Dependence Graph</topic><topic>Exact sciences and technology</topic><topic>Live Variable</topic><topic>Matrix Multiply</topic><topic>Program Dependence Graph</topic><topic>Program Transformation</topic><topic>Programming languages</topic><topic>Software</topic><topic>Software engineering</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Gupta, Manish</creatorcontrib><creatorcontrib>Choi, Jong-Deok</creatorcontrib><creatorcontrib>Hind, Michael</creatorcontrib><collection>ProQuest Ebook Central - Book Chapters - Demo use only</collection><collection>Pascal-Francis</collection></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Gupta, Manish</au><au>Choi, Jong-Deok</au><au>Hind, Michael</au><au>Bertino, Elisa</au><au>Bertino, Elisa</au><format>book</format><genre>bookitem</genre><ristype>CHAP</ristype><atitle>Optimizing Java Programs in the Presence of Exceptions</atitle><btitle>ECOOP 2000 - Object-Oriented Programming</btitle><seriestitle>Lecture Notes in Computer Science</seriestitle><date>2000</date><risdate>2000</risdate><volume>1850</volume><spage>422</spage><epage>446</epage><pages>422-446</pages><issn>0302-9743</issn><eissn>1611-3349</eissn><isbn>9783540676607</isbn><isbn>3540676600</isbn><eisbn>9783540451020</eisbn><eisbn>3540451021</eisbn><abstract>The support for precise exceptions in Java, combined with frequent checks for runtime exceptions, leads to severe limitations on the compiler’s ability to perform program optimizations that involve reordering of instructions. This paper presents a novel framework that allows a compiler to relax these constraints. We first present an algorithm using dynamic analysis, and a variant using static analysis, to identify the subset of program state that need not be preserved if an exception is thrown. This allows many spurious dependence constraints between potentially excepting instructions (PEIs) and writes into variables to be eliminated. Our dynamic algorithm is particularly suitable for dynamically dispatched methods in object-oriented languages, where static analysis may be quite conservative. We then present the first software-only solution that allows dependence constraints among PEIs to be completely ignored while applying program optimizations, with no need to execute any additional instructions if an exception is not thrown. With a preliminary implementation, we show that for many benchmark programs, a large percentage of methods can be optimized (while honoring the precise exception requirement) without any constraints imposed by frequent runtime exceptions. Finally, we show that relaxing these reordering constraints can lead to substantial improvements (up to a factor of 7 on small codes) in the performance of programs.</abstract><cop>Germany</cop><pub>Springer Berlin / Heidelberg</pub><doi>10.1007/3-540-45102-1_21</doi><oclcid>958521368</oclcid><tpages>25</tpages></addata></record> |
fulltext | fulltext |
identifier | ISSN: 0302-9743 |
ispartof | ECOOP 2000 - Object-Oriented Programming, 2000, Vol.1850, p.422-446 |
issn | 0302-9743 1611-3349 |
language | eng |
recordid | cdi_pascalfrancis_primary_1377716 |
source | Springer Books |
subjects | Applied sciences Computer science control theory systems Dependence Graph Exact sciences and technology Live Variable Matrix Multiply Program Dependence Graph Program Transformation Programming languages Software Software engineering |
title | Optimizing Java Programs in the Presence of Exceptions |
url | https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-05T13%3A42%3A52IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-proquest_pasca&rft_val_fmt=info:ofi/fmt:kev:mtx:book&rft.genre=bookitem&rft.atitle=Optimizing%20Java%20Programs%20in%20the%20Presence%20of%20Exceptions&rft.btitle=ECOOP%202000%20-%20Object-Oriented%20Programming&rft.au=Gupta,%20Manish&rft.date=2000&rft.volume=1850&rft.spage=422&rft.epage=446&rft.pages=422-446&rft.issn=0302-9743&rft.eissn=1611-3349&rft.isbn=9783540676607&rft.isbn_list=3540676600&rft_id=info:doi/10.1007/3-540-45102-1_21&rft_dat=%3Cproquest_pasca%3EEBC3072080_27_434%3C/proquest_pasca%3E%3Curl%3E%3C/url%3E&rft.eisbn=9783540451020&rft.eisbn_list=3540451021&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_pqid=EBC3072080_27_434&rft_id=info:pmid/&rfr_iscdi=true |