{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:48:24Z","timestamp":1750308504324,"version":"3.41.0"},"reference-count":50,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2022,9,16]],"date-time":"2022-09-16T00:00:00Z","timestamp":1663286400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"name":"DSbD InnovateUK Soteria","award":["75243"],"award-info":[{"award-number":["75243"]}]},{"name":"EU Horizon 2020 ACTiCLOUD","award":["732366"],"award-info":[{"award-number":["732366"]}]},{"name":"E2Data","award":["780245"],"award-info":[{"award-number":["780245"]}]},{"name":"EPSRC PAMELA programme"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Archit. Code Optim."],"published-print":{"date-parts":[[2022,12,31]]},"abstract":"<jats:p>The increase in computational capability of low-power Arm architectures has seen them diversify from their more traditional domain of portable battery powered devices into data center servers, personal computers, and even Supercomputers. Thus, managed languages (Java, Javascript, etc.) that require a managed runtime environment (MRE) need to be ported to the Arm architecture, requiring an understanding of different design tradeoffs.<\/jats:p>\n          <jats:p>This article studies how the lack of strong hardware support for Self Modifying Code (SMC) in low-power architectures (e.g., absence of cache coherence between instruction cache and data caches), affects Just-In-Time (JIT) compilation and runtime behavior in MREs. Specifically, we focus on the implementation and treatment of call-sites, that must maintain code consistency in the face of concurrent execution and modification to redirect control (patching) by the MRE. The lack of coherence, is compounded with the maximum distance (reach of) a call-site can jump to as the reach is more constrained (smaller distance) in Arm when compared with Intel\/AMD. We present four different robust implementations for call-sites and discuss their advantages and disadvantages in the absence of strong hardware support for SMC. Finally, we evaluate each approach using a microbenchmark, further evaluating the best three techniques using three JVM benchmark suites and the open source MaxineVM showcasing performance differences up to 12%. Based on these observations, we propose extending code-cache partitioning strategies for JIT compiled code to encourage more efficient local branching for architectures with limited direct branch ranges.<\/jats:p>","DOI":"10.1145\/3546568","type":"journal-article","created":{"date-parts":[[2022,7,6]],"date-time":"2022-07-06T09:32:38Z","timestamp":1657099958000},"page":"1-23","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":3,"title":["Just-In-Time Compilation on ARM\u2014A Closer Look at Call-Site Code Consistency"],"prefix":"10.1145","volume":"19","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-6992-2746","authenticated-orcid":false,"given":"Tim","family":"Hartley","sequence":"first","affiliation":[{"name":"The University of Manchester, Oxford Road, Manchester, UK"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-5554-7538","authenticated-orcid":false,"given":"Foivos S.","family":"Zakkak","sequence":"additional","affiliation":[{"name":"Red Hat Inc., Farnborough, UK"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-3489-5717","authenticated-orcid":false,"given":"Andy","family":"Nisbet","sequence":"additional","affiliation":[{"name":"The University of Manchester, Oxford Road, Manchester, UK"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-8146-3503","authenticated-orcid":false,"given":"Christos","family":"Kotselidis","sequence":"additional","affiliation":[{"name":"The University of Manchester, Oxford Road, Manchester, UK"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-0842-1083","authenticated-orcid":false,"given":"Mikel","family":"Luj\u00e1n","sequence":"additional","affiliation":[{"name":"The University of Manchester, Oxford Road, Manchester, UK"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2022,9,16]]},"reference":[{"key":"e_1_3_2_2_2","first-page":"1","volume-title":"Information Security Theory and Practice. Security and Privacy of Mobile Devices in Wireless Communication","author":"Amarilli Antoine","year":"2011","unstructured":"Antoine Amarilli, Sascha M\u00fcller, David Naccache, Daniel Page, Pablo Rauzy, and Michael Tunstall. 2011. Can code polymorphism limit information leakage? In Information Security Theory and Practice. Security and Privacy of Mobile Devices in Wireless Communication. Claudio A. Ardagna and Jianying Zhou (Eds.), Springer, Berlin, 1\u201321."},{"key":"e_1_3_2_3_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-74124-4_16"},{"key":"e_1_3_2_4_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-74124-4_16"},{"key":"e_1_3_2_5_2","unstructured":"ARM. 2019. Arm Architecture Reference Manual Armv8."},{"volume-title":"Arm Neoverse N1 CPU","year":"2019","key":"e_1_3_2_6_2","unstructured":"ARM. 2019. Arm Neoverse N1 CPU. Technical Report."},{"key":"e_1_3_2_7_2","unstructured":"ARM. 2019. Neoverse E1. Retrieved June 2022 from https:\/\/www.arm.com\/products\/silicon-ip-cpu\/neoverse\/neoverse-e1."},{"volume-title":"Arm Neoverse N1 Core Software Optimization Guide","year":"2020","key":"e_1_3_2_8_2","unstructured":"ARM. 2020. Arm Neoverse N1 Core Software Optimization Guide. Technical Report."},{"volume-title":"Arm Neoverse N1 Core Technical Reference Manual","year":"2020","key":"e_1_3_2_9_2","unstructured":"ARM. 2020. Arm Neoverse N1 Core Technical Reference Manual. Technical Report."},{"volume-title":"Arm Neoverse N1 (MP050) Software Developer Errata Notice","year":"2020","key":"e_1_3_2_10_2","unstructured":"ARM. 2020. Arm Neoverse N1 (MP050) Software Developer Errata Notice. Technical Report."},{"key":"e_1_3_2_11_2","unstructured":"Azul Systems. 2019. Zulu Embedded Open Source Java for Embedded Systems. Retrieved June 2022 from https:\/\/www.azul.com\/products\/zulu-embedded\/."},{"key":"e_1_3_2_12_2","doi-asserted-by":"publisher","DOI":"10.1145\/1250734.1250743"},{"key":"e_1_3_2_13_2","doi-asserted-by":"publisher","DOI":"10.1145\/3192975.3193016"},{"key":"e_1_3_2_14_2","doi-asserted-by":"publisher","DOI":"10.1145\/3321705.3329819"},{"key":"e_1_3_2_15_2","volume-title":"AMD64 Architecture Programmer\u2019s Manual, Volume 1: Application Programming","author":"Devices Advanced Micro","year":"2020","unstructured":"Advanced Micro Devices. 2020. AMD64 Architecture Programmer\u2019s Manual, Volume 1: Application Programming."},{"key":"e_1_3_2_16_2","doi-asserted-by":"publisher","DOI":"10.1111\/j.2517-6161.1954.tb00159.x"},{"key":"e_1_3_2_17_2","doi-asserted-by":"publisher","DOI":"10.5555\/238171"},{"key":"e_1_3_2_18_2","doi-asserted-by":"publisher","DOI":"10.1109\/HOTCHIPS.2012.7476502"},{"key":"e_1_3_2_19_2","unstructured":"Andrew Haley and Andrew Dinn. FOSDEM 2014. OpenJDK on AArch64 Update. Retrieved June 2022 from https:\/\/aph.fedorapeople.org\/Aarch64-fosdem-2014.pdf."},{"key":"e_1_3_2_20_2","doi-asserted-by":"publisher","DOI":"10.1145\/3357390.3361027"},{"key":"e_1_3_2_21_2","doi-asserted-by":"publisher","DOI":"10.1145\/2647508.2647513"},{"key":"e_1_3_2_22_2","doi-asserted-by":"publisher","DOI":"10.1145\/2093157.2093176"},{"key":"e_1_3_2_23_2","volume-title":"Computer Architecture: A Quantitative Approach (5 ed.)","author":"Hennessy John L.","year":"2012","unstructured":"John L. Hennessy and David A. Patterson. 2012. Computer Architecture: A Quantitative Approach (5 ed.). Morgan Kaufmann, Amsterdam."},{"key":"e_1_3_2_24_2","doi-asserted-by":"publisher","DOI":"10.1145\/143095.143114"},{"key":"e_1_3_2_25_2","doi-asserted-by":"publisher","DOI":"10.1145\/2508859.2516675"},{"key":"e_1_3_2_26_2","unstructured":"Intel. 2015. Method and Apparatus for Providing Hardware Support for Self-modifying Code PCT\/US2015\/030411. Retrieved from https:\/\/patents.google.com\/patent\/EP3143496A1\/en."},{"volume-title":"Intel 64 and IA-32 Architectures Software Developer\u2019s Manual, Volume 3A: System Programming Guide, Part 1","year":"2022","key":"e_1_3_2_27_2","unstructured":"Intel. 2022. Intel 64 and IA-32 Architectures Software Developer\u2019s Manual, Volume 3A: System Programming Guide, Part 1."},{"key":"e_1_3_2_28_2","unstructured":"Intel. 2019. Intel 64 and IA-32 Architectures Software Developer\u2019s Manual Volume 2. Retrieved June 2022 from https:\/\/www.intel.com\/content\/dam\/www\/public\/us\/en\/documents\/manuals\/64-ia-32-architectures-software-developer-instruction-set-reference-manual-325383.pdf."},{"key":"e_1_3_2_29_2","unstructured":"JamaicaVM. 2019. A Hard Realtime Java Bytecode-based Virtual Machine. Retrieved August 2019 from https:\/\/www.aicas.com\/cms\/en\/JamaicaVM."},{"key":"e_1_3_2_30_2","doi-asserted-by":"publisher","DOI":"10.1145\/3050748.3050764"},{"key":"e_1_3_2_31_2","doi-asserted-by":"publisher","DOI":"10.1109\/ISPASS.2016.7482072"},{"key":"e_1_3_2_32_2","doi-asserted-by":"publisher","DOI":"10.14778\/2752939.2752945"},{"key":"e_1_3_2_33_2","unstructured":"Arm Ltd.Cortex-A53 \u2013 Arm. Retrieved November 2020 from https:\/\/www.arm.com\/products\/silicon-ip-cpu\/cortex-a\/cortex-a53."},{"key":"e_1_3_2_34_2","doi-asserted-by":"publisher","DOI":"10.1016\/j.cose.2011.08.007"},{"key":"e_1_3_2_35_2","unstructured":"MicroPython. 2019. Python for Microcontrollers. Retrieved June 2022 from https:\/\/micropython.org."},{"key":"e_1_3_2_36_2","doi-asserted-by":"publisher","DOI":"10.1145\/1706299.1706313"},{"key":"e_1_3_2_37_2","first-page":"1","volume-title":"Proceedings of the Java Virtual Machine Research and Technology Symposium","volume":"1","author":"Paleczny Michael","year":"2001","unstructured":"Michael Paleczny, Christopher Vick, and Cliff Click. 2001. The java hotspottm server compiler. In Proceedings of the Java Virtual Machine Research and Technology Symposium. Vol. 1, 1\u201312."},{"key":"e_1_3_2_38_2","doi-asserted-by":"publisher","DOI":"10.1109\/MM.2020.2972222"},{"key":"e_1_3_2_39_2","doi-asserted-by":"publisher","DOI":"10.1145\/2592791.2592796"},{"key":"e_1_3_2_40_2","unstructured":"Roldan Pozo and Bruce Miller. 2004. Java SciMark 2.0. Retrieved November 2020 from https:\/\/math.nist.gov\/scimark2\/index.html."},{"key":"e_1_3_2_41_2","doi-asserted-by":"crossref","unstructured":"Aleksandar Prokopec Andrea Ros\u00e1 David Leopoldseder Gilles Duboscq Petr T\u016fma Martin Studener Lubom\u00edr Bulej Yudi Zheng Alex Villaz\u00f3n Doug Simon Thomas Wuerthinger and Walter Binder. 2019. On evaluating the Renaissance benchmarking suite: Variety performance and complexity. arxiv:1903.10267. Retrieved from https:\/\/arxiv.org\/abs\/1903.10267.","DOI":"10.1145\/3325986"},{"key":"e_1_3_2_42_2","doi-asserted-by":"publisher","DOI":"10.1016\/j.jocs.2013.01.002"},{"key":"e_1_3_2_43_2","doi-asserted-by":"publisher","DOI":"10.5555\/320080.320085"},{"key":"e_1_3_2_44_2","doi-asserted-by":"publisher","DOI":"10.1145\/3016078.2851150"},{"key":"e_1_3_2_45_2","unstructured":"John Rose. 2001. JDK-4506997. Retrieved June 2022 from https:\/\/bugs.openjdk.java.net\/browse\/JDK-4506997."},{"key":"e_1_3_2_46_2","doi-asserted-by":"publisher","DOI":"10.1145\/1785414.1785443"},{"key":"e_1_3_2_47_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-44914-8_23"},{"key":"e_1_3_2_48_2","doi-asserted-by":"publisher","DOI":"10.1145\/2465529.2465553"},{"key":"e_1_3_2_49_2","doi-asserted-by":"crossref","first-page":"740","DOI":"10.1007\/978-3-642-34961-4_44","volume-title":"Advances in Cryptology \u2013 ASIACRYPT 2012","author":"Veyrat-Charvillon Nicolas","year":"2012","unstructured":"Nicolas Veyrat-Charvillon, Marcel Medwed, St\u00e9phanie Kerckhof, and Fran\u00e7ois-Xavier Standaert. 2012. Shuffling against side-channel attacks: A comprehensive study with cautionary note. In Advances in Cryptology \u2013 ASIACRYPT 2012. Xiaoyun Wang and Kazue Sako (Eds.), Springer, Berlin, 740\u2013757."},{"key":"e_1_3_2_50_2","unstructured":"WikiChip. 2018. X-Gene 1 APM883408-X1 - AppliedMicro. Retrieved June 2022 from https:\/\/en.wikichip.org\/wiki\/apm\/x-gene\/apm883408-x1."},{"key":"e_1_3_2_51_2","doi-asserted-by":"publisher","DOI":"10.1145\/2400682.2400689"}],"container-title":["ACM Transactions on Architecture and Code Optimization"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3546568","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3546568","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T18:44:02Z","timestamp":1750272242000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3546568"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2022,9,16]]},"references-count":50,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2022,12,31]]}},"alternative-id":["10.1145\/3546568"],"URL":"https:\/\/doi.org\/10.1145\/3546568","relation":{},"ISSN":["1544-3566","1544-3973"],"issn-type":[{"type":"print","value":"1544-3566"},{"type":"electronic","value":"1544-3973"}],"subject":[],"published":{"date-parts":[[2022,9,16]]},"assertion":[{"value":"2021-12-16","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2022-06-13","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2022-09-16","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}