{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,25]],"date-time":"2026-01-25T01:01:58Z","timestamp":1769302918017,"version":"3.49.0"},"reference-count":75,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[2024,5,1]],"date-time":"2024-05-01T00:00:00Z","timestamp":1714521600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"name":"SERB CRG","award":["CRG\/2022\/006971"],"award-info":[{"award-number":["CRG\/2022\/006971"]}]},{"name":"NSM","award":["MeitY\/R&D\/HPC\/2(1)\/2014"],"award-info":[{"award-number":["MeitY\/R&D\/HPC\/2(1)\/2014"]}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2024,6,30]]},"abstract":"<jats:p>\n            Mainstream compilers perform a multitude of analyses and optimizations on the given input program. Each analysis (such as points-to analysis) may generate a\n            <jats:italic>program-abstraction<\/jats:italic>\n            (such as points-to graph). Each optimization is typically composed of multiple alternating phases of\n            <jats:italic>inspection<\/jats:italic>\n            of such program-abstractions and\n            <jats:italic>transformations<\/jats:italic>\n            of the program. Upon transformation of a program, the program-abstractions generated by various analyses may become inconsistent with the modified program. Consequently, the correctness of the downstream inspection (and consequent transformation) phases cannot be ensured until the relevant program-abstractions are\n            <jats:italic>stabilized<\/jats:italic>\n            ; that is, the program-abstractions are either invalidated or made consistent with the modified program. In general, the existing compiler frameworks do not perform automated stabilization of the program-abstractions and instead leave it to the compiler pass writers to deal with the complex task of identifying the relevant program-abstractions to be stabilized, the points where the stabilization is to be performed, and the exact procedure of stabilization. In this article, we address these challenges by providing the design and implementation of a novel compiler-design framework called\n            <jats:italic>Homeostasis<\/jats:italic>\n            .\n          <\/jats:p>\n          <jats:p>\n            <jats:italic>Homeostasis<\/jats:italic>\n            automatically captures all the program changes performed by each transformation phase, and later, triggers the required stabilization using the captured information, if needed. We also provide a formal description of\n            <jats:italic>Homeostasis<\/jats:italic>\n            and a correctness proof thereof. To assess the feasibility of using\n            <jats:italic>Homeostasis<\/jats:italic>\n            in compilers of parallel programs, we have implemented our proposed idea in IMOP, a compiler framework for OpenMP C programs. Furthermore, to illustrate the benefits of using\n            <jats:italic>Homeostasis<\/jats:italic>\n            , we have implemented a set of standard data-flow passes, and a set of involved optimizations that are used to remove redundant barriers in OpenMP C programs. Implementations of none of these optimizations in IMOP required any additional lines of code for stabilization of the program-abstractions. We present an evaluation in the context of these optimizations and analyses, which demonstrates that\n            <jats:italic>Homeostasis<\/jats:italic>\n            is efficient and easy to use.\n          <\/jats:p>","DOI":"10.1145\/3649308","type":"journal-article","created":{"date-parts":[[2024,2,23]],"date-time":"2024-02-23T12:05:34Z","timestamp":1708689934000},"page":"1-58","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":3,"title":["Homeostasis: Design and Implementation of a Self-Stabilizing Compiler"],"prefix":"10.1145","volume":"46","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-2563-2480","authenticated-orcid":false,"given":"Aman","family":"Nougrahiya","sequence":"first","affiliation":[{"name":"Department of CSE, IIT Madras, Chennai, India"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-5949-0046","authenticated-orcid":false,"given":"V. Krishna","family":"Nandivada","sequence":"additional","affiliation":[{"name":"Department of CSE, IIT Madras, Chennai, India"}]}],"member":"320","published-online":{"date-parts":[[2024,5]]},"reference":[{"key":"e_1_3_4_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/2751205.2751238"},{"key":"e_1_3_4_3_1","volume-title":"Program Analysis and Specialization for the C Programming Language","author":"Andersen Lars Ole","year":"1994","unstructured":"Lars Ole Andersen. 1994. Program Analysis and Specialization for the C Programming Language. Ph.D. Dissertation. DIKU, University of Copenhagen."},{"key":"e_1_3_4_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/2568225.2568243"},{"key":"e_1_3_4_5_1","doi-asserted-by":"publisher","DOI":"10.5555\/647074.713908"},{"key":"e_1_3_4_6_1","doi-asserted-by":"publisher","DOI":"10.1109\/PACT.2013.6618794"},{"key":"e_1_3_4_7_1","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0025876"},{"key":"e_1_3_4_8_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-48228-8_77"},{"key":"e_1_3_4_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/74587.74612"},{"key":"e_1_3_4_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/24208.24228"},{"key":"e_1_3_4_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/73560.73584"},{"key":"e_1_3_4_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/782814.782824"},{"key":"e_1_3_4_13_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-17404-4_11"},{"key":"e_1_3_4_14_1","volume-title":"Magellan","author":"Eichberg Michael","year":"2005","unstructured":"Michael Eichberg and Christoph Bockisch. 2005. Magellan. Retrieved August 11, 2022 from http:\/\/www.st.informatik.tu-darmstadt.de\/Magellan"},{"key":"e_1_3_4_15_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-69611-7_7"},{"key":"e_1_3_4_16_1","volume-title":"Design Patterns: Elements of Reusable Object-Oriented Software","author":"Gamma Erich","year":"1995","unstructured":"Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Longman Publishing Co., Inc.."},{"key":"e_1_3_4_17_1","doi-asserted-by":"publisher","unstructured":"Isabel Garcia-Contreras Jos\u00e9 F. Morales and Manuel V. Hermenegildo. 2021. Incremental and modular context-sensitive analysis. Theory and Practice of Logic Programming 21 2 (2021) 196\u2013243. 10.1017\/s1471068420000496","DOI":"10.1017\/s1471068420000496"},{"key":"e_1_3_4_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/1297105.1297033"},{"key":"e_1_3_4_19_1","volume-title":"Chrome V8","year":"2001","unstructured":"Google. 2001. Chrome V8. Retrieved August 11, 2022 from https:\/\/github.com\/v8\/v8"},{"key":"e_1_3_4_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/237721.237799"},{"key":"e_1_3_4_21_1","doi-asserted-by":"publisher","unstructured":"Suyash Gupta and V. Krishna Nandivada. 2015. IMSuite: A benchmark suite for simulating distributed algorithms. J. Parallel and Distrib. Comput. 75 1 (2015) 1\u201319. 10.1016\/j.jpdc.2014.10.010","DOI":"10.1016\/j.jpdc.2014.10.010"},{"key":"e_1_3_4_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/3079079.3079102"},{"key":"e_1_3_4_23_1","volume-title":"Eclipse OpenJ9","year":"2017","unstructured":"IBM. 2017. Eclipse OpenJ9. Retrieved August 11, 2022 from https:\/\/github.com\/eclipse\/openj9"},{"key":"e_1_3_4_24_1","volume-title":"Incrementalization of Analyses for Next Generation IDEs","author":"Kloppenburg Sven","year":"2009","unstructured":"Sven Kloppenburg. 2009. Incrementalization of Analyses for Next Generation IDEs. Ph.D. Dissertation. Technische Universit\u00e4t, Darmstadt. Retrieved from http:\/\/tuprints.ulb.tu-darmstadt.de\/1960\/"},{"key":"e_1_3_4_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/3362064"},{"key":"e_1_3_4_26_1","doi-asserted-by":"publisher","DOI":"10.5555\/977395.977673"},{"key":"e_1_3_4_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/3527332"},{"key":"e_1_3_4_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/3293606"},{"key":"e_1_3_4_29_1","volume-title":"LLVM GitHub Repository","year":"2019","unstructured":"LLVM-Developer-Community. 2019a. LLVM GitHub Repository. Retrieved August 11, 2022 from https:\/\/github.com\/llvm\/llvm-project\/commit\/8299fd9dee7df7c5f92ab2572aad04ce2fbbf83e"},{"key":"e_1_3_4_30_1","volume-title":"LLVM GitHub Repository","year":"2019","unstructured":"LLVM-Developer-Community. 2019b. LLVM GitHub Repository. Retrieved August 11, 2022 from https:\/\/github.com\/llvm\/llvm-project\/commit\/d2904ccf88e8ed487647feb90cfbf331bd888509"},{"key":"e_1_3_4_31_1","volume-title":"LLVM GitHub Repository","year":"2019","unstructured":"LLVM-Developer-Community. 2019c. LLVM GitHub Repository. Retrieved August 11, 2022 from https:\/\/github.com\/llvm\/llvm-project\/commit\/a95d95d3922e1a24d8b9affdd570c1d8fca00129"},{"key":"e_1_3_4_32_1","volume-title":"LLVM GitHub Repository","year":"2020","unstructured":"LLVM-Developer-Community. 2020a. LLVM GitHub Repository. Retrieved August 11, 2022 from https:\/\/github.com\/llvm\/llvm-project\/commit\/fa8c2ae76f7e4f498d29e2716233bd29025e8827"},{"key":"e_1_3_4_33_1","volume-title":"LLVM GitHub Repository","year":"2020","unstructured":"LLVM-Developer-Community. 2020b. LLVM GitHub Repository. Retrieved August 11, 2022 from https:\/\/github.com\/llvm\/llvm-project\/commit\/de92dc2850c17259090ccf644b2f2375ab8e1664"},{"key":"e_1_3_4_34_1","volume-title":"LLVM GitHub Repository","year":"2020","unstructured":"LLVM-Developer-Community. 2020c. LLVM GitHub Repository. Retrieved August 11, 2022 from https:\/\/github.com\/llvm\/llvm-project\/commit\/e1133179587dd895962a2fe4d6eb0cb1e63b5ee2"},{"key":"e_1_3_4_35_1","volume-title":"LLVM GitHub Repository","year":"2020","unstructured":"LLVM-Developer-Community. 2020d. LLVM GitHub Repository. Retrieved August 11, 2022 from https:\/\/github.com\/llvm\/llvm-project\/commit\/e2fc6a31d347dc96c2dec6acb72045150f525630"},{"key":"e_1_3_4_36_1","volume-title":"LLVM GitHub Repository","year":"2020","unstructured":"LLVM-Developer-Community. 2020e. LLVM GitHub Repository. Retrieved August 11, 2022 from https:\/\/github.com\/llvm\/llvm-project\/commit\/1ccfb52a6174816e450074f65e5f0929a9f046a5"},{"key":"e_1_3_4_37_1","volume-title":"LLVM GitHub Repository","year":"2020","unstructured":"LLVM-Developer-Community. 2020f. LLVM GitHub Repository. Retrieved August 11, 2022 from https:\/\/github.com\/llvm\/llvm-project\/commit\/e6cf796bab7e02d2b8ac7fd495f14f5e21494270"},{"key":"e_1_3_4_38_1","volume-title":"LLVM GitHub Repository","year":"2020","unstructured":"LLVM-Developer-Community. 2020g. LLVM GitHub Repository. Retrieved August 11, 2022 from https:\/\/github.com\/llvm\/llvm-project\/commit\/edccc35e8fa2c546e0ef1c8efde56e6b12e3c175"},{"key":"e_1_3_4_39_1","volume-title":"LLVM GitHub Repository","year":"2020","unstructured":"LLVM-Developer-Community. 2020h. LLVM GitHub Repository. Retrieved August 11, 2022 from https:\/\/github.com\/llvm\/llvm-project\/commit\/d6b05fccb709eb38b5b4b21901cb63825faee83e"},{"key":"e_1_3_4_40_1","volume-title":"LLVM GitHub Repository","year":"2020","unstructured":"LLVM-Developer-Community. 2020i. LLVM GitHub Repository. Retrieved August 11, 2022 from https:\/\/github.com\/llvm\/llvm-project\/commit\/0d90d2457c3b94760df4848941c0e7b93d07b1a2"},{"key":"e_1_3_4_41_1","volume-title":"LLVM GitHub Repository","year":"2021","unstructured":"LLVM-Developer-Community. 2021a. LLVM GitHub Repository. Retrieved August 11, 2022 from https:\/\/github.com\/llvm\/llvm-project\/commit\/ddc4b56eef9fec990915470069a29e70bbde3711"},{"key":"e_1_3_4_42_1","volume-title":"LLVM GitHub Repository","year":"2021","unstructured":"LLVM-Developer-Community. 2021b. LLVM GitHub Repository. Retrieved August 11, 2022 from https:\/\/github.com\/llvm\/llvm-project\/commit\/7c8b8063b66c7b936d41a0c4069c506669e13115"},{"key":"e_1_3_4_43_1","volume-title":"LLVM GitHub Repository","year":"2021","unstructured":"LLVM-Developer-Community. 2021c. LLVM GitHub Repository. Retrieved August 11, 2022 from https:\/\/github.com\/llvm\/llvm-project\/commit\/2461cdb41724298591133c811df82b0064adfa6b"},{"key":"e_1_3_4_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/3360574"},{"key":"e_1_3_4_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/96709.96728"},{"key":"e_1_3_4_46_1","doi-asserted-by":"publisher","DOI":"10.5555\/286076"},{"key":"e_1_3_4_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/2450136.2450138"},{"key":"e_1_3_4_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/3315568.3329964"},{"key":"e_1_3_4_49_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.entcs.2009.09.046"},{"key":"e_1_3_4_50_1","volume-title":"IMOP : IIT Madras OpenMP Compiler Framework","author":"Nougrahiya Aman","year":"2019","unstructured":"Aman Nougrahiya and V. Krishna Nandivada. 2019. IMOP : IIT Madras OpenMP Compiler Framework. Retrieved August 11, 2022 from https:\/\/github.com\/amannougrahiya\/imop-compiler"},{"key":"e_1_3_4_51_1","volume-title":"Implementation of Homeostasis in the IMOP Compiler Framework","author":"Nougrahiya Aman","year":"2021","unstructured":"Aman Nougrahiya and V. Krishna Nandivada. 2021. Implementation of Homeostasis in the IMOP Compiler Framework. Retrieved August 11, 2022 from https:\/\/github.com\/anonymousoopsla21\/homeostasis"},{"key":"e_1_3_4_52_1","volume-title":"List of Mainstream and Experimental Compiler Frameworks","author":"Nougrahiya Aman","year":"2023","unstructured":"Aman Nougrahiya and V. Krishna Nandivada. 2023. List of Mainstream and Experimental Compiler Frameworks. Retrieved from https:\/\/www.cse.iitm.ac.in\/amannoug\/compiler-listing.pdf"},{"key":"e_1_3_4_53_1","volume-title":"HotSpot","year":"1999","unstructured":"Oracle. 1999. HotSpot. Retrieved August 11, 2022 from https:\/\/github.com\/openjdk-mirror\/jdk7u-hotspot"},{"key":"e_1_3_4_54_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993498.1993558"},{"key":"e_1_3_4_55_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.58766"},{"key":"e_1_3_4_56_1","doi-asserted-by":"publisher","DOI":"10.1145\/128861.128865"},{"key":"e_1_3_4_57_1","volume-title":"ROSE User Manual: A Tool for Building Source-to-Source Translators","author":"Quinlan Daniel","year":"2013","unstructured":"Daniel Quinlan, Chunhua Liao, Thomas Panas, Robb Matzke, Markus Schordan, Rich Vuduc, and Qing Yi. 2013. ROSE User Manual: A Tool for Building Source-to-Source Translators. Technical Report. Lawrence Livermore National Laboratory."},{"key":"e_1_3_4_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/2166.357218"},{"key":"e_1_3_4_59_1","doi-asserted-by":"publisher","DOI":"10.5555\/130437"},{"key":"e_1_3_4_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/567067.567084"},{"key":"e_1_3_4_61_1","doi-asserted-by":"publisher","DOI":"10.1016\/0167-6423(88)90061-5"},{"key":"e_1_3_4_62_1","doi-asserted-by":"publisher","DOI":"10.5555\/3049832.3049857"},{"key":"e_1_3_4_63_1","doi-asserted-by":"publisher","unstructured":"M. Seager. 2008. The ASC Sequoia Programming Model. Technical Report. 10.2172\/945684","DOI":"10.2172\/945684"},{"key":"e_1_3_4_64_1","doi-asserted-by":"publisher","DOI":"10.1145\/77726.255173"},{"key":"e_1_3_4_65_1","doi-asserted-by":"publisher","DOI":"10.1145\/231379.231434"},{"key":"e_1_3_4_66_1","volume-title":"Using The GNU Compiler Collection: A GNU Manual For GCC Version 4.3.3","author":"Stallman Richard M.","year":"2009","unstructured":"Richard M. Stallman and GCC-Developer-Community. 2009. Using The GNU Compiler Collection: A GNU Manual For GCC Version 4.3.3. CreateSpace, Paramount, CA."},{"key":"e_1_3_4_67_1","doi-asserted-by":"publisher","DOI":"10.1145\/3276509"},{"key":"e_1_3_4_68_1","doi-asserted-by":"publisher","DOI":"10.1145\/3453483.3454026"},{"key":"e_1_3_4_69_1","doi-asserted-by":"publisher","DOI":"10.1145\/2970276.2970298"},{"key":"e_1_3_4_70_1","doi-asserted-by":"publisher","DOI":"10.1145\/209936.209952"},{"key":"e_1_3_4_71_1","doi-asserted-by":"publisher","DOI":"10.1145\/1925805.1925818"},{"key":"e_1_3_4_72_1","volume-title":"NAS Parallel Benchmarks Version 3.0","author":"Wijngaart Rob F. Van der","year":"2002","unstructured":"Rob F. Van der Wijngaart and Parkson Wong. 2002. NAS Parallel Benchmarks Version 3.0. Technical Report. NAS technical report, NAS-02-007."},{"key":"e_1_3_4_73_1","volume-title":"Workshop on Energy Efficiency with Heterogeneous Computing (EEHCO\u201916)","author":"Sreelatha Jyothi Krishna Viswakaran","year":"2016","unstructured":"Jyothi Krishna Viswakaran Sreelatha and Shankar Balachandran. 2016. Compiler enhanced scheduling for OpenMP for heterogeneous multiprocessors. In Workshop on Energy Efficiency with Heterogeneous Computing (EEHCO\u201916). ACM, Prague, Czech Republic."},{"key":"e_1_3_4_74_1","doi-asserted-by":"publisher","DOI":"10.1109\/TMSCS.2018.2791955"},{"key":"e_1_3_4_75_1","doi-asserted-by":"publisher","DOI":"10.1109\/TCAD.2018.2858366"},{"key":"e_1_3_4_76_1","doi-asserted-by":"publisher","DOI":"10.1145\/253228.253369"}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3649308","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3649308","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T01:17:47Z","timestamp":1750295867000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3649308"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,5]]},"references-count":75,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2024,6,30]]}},"alternative-id":["10.1145\/3649308"],"URL":"https:\/\/doi.org\/10.1145\/3649308","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"value":"0164-0925","type":"print"},{"value":"1558-4593","type":"electronic"}],"subject":[],"published":{"date-parts":[[2024,5]]},"assertion":[{"value":"2023-01-15","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-02-13","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-05-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}