{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,12,7]],"date-time":"2025-12-07T14:35:50Z","timestamp":1765118150175,"version":"3.41.0"},"reference-count":51,"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\/"}],"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>New non-volatile memory (NVM) technologies enable direct, durable storage of data in an application's heap. Durable, randomly accessible memory facilitates the construction of applications that do not lose data at system shutdown or power failure. Existing NVM programming frameworks provide mechanisms to consistently capture a running application's state. They do not, however, fully support object-oriented languages or ensure that the persistent heap is consistent with the environment when the application is restarted.<\/jats:p><jats:p>In this paper, we propose a new NVM language extension and runtime system that supports object-oriented NVM programming and avoids the pitfalls of prior approaches. At the heart of our technique is object reconstruction, which transparently restores and reconstructs a persistent object's state during program restart. It is implemented in NVMReconstruction, a Clang\/LLVM extension and runtime library that provides: (i) transient fields in persistent objects, (ii) support for virtual functions and function pointers, (iii) direct representation of persistent pointers as virtual addresses, and (iv) type-specific reconstruction of a persistent object during program restart. In addition, NVMReconstruction supports updating an application's code, even if this causes objects to expand, by providing object migration. NVMReconstruction also can compact the persistent heap to reduce fragmentation. In experiments, we demonstrate the versatility and usability of object reconstruction and its low runtime performance cost.<\/jats:p>","DOI":"10.1145\/3276523","type":"journal-article","created":{"date-parts":[[2018,10,24]],"date-time":"2018-10-24T11:57:18Z","timestamp":1540382238000},"page":"1-22","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":24,"title":["Object-oriented recovery for non-volatile memory"],"prefix":"10.1145","volume":"2","author":[{"given":"Nachshon","family":"Cohen","sequence":"first","affiliation":[{"name":"EPFL, Switzerland"}]},{"given":"David T.","family":"Aksun","sequence":"additional","affiliation":[{"name":"EPFL, Switzerland"}]},{"given":"James R.","family":"Larus","sequence":"additional","affiliation":[{"name":"EPFL, Switzerland"}]}],"member":"320","published-online":{"date-parts":[[2018,10,24]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1109\/JPROC.2010.2070830"},{"volume-title":"Data Manag. 91 - DM91","author":"Andrews Tim","key":"e_1_2_2_2_1","unstructured":"Tim Andrews . 1992. The ONTOS object database . In Data Manag. 91 - DM91 . Ashgate Publishing . http:\/\/dl.acm.org\/citation. cfm?id=144139 Tim Andrews. 1992. The ONTOS object database. In Data Manag. 91 - DM91. Ashgate Publishing. http:\/\/dl.acm.org\/citation. cfm?id=144139"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/38765.38847"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/2723372.2749441"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.5555\/615224.615226"},{"key":"e_1_2_2_6_1","first-page":"360","article-title":"An Approach to Persistent","volume":"26","author":"Atkinson M. P.","year":"1983","unstructured":"M. P. Atkinson , P. J. Bailey , K. J. Chisholm , P. W. Cockshott , and R. Morrison . 1983 . An Approach to Persistent Programming. Comput. J. 26 , 4 (1983), 360 \u2013 365 . M. P. Atkinson, P. J. Bailey, K. J. Chisholm, P. W. Cockshott, and R. Morrison. 1983. An Approach to Persistent Programming. Comput. J. 26, 4 (1983), 360\u2013365.","journal-title":"Programming. Comput. J."},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/2527792.2527799"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/355602.361306"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/2983990.2984019"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/2660193.2660224"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.14778\/2735479.2735483"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/3064176.3064204"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/1950365.1950380"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133891"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/2491956.2491973"},{"key":"e_1_2_2_16_1","volume-title":"NVML: NVM Library. https:\/\/github.com\/pmem\/nvml","author":"Czurylo Krzysztof","year":"2014","unstructured":"Krzysztof Czurylo and Andy Rudoff . 2014 . NVML: NVM Library. https:\/\/github.com\/pmem\/nvml Krzysztof Czurylo and Andy Rudoff. 2014. NVML: NVM Library. https:\/\/github.com\/pmem\/nvml"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133869"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/1345206.1345241"},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/3178487.3178490"},{"key":"e_1_2_2_20_1","unstructured":"Sanjay Ghemawat and Jeff Dean. 2011. LevelDB. Sanjay Ghemawat and Jeff Dean. 2011. LevelDB."},{"key":"e_1_2_2_21_1","doi-asserted-by":"crossref","unstructured":"E. R. Giles K. Doshi and P. Varman. 2015. SoftWrAP: A lightweight framework for transactional support of storage class memory. In 31st Mass Storage Systems and Technologies - MSST \u201915. 1\u201314. E. R. Giles K. Doshi and P. Varman. 2015. SoftWrAP: A lightweight framework for transactional support of storage class memory. In 31st Mass Storage Systems and Technologies - MSST \u201915. 1\u201314.","DOI":"10.1109\/MSST.2015.7208276"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/2588555.2595642"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/320384.320427"},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/168619.168628"},{"volume-title":"IEEE Int. Devices Meet. IEEE, 459\u2013462","author":"Hosomi M.","key":"e_1_2_2_25_1","unstructured":"M. Hosomi , H. Yamagishi , T. Yamamoto , K. Bessho , Y. Higo , K. Yamane , H. Yamada , M. Shoji , H. Hachino , C. Fukumoto , H. Nagao , and H. Kano . 2005. A novel nonvolatile memory with spin torque transfer magnetization switching: spin-ram . In IEEE Int. Devices Meet. IEEE, 459\u2013462 . M. Hosomi, H. Yamagishi, T. Yamamoto, K. Bessho, Y. Higo, K. Yamane, H. Yamada, M. Shoji, H. Hachino, C. Fukumoto, H. Nagao, and H. Kano. 2005. A novel nonvolatile memory with spin torque transfer magnetization switching: spin-ram. In IEEE Int. Devices Meet. IEEE, 459\u2013462."},{"key":"e_1_2_2_26_1","volume-title":"Log-Structured Non-Volatile Main Memory. In Annu. Tech. Conf. - ATC 17","author":"Hu Qingda","year":"2017","unstructured":"Qingda Hu , Jinglei Ren , Anirudh Badam , and Thomas Moscibroda . 2017 . Log-Structured Non-Volatile Main Memory. In Annu. Tech. Conf. - ATC 17 . USENIX. http:\/\/jinglei.ren.systems\/lsnvmm{_}atc17.pdf Qingda Hu, Jinglei Ren, Anirudh Badam, and Thomas Moscibroda. 2017. Log-Structured Non-Volatile Main Memory. In Annu. Tech. Conf. - ATC 17. USENIX. http:\/\/jinglei.ren.systems\/lsnvmm{_}atc17.pdf"},{"volume-title":"30th Int. Symp. Distrib. Comput. - ISDC \u201916","author":"Izraelevitz Joseph","key":"e_1_2_2_27_1","unstructured":"Joseph Izraelevitz , Hammurabi Mendes , and Michael L. Scott . 2016. Linearizability of Persistent Memory Objects Under a Full-System-Crash Failure Model . In 30th Int. Symp. Distrib. Comput. - ISDC \u201916 . 313\u2013327. Joseph Izraelevitz, Hammurabi Mendes, and Michael L. Scott. 2016. Linearizability of Persistent Memory Objects Under a Full-System-Crash Failure Model. In 30th Int. Symp. Distrib. Comput. - ISDC \u201916. 313\u2013327."},{"volume-title":"Object-oriented Database Management: Applications in Engineering and Computer Science","author":"Kemper Alfons","key":"e_1_2_2_28_1","unstructured":"Alfons Kemper and Guido Moerkotte . 1994. Object-oriented Database Management: Applications in Engineering and Computer Science . Prentice-Hall, Inc. , Upper Saddle River, NJ, USA. Alfons Kemper and Guido Moerkotte. 1994. Object-oriented Database Management: Applications in Engineering and Computer Science. Prentice-Hall, Inc., Upper Saddle River, NJ, USA."},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/2872362.2872381"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/125223.125244"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/1555754.1555758"},{"volume-title":"DAX: Page cache bypass for filesystems on memory storage. https:\/\/www.kernel.org\/doc\/Documentation\/ filesystems\/dax.txthttps:\/\/lwn.net\/Articles\/618064\/","year":"2014","key":"e_1_2_2_32_1","unstructured":"Linux. 2014 . DAX: Page cache bypass for filesystems on memory storage. https:\/\/www.kernel.org\/doc\/Documentation\/ filesystems\/dax.txthttps:\/\/lwn.net\/Articles\/618064\/ Linux. 2014. DAX: Page cache bypass for filesystems on memory storage. https:\/\/www.kernel.org\/doc\/Documentation\/ filesystems\/dax.txthttps:\/\/lwn.net\/Articles\/618064\/"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/3037697.3037714"},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/2384616.2384636"},{"key":"e_1_2_2_35_1","volume-title":"Persistent Memcached: Bringing Legacy Code to Byte-Addressable Persistent Memory. In HotStorage \u201917. USENIX. https:\/\/www.usenix.org\/system\/files\/conference\/ hotstorage17\/hotstorage17-paper-marathe.pdf","author":"Marathe Virendra J","year":"2017","unstructured":"Virendra J Marathe , Margo Seltzer , Steve Byan , and Tim Harris . 2017 . Persistent Memcached: Bringing Legacy Code to Byte-Addressable Persistent Memory. In HotStorage \u201917. USENIX. https:\/\/www.usenix.org\/system\/files\/conference\/ hotstorage17\/hotstorage17-paper-marathe.pdf Virendra J Marathe, Margo Seltzer, Steve Byan, and Tim Harris. 2017. Persistent Memcached: Bringing Legacy Code to Byte-Addressable Persistent Memory. In HotStorage \u201917. USENIX. https:\/\/www.usenix.org\/system\/files\/conference\/ hotstorage17\/hotstorage17-paper-marathe.pdf"},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/3064176.3064215"},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.153378"},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/3037697.3037730"},{"key":"e_1_2_2_39_1","unstructured":"Oracle Corporation. 2017. NVM Direct Library. http:\/\/www.oracle.com\/technetwork\/oracle-labs\/ open-nvm-download-2440119.html Oracle Corporation. 2017. NVM Direct Library. http:\/\/www.oracle.com\/technetwork\/oracle-labs\/ open-nvm-download-2440119.html"},{"key":"e_1_2_2_40_1","unstructured":"Team PaX. 2003. PaX address space layout randomization (ASLR). Team PaX. 2003. PaX address space layout randomization (ASLR)."},{"key":"e_1_2_2_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/1555754.1555760"},{"key":"e_1_2_2_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/321650.321658"},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/2803140.2803144"},{"key":"e_1_2_2_44_1","volume-title":"Wilson","author":"Singhal Vivek","year":"1993","unstructured":"Vivek Singhal , Sheetal V. Kakkad , and Paul R . Wilson . 1993 . Texas : An Efficient, Portable Persistent Store. In Work. in Computing. Springer , London, 11\u201333. Vivek Singhal, Sheetal V. Kakkad, and Paul R. Wilson. 1993. Texas: An Efficient, Portable Persistent Store. In Work. in Computing. Springer, London, 11\u201333."},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/130868.130883"},{"key":"e_1_2_2_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/1950365.1950379"},{"key":"e_1_2_2_47_1","volume-title":"DeWitt","author":"White Seth J.","year":"1992","unstructured":"Seth J. White and David J . DeWitt . 1992 . A Performance Study of Alternative Object Faulting and Pointer Swizzling Strategies. In 18th Very Large Data Bases \u2013 VLDB. Morgan Kaufmann Publishers Inc ., 419\u2013431. http:\/\/dl.acm.org\/citation.cfm?id= 645918.672341 Seth J. White and David J. DeWitt. 1992. A Performance Study of Alternative Object Faulting and Pointer Swizzling Strategies. In 18th Very Large Data Bases \u2013 VLDB. Morgan Kaufmann Publishers Inc., 419\u2013431. http:\/\/dl.acm.org\/citation.cfm?id= 645918.672341"},{"key":"e_1_2_2_48_1","doi-asserted-by":"crossref","unstructured":"P.R. Wilson and S.V. Kakkad. 1992. Pointer swizzling at page fault time: efficiently and compatibly supporting huge address spaces on standard hardware. In 2nd Work. Object Orientat. Oper. Syst. IEEE Comput. Soc. Press 364\u2013377. P.R. Wilson and S.V. Kakkad. 1992. Pointer swizzling at page fault time: efficiently and compatibly supporting huge address spaces on standard hardware. In 2nd Work. Object Orientat. Oper. Syst. IEEE Comput. Soc. Press 364\u2013377.","DOI":"10.1109\/IWOOOS.1992.252959"},{"key":"e_1_2_2_49_1","doi-asserted-by":"publisher","DOI":"10.1109\/JPROC.2012.2190369"},{"key":"e_1_2_2_50_1","volume-title":"Khai Leong Yong, and Bingsheng He","author":"Yang Jun","year":"2015","unstructured":"Jun Yang , Qingsong Wei , Cheng Chen , Chundong Wang , Khai Leong Yong, and Bingsheng He . 2015 . NV-Tree: Reducing Consistency Cost for NVM-based Single Level Systems. In 13th File and Storage Tech. - FAST \u201915. USENIX , 167\u2013181. https:\/\/www.usenix.org\/conference\/fast15\/technical-sessions\/presentation\/yang Jun Yang, Qingsong Wei, Cheng Chen, Chundong Wang, Khai Leong Yong, and Bingsheng He. 2015. NV-Tree: Reducing Consistency Cost for NVM-based Single Level Systems. In 13th File and Storage Tech. - FAST \u201915. USENIX, 167\u2013181. https:\/\/www.usenix.org\/conference\/fast15\/technical-sessions\/presentation\/yang"},{"volume-title":"3rd IEEE\/ACM Big Data Comput. Appl. Technol. - BDCAT \u201916. ACM, 227\u2013236.","author":"Zhou Jie","key":"e_1_2_2_51_1","unstructured":"Jie Zhou , Yanyan Shen , Sumin Li , and Linpeng Huang . 2016. Revisiting Hash Table Design for Phase Change Memory . In 3rd IEEE\/ACM Big Data Comput. Appl. Technol. - BDCAT \u201916. ACM, 227\u2013236. Jie Zhou, Yanyan Shen, Sumin Li, and Linpeng Huang. 2016. Revisiting Hash Table Design for Phase Change Memory. In 3rd IEEE\/ACM Big Data Comput. Appl. Technol. - BDCAT \u201916. ACM, 227\u2013236."}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3276523","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3276523","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T19:03:39Z","timestamp":1750273419000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3276523"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,10,24]]},"references-count":51,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2018,10,24]]}},"alternative-id":["10.1145\/3276523"],"URL":"https:\/\/doi.org\/10.1145\/3276523","relation":{},"ISSN":["2475-1421"],"issn-type":[{"type":"electronic","value":"2475-1421"}],"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"}}]}}