{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2023,9,14]],"date-time":"2023-09-14T05:49:24Z","timestamp":1694670564215},"reference-count":18,"publisher":"Wiley","issue":"5-6","license":[{"start":{"date-parts":[[2005,2,22]],"date-time":"2005-02-22T00:00:00Z","timestamp":1109030400000},"content-version":"vor","delay-in-days":0,"URL":"http:\/\/onlinelibrary.wiley.com\/termsAndConditions#vor"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Concurrency and Computation"],"published-print":{"date-parts":[[2005,4]]},"abstract":"Abstract<\/jats:title>Object combining tries to put objects together that have roughly the same life times in order to reduce strain on the memory manager and to reduce the number of pointer indirections during a program's execution. Object combining works by appending the fields of one object to another, allowing allocation and freeing of multiple objects with a single heap (de)allocation. Unlike object inlining<\/jats:italic>, which will only optimize objects where one has a (unique) pointer to another, our optimization also works if there is no such relation. Object inlining also directly replaces the pointer by the inlined object's fields. Object combining leaves the pointer in place to allow more combining. Elimination of the pointer accesses is implemented in a separate compiler optimization pass. Unlike previous object inlining systems, reference field overwrites are allowed and handled, resulting in much more aggressive optimization. Our object combining heuristics also allow unrelated objects to be combined, for example, those allocated inside a loop; recursive data structures (linked lists, trees) can be allocated several at a time and objects that are always used together can be combined. As Java explicitly permits code to be loaded at runtime and allows the new code to contribute to a running computation, we do not require a closed\u2010world assumption to enable these optimizations (but it will increase performance). The main focus of object combining in this paper is on reducing object (de)allocation overhead, by reducing both garbage collection work and the number of object allocations. Reduction of memory management overhead causes execution time to be reduced by up to 35%. Indirection removal further reduces execution time by up to 6%. Copyright \u00a9 2005 John Wiley & Sons, Ltd.<\/jats:p>","DOI":"10.1002\/cpe.836","type":"journal-article","created":{"date-parts":[[2005,2,22]],"date-time":"2005-02-22T17:17:03Z","timestamp":1109092623000},"page":"439-464","source":"Crossref","is-referenced-by-count":1,"title":["Object combining: a new aggressive optimization for object intensive programs"],"prefix":"10.1002","volume":"17","author":[{"given":"Ronald","family":"Veldema","sequence":"first","affiliation":[]},{"given":"Ceriel J. H.","family":"Jacobs","sequence":"additional","affiliation":[]},{"given":"Rutger F. H.","family":"Hofman","sequence":"additional","affiliation":[]},{"given":"Henri E.","family":"Bal","sequence":"additional","affiliation":[]}],"member":"311","published-online":{"date-parts":[[2005,2,22]]},"reference":[{"key":"e_1_2_1_2_2","doi-asserted-by":"publisher","DOI":"10.1145\/320384.320386"},{"key":"e_1_2_1_3_2","doi-asserted-by":"crossref","unstructured":"GhemawatS RandallKH ScalesDJ.Field analysis: Getting useful and low\u2010cost interprocedural information.Proceedings of the SIGPLAN Conference on Programming Language Design and Implementation 2000;334\u2013344.","DOI":"10.1145\/358438.349343"},{"key":"e_1_2_1_4_2","first-page":"345","volume-title":"Proceedings of PLDI 2000","author":"Dolby AACJ","year":"2000"},{"key":"e_1_2_1_5_2","unstructured":"LaudP.Analysis for object inlining in Java.Proceedings of JOSES: Java Optimization Strategies for Embedded Systems Genoa Italy April2001;1\u20138."},{"key":"e_1_2_1_6_2","volume-title":"Proceedings of the ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming","author":"Maassen J","year":"1999"},{"key":"e_1_2_1_7_2","doi-asserted-by":"publisher","DOI":"10.1145\/378795.378815"},{"key":"e_1_2_1_8_2","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380200104"},{"key":"e_1_2_1_9_2","doi-asserted-by":"crossref","unstructured":"GagnonE HendrenLJ MarceauG.Efficient inference of static types for Java bytecode.Proceedings of the Static Analysis Symposium 2000;199\u2013219.","DOI":"10.1007\/978-3-540-45099-3_11"},{"key":"e_1_2_1_10_2","first-page":"264","volume-title":"Proceedings of the Conference on Object\u2010Oriented","author":"Sundaresan V","year":"2000"},{"key":"e_1_2_1_11_2","first-page":"25","volume-title":"Proceedings of the 16th Annual (ACM) Symposium on Principles of Programming Languages","author":"Cytron R","year":"1989"},{"key":"e_1_2_1_12_2","first-page":"121","volume-title":"Proceedings of the Symposium on Principles of Programming Languages","author":"Ghiya R","year":"1998"},{"key":"e_1_2_1_13_2","doi-asserted-by":"publisher","DOI":"10.1109\/40.592312"},{"key":"e_1_2_1_14_2","doi-asserted-by":"crossref","unstructured":"ChilimbiTM DavidsonB LarusJR.Cache\u2010conscious structure definition.Proceedings of the SIGPLAN Conference on Programming Language Design and Implementation 1999;13\u201324.","DOI":"10.1145\/301618.301635"},{"key":"e_1_2_1_15_2","doi-asserted-by":"publisher","DOI":"10.1145\/193209.193217"},{"key":"e_1_2_1_16_2","doi-asserted-by":"crossref","unstructured":"WhaleyJ RinardM.Compositional pointer and escape analysis for Java programs.Proceedings of OOPSLA(14) Denver CO November1999;187\u2013206.","DOI":"10.1145\/320385.320400"},{"key":"e_1_2_1_17_2","first-page":"122","volume-title":"Proceedings of the 2nd International Conference on Architectural Support for Programming Languages and Operating System (ASPLOS)","author":"Massalin H","year":"1987"},{"key":"e_1_2_1_18_2","doi-asserted-by":"crossref","unstructured":"ChienAA KaramchetiV PlevyakJ.The concert system\u2013compiler and runtime support for efficient fine\u2010grained concurrent object\u2010oriented programs.Technical Report UIUCDCS\u2010R\u201093\u20101815 1993.","DOI":"10.2514\/6.1993-4505"},{"key":"e_1_2_1_19_2","first-page":"322","volume-title":"Proceedings of PACT 98","author":"Truong DN","year":"1998"}],"container-title":["Concurrency and Computation: Practice and Experience"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.wiley.com\/onlinelibrary\/tdm\/v1\/articles\/10.1002%2Fcpe.836","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/cpe.836","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,8,31]],"date-time":"2023-08-31T16:46:47Z","timestamp":1693500407000},"score":1,"resource":{"primary":{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/cpe.836"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2005,2,22]]},"references-count":18,"journal-issue":{"issue":"5-6","published-print":{"date-parts":[[2005,4]]}},"alternative-id":["10.1002\/cpe.836"],"URL":"https:\/\/doi.org\/10.1002\/cpe.836","archive":["Portico"],"relation":{},"ISSN":["1532-0626","1532-0634"],"issn-type":[{"value":"1532-0626","type":"print"},{"value":"1532-0634","type":"electronic"}],"subject":[],"published":{"date-parts":[[2005,2,22]]}}}