Nothing Special   »   [go: up one dir, main page]

skip to main content
article

A brief history of just-in-time

Published: 01 June 2003 Publication History

Abstract

Software systems have been using "just-in-time" compilation (JIT) techniques since the 1960s. Broadly, JIT compilation includes any translation performed dynamically, after a program has started execution. We examine the motivation behind JIT compilation and constraints imposed on JIT compilation systems, and present a classification scheme for such systems. This classification emerges as we survey forty years of JIT work, from 1960--2000.

References

[1]
Abrams, P. S. 1970. An APL machine. Ph.D. dissertation. Stanford University, Stanford, CA. Also, Stanford Linear Accelerator Center (SLAC) Rep. 114.
[2]
Adl-Tabatabai, A.-R., Cierniak, M., Lueh, G.-Y., Parikh, V. M., and Stichnoth, J. M. 1998. Fast, effective code generation in a just-in-time Java compiler. In PLDI '98. 280--290.
[3]
Agesen, O. 1996. Concrete type inference: Delivering object-oriented applications. Ph.D. dissertation. Stanford University, Stanford, CA. Also Tech. Rep. SMLI TR-96-52, Sun Microsystems, Santa Clara, CA (Jan. 1996).
[4]
Agesen, O. 1997. Design and implementation of Pep, a Java just-in-time translator. Theor. Prac. Obj. Syst. 3, 2, 127--155.
[5]
Agesen, O. and Hölzle, U. 1995. Type feedback vs. concrete type inference: A comparison of optimization techniques for object-oriented languages. In Proceedings of OOPSLA '95. 91--107.
[6]
Altman, E., Gschwind, M., Sathaye, S., Kosonocky, S., Bright, A., Fritts, J., Ledak, P., Appenzeller, D., Agricola, C., and Filan, Z. 2000a. BOA: The architecture of a binary translation processor. Tech. Rep. RC 21665, IBM Research Division, Yorktown Heights, NY.
[7]
Altman, E. R., Kaeli, D., and Sheffer, Y. 2000b. Welcome to the opportunities of binary translation. IEEE Comput. 33, 3 (March), 40--45.
[8]
Armstrong, J. 1997. The development of Erlang. In Proceedings of ICFP '97 (1997). 196--203.
[9]
Auslander, J., Philipose, M., Chambers, C., Eggers, S. J., and Bershad, B. N. 1996. Fast, effective dynamic compilation. In Proceedings of PLDI '96. 149--159.
[10]
Azevedo, A., Nicolau, A., and Hummel, J. 1999. Java annotation-aware just-in-time (AJIT) compilation system. In Proceedings of JAVA '99. 142--151.
[11]
Bala, V., Duesterwald, E., and Banerjia, S. 1999. Transparent dynamic optimization. Tech. Rep. HPL-1999-77, Hewlett-Packard, Polo Alto, CA.
[12]
Bartlett, J. 1992. Familiar Quotations (16th ed.). J. Kaplan, Ed. Little, Brown and Company, Boston, MA.
[13]
Bell, J. R. 1973. Threaded code. Commun. ACM 16, 6 (June), 370--372.
[14]
Bentley, J. 1988. Little languages. In More Programming Pearls. Addison-Wesley, Reading, MA, 83--100.
[15]
Bik, A. J. C., Girkar, M., and Haghighat, M. R. 1999. Experiences with Java JIT optimization. In Innovative Architecture for Future Generation High-Performance Processors and Systems. IEEE Computer Society Press, Los Alamitos, CA, 87--94.
[16]
Brown, P. J. 1976. Throw-away compiling. Softw.---Pract. Exp. 6, 423--434.
[17]
Brown, P. J. 1990. Writing Interactive Compilers and Interpreters. Wiley, New York, NY.
[18]
Burger, R. G. 1997. Efficient compilation and profile-driven dynamic recompilation in scheme. Ph.D. dissertation, Indiana University, Bloomington, IN.
[19]
Burke, M. G., Choi, J.-D., Fink, S., Grove, D., Hind, M., Sarkar, V., Serrano, M. J., Sreedhar, V. C., and Srinivasan, H. 1999. The Jalape no dynamic optimizing compiler for Java. In Proceedings of JAVA '99. 129--141.
[20]
Cardelli, L. 1984. Compiling a functional language. In 1984 Symposium on Lisp and Functional Programming. 208--217.
[21]
Chambers, C. 1992. The design and implementation of the self compiler, an optimizing compiler for object-oriented programming languages. Ph.D. dissertation. Stanford University, Stanford, CA.
[22]
Chambers, C. and Ungar, D. 1989. Customization: optimizing compiler technology for Self, a dynamically-typed object-oriented programming language. In Proceedings of PLDI '89. 146--160.
[23]
Chambers, C. and Ungar, D. 1990. Iterative type analysis and extended message splitting: Optimizing dynamically-typed object-oriented programs. In Proceedings of PLDI '90. 150--164.
[24]
Chambers, C. and Ungar, D. 1991. Making pure object-oriented languages practical. In Proceedings of OOPSLA '91. 1--15.
[25]
Chambers, C., Ungar, D., and Lee, E. 1989. An efficient implementation of Self, a dynamically-typed object-oriented programming language based on prototypes. In Proceedings of OOPSLA '89. 49--70.
[26]
Chen, W.-K., Lerner, S., Chaiken, R., and Gillies, D. M. 2000. Mojo: a dynamic optimization system. In Proceedings of the Third ACM Workshop on Feedback-Directed and Dynamic Optimization (FDDO-3, Dec. 2000).
[27]
Cierniak, M. and Li, W. 1997. Briki: an optimizing Java compiler. In Proceedings of IEEE COMPCON '97. 179--184.
[28]
Cmelik, B. and Keppel, D. 1994. Shade: A fast instruction-set simulator for execution profiling. In Proceedings of the 1994 Conference on Measurement and Modeling of Computer Systems. 128--137.
[29]
Consel, C., Hornof, L., Marlet, R., Muller, G., Thibault, S., Volanschi, E.-N., Lawall, J., and Noyé, J. 1998. Tempo: Specializing systems applications and beyond. ACM Comput. Surv. 30, 3 (Sept.), 5pp.
[30]
Consel, C. and Noël, F. 1996. A general approach for run-time specialization and its application to C. In Proceedings of POPL '96. 145--156.
[31]
Cramer, T., Friedman, R., Miller, T., Seberger, D., Wilson, R., and Wolczko, M. 1997. Compiling Java just in time. IEEE Micro 17, 3 (May/June), 36--43.
[32]
Dakin, R. J. and Poole, P. C. 1973. A mixed code approach. The Comput. J. 16, 3, 219--222.
[33]
Dawson, J. L. 1973. Combining interpretive code with machine code. The Comput. J. 16, 3, 216--219.
[34]
Deaver, D., Gorton, R., and Rubin, N. 1999. Wiggins/Redstone: An on-line program specializer. In Proceedings of the IEEE Hot Chips XI Conference (Aug. 1999). IEEE Computer Society Press, Los, Alamitos, CA.
[35]
Deutsch, L. P. and Schiffman, A. M. 1984. Efficient implementation of the Smalltalk-80 system. In Proceedings of POPL '84. 297--302.
[36]
Dieckmann, S. and Hölzle, U. 1997. The space overhead of customization. Tech. Rep. TRCS 97-21. University of California, Santa Barbara, Santa Barbara, CA.
[37]
Ebcioğlu, K. and Altman, E. R. 1996. DAISY: Dynamic compilation for 100% architectural compatibility. Tech. Rep. RC 20538. IBM Research Division, Yorktown Heights, NY.
[38]
Ebcioğlu, K. and Altman, E. R. 1997. Daisy: Dynamic compilation for 100% architectural compatibility. In Proceedings of ISCA '97. 26--37.
[39]
Engler, D. R. 1996. VCODE: a retargetable, extensible, very fast dynamic code generation system. In Proceedings of PLDI '96. 160--170.
[40]
Engler, D. R. and Hsieh, W. C. 2000. DERIVE: A tool that automatically reverse-engineers instruction encodings. In Proceedings of the ACM SIGPLAN Workshop on Dynamic and Adaptive Compilation and Optimization (Dynamo '00). 12--22.
[41]
Engler, D. R., Hsieh, W. C., and Kaashoek, M. F. 1996. C: A language for high-level, efficient, and machine-independent dynamic code generation. In Proceedings of POPL '96. 131--144.
[42]
Engler, D. R. and Proebsting, T. A. 1994. DCG: An efficient, retargetable dynamic code generation system. In Proceedings of ASPLOS VI. 263--272.
[43]
Franz, M. 1994. Code-generation on-the-fly: A key to portable software. Ph.D. dissertation. ETH Zurich, Zurich, Switzerland.
[44]
Franz, M. and Kistler, T. 1997. Slim binaries. Commun. ACM 40, 12 (Dec.), 87--94.
[45]
Fraser, C. W. and Proebsting, T. A. 1999. Finite-state code generation. In Proceedings of PLDI '99. 270--280.
[46]
Gabriel, R. P. and Masinter, L. M. 1985. Performance and Evaluation of Lisp Systems. MIT Press, Cambridge, MA.
[47]
Geppert, L. and Perry, T. S. 2000. Transmeta's magic show. IEEE Spectr. 37, 5 (May), 26--33.
[48]
Goldberg, A. and Robson, D. 1985. Smalltalk-80: The Language and its Implementation. Addison-Wesley, Reading, MA.
[49]
Gorton, R. 2001. Private communication.
[50]
Gosling, J. 2001. Private communication.
[51]
Gschwind, M., Altman, E. R., Sathaye, S., Ledak, P., and Appenzeller, D. 2000. Dynamic and transparent binary translation. IEEE Comput. 33, 3, 54--59.
[52]
Hammond, J. 1977. BASIC---an evaluation of processing methods and a study of some programs. Softw.---Pract. Exp. 7, 697--711.
[53]
Hansen, G. J. 1974. Adaptive systems for the dynamic run-time optimization of programs. Ph.D. dissertation. Carnegie-Mellon University, Pittsburgh, PA.
[54]
Haygood, R. C. 1994. Native code compilation in SICStus Prolog. In Proceedings of the Eleventh International Conference on Logic Programming. 190--204.
[55]
Hennessy, J. L. and Patterson, D. A. 1996. Computer Architecture: A Quantitative Approach, 2nd ed. Morgan Kaufmann, San Francisco, CA.
[56]
Hölzle, U. 1994. Adaptive optimization for Self: Reconciling high performance with exploratory programming. Ph.D. dissertation. Carnegie-Mellon University, Pittsburgh, PA.
[57]
Hölzle, U. and Ungar, D. 1994a. Optimizing dynamically-dispatched calls with run-time type feedback. In Proceedings of PLDI '94. 326--336.
[58]
Hölzle, U. and Ungar, D. 1994b. A third-generation Self implementation: Reconciling responsiveness with performance. In Proceedings of OOPSLA '94. 229--243.
[59]
Ishizaki, K., Kawahito, M., Yasue, T., Takeuchi, M., Ogasawara, T., Suganuma, T., Onodera, T., Komatsu, H., and Nakatani, T. 1999. Design, implementation, and evaluation of optimizations in a just-in-time compiler. In Proceedings of JAVA '99. 119--128.
[60]
Johansson, E., Pettersson, M., and Sagonas, K. 2000. A high performance Erlang system. In Proceedings of PPDP '00. 32--43.
[61]
Johnston, R. L. 1977. The dynamic incremental compiler of APL&backslash;3000. In APL '79 Conference Proceedings. Published in APL Quote Quad 9, 4 (June), Pt. 1, 82--87.
[62]
Jones, N. D., Gomard, C. K., and Sestoft, P. 1993. Partial Evaluation and Automatic Program Generation. Prentice Hall, Englewood Cliffs, NJ.
[63]
Keppel, D. 1991. A portable interface for on-the-fly instruction space modification. In Proceedings of ASPLOS IV. 86--95.
[64]
Keppel, D., Eggers, S. J., and Henry, R. R. 1991. A case for runtime code generation. Tech. Rep. 91-11-04. Department of Computer Science and Engineering, University of Washington, Seattle, WA.
[65]
Kistler, T. 1997. Dynamic runtime optimization. In Proceedings of the Joint Modular Languages Conference (JMLC '97). 53--66.
[66]
Kistler, T. 1999. Continuous program optimization. Ph.D. dissertation. University of California, Irvine, Irvine, CA.
[67]
Kistler, T. 2001. Private communication.
[68]
Kistler, T. and Franz, M. 1999. The case for dynamic optimization: Improving memory-hierarchy performance by continuously adapting the internal storage layout of heap objects at run-time. Tech. Rep. 99-21 (May). University of California, Irvine, Irvine, CA. Revised September, 1999.
[69]
Klaiber, A. 2000. The technology behind Crusoe processors. Tech. Rep. (Jan.), Transmeta Corporation, Santa Clara, CA.
[70]
Knuth, D. E. 1971. An empirical study of Fortran programs. Softw.---Pract. Exp. 1, 105--133.
[71]
Krall, A. 1998. Efficient JavaVM just-in-time compilation. In Proceedings of the 1998 International Conference on Parallel Architectures and Compilation Techniques (PACT '98). 205--212.
[72]
Krall, A. and Grafl, R. 1997. A Java just-in-time compiler that transcends JavaVM's 32 bit barrier. In Proceedings of PPoPP '97 Workshop on Java for Science and Engineering.
[73]
Lee, P. and Leone, M. 1996. Optimizing ML with run-time code generation. In Proceedings of PLDI '96. 137--148.
[74]
Lee, S., Yang, B.-S., Kim, S., Park, S., Moon, S.-M., Ebcioğlu, K., and Altman, E. 2000. Efficient Java exception handling in just-in-time compilation. In Proceedings of Java 2000. 1--8.
[75]
Leone, M. and Dybvig, R. K. 1997. Dynamo: A staged compiler architecture for dynamic program optimization. Tech. Rep. 490. Computer Science Department, Indiana University, Bloomington, IN.
[76]
Leone, M. and Lee, P. 1994. Lightweight run-time code generation. In Proceedings of the ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation. 97--106.
[77]
Marlet, R., Consel, C., and Boinot, P. 1999. Efficient incremental run-time specialization for free. In PLDI '99. 281--292.
[78]
Mauriello, R. 2000. Private communication.
[79]
May, C. 1987. Mimic: A fast System/370 simulator. In Proceedings of the SIGPLAN '87 Symposium on Interpreters and Interpretive Techniques (June). ACM Press, New York, NY, 1--13.
[80]
McCarthy, J. 1960. Recursive functions of symbolic expressions and their computation by machine, part I. Commun. ACM 3, 4, 184--195.
[81]
McCarthy, J. 1981. History of LISP. In History of Programming Languages, R. L. Wexelblat, Ed. Academic Press, New York, NY, 173--185.
[82]
Miller, T. C. 1977. Tentative compilation: A design for an APL compiler. In APL '79 Conference Proceedings. Volume 9 Published in APL Quote Quad 9, 4 (June), Pt. 1, 88--95.
[83]
Mitchell, J. G. 1970. The design and construction of flexible and efficient interactive programming systems. Ph.D. dissertation. Carnegie-Mellon University, Pittsburgh, PA.
[84]
Mitchell, J. G. 2000. Private communication.
[85]
Mitchell, J. G., Perlis, A. J., and van Zoeren, H. R. 1968. LC2: A language for conversational computing. In Interactive Systems for Experimental Applied Mathematics, M. Klerer and J. Reinfelds, Eds. Academic Press, New York, NY. (Proceedings of 1967 ACM Symposium.)
[86]
Mock, M., Berryman, M., Chambers, C., and Eggers, S. J. 1999. Calpa: A tool for automating dynamic compilation. In Proceedings of the Second ACM Workshop on Feedback-Directed and Dynamic Optimization. 100--109.
[87]
Ng, T. S. and Cantoni, A. 1976. Run time interaction with FORTRAN using mixed code. The Comput. J. 19, 1, 91--92.
[88]
Pittman, T. 1987. Two-level hybrid interpreter/native code execution for combined space-time program efficiency. In Proceedings of the SIGPLAN Symposium on Interpreters and Interpretive Techniques. ACM Press, New York, NY, 150--152.
[89]
Piumarta, I. and Riccardi, F. 1998. Optimizing direct threaded code by selective inlining. In Proceedings of PLDI '98. 291--300.
[90]
Plezbert, M. P. and Cytron, R. K. 1997. Does "just in time" = "better late then never"? In Proceedings of POPL '97. 120--131.
[91]
Poletto, M., Engler, D. R., and Kaashoek, M. F. 1997. tcc: A system for fast, flexible, and high-level dynamic code generation. In Proceedings of PLDI '97. 109--121.
[92]
Ramsey, N. and Fernández, M. 1995. The New Jersey machine-code toolkit. In Proceedings of the 1995 USENIX Technical Conference. 289--302.
[93]
Rau, B. R. 1978. Levels of representation of programs and the architecture of universal host machines. In Proceedings of the 11th Annual Microprogramming Workshop (MICRO-11). 67--79.
[94]
Rémy, D., Leroy, X., and Weis, P. 1999. Objective Caml---a general purpose high-level programming language. ERCIM News 36, 29--30.
[95]
Rosenblum, M., Herrod, S. A., Witchel, E., and Gupta, A. 1995. Complete computer system simulation: The SimOS approach. IEEE Parall. Distrib. Tech. 3, 4 (Winter), 34--43.
[96]
Schroeder, S. C. and Vaughn, L. E. 1973. A high order language optimal execution processor: Fast Intent Recognition System (FIRST). In Proceedings of a Symposium on High-Level-Language Computer Architecture. Published in SIGPLAN 8, 11 (Nov.), 109--116.
[97]
Sebesta, R. W. 1999. Concepts of Programming Languages (4th ed.). Addison-Wesley, Reading, MA.
[98]
Smith, R. B. and Ungar, D. 1995. Programming as an experience: The inspiration for Self. In Proceedings of ECOOP '95.
[99]
Sun Microsystems. 2001. The Java HotSpot virtual machine. White paper. Sun Microsystems, Santa Clara, CA.
[100]
Thibault, S., Consel, C., Lawall, J. L., Marlet, R., and Muller, G. 2000. Static and dynamic program compilation by interpreter specialization. Higher-Order Symbol. Computat. 13, 161--178.
[101]
Thompson, K. 1968. Regular expression search algorithm. Commun. ACM 11, 6 (June), 419--422.
[102]
Transmeta Corporation. 2001. Code morphing software. Available online at http://www. transmeta.com/echnology/architecture/code_morphing.html. Transmeta Corporation, Santa Clara, CA.
[103]
Tyma, P. 1998. Why are we using Java again? Commun. ACM 41, 6, 38--42.
[104]
Ung, D. and Cifuentes, C. 2000. Machine-adaptable dynamic binary translation. In Proceedings of Dynamo '00. 41--51.
[105]
Ungar, D. and Smith, R. B. 1987. Self: The power of simplicity. In Proceedings of OOPSLA '87. 227--242.
[106]
Ungar, D., Smith, R. B., Chambers, C., and Hölzle, U. 1992. Object, message, and performance: How they coexist in Self. IEEE Comput. 25, 10 (Oct.), 53--64.
[107]
University of Michigan. 1966a. The System Loader. In University of Michigan Executive System for the IBM 7090 Computer, Vol. 1. University of Michigan, Ann Arbor, MI.
[108]
University of Michigan. 1966b. The "University of Michigan Assembly Program" ("UMAP"). In University of Michigan Executive System for the IBM 7090 Computer, Vol. 2. University of Michigan, Ann Arbor, MI.
[109]
van Dyke, E. J. 1977. A dynamic incremental compiler for an interpretive language. Hewlett-Packard J. 28, 11 (July), 17--24.
[110]
van Roy, P. 1994. The wonder years of sequential Prolog implementation. J. Logic Program. 19--20, 385--441.
[111]
Wickline, P., Lee, P., and Pfenning, F. 1998. Run-time code generation and Modal-ML. In Proceedings of PLDI '98. 224--235.
[112]
Wirth, N. and Gutknecht, J. 1989. The Oberon system. Softw.---Pract. Exp. 19, 9 (Sep.), 857--893.
[113]
Yang, B.-S., Moon, S.-M., Park, S., Lee, J., Lee, S., Park, J., Chung, Y. C., Kim, S., Ebcioğlu, K., and Altman, E. 1999. LaTTe: A Java VM just-in-time compiler with fast and efficient register allocation. In Proceedings of the International Conference on Parallel Architectures and Compilation Techniques. 128--138. IEEE Computer Society Press, Los Alamitos, CA.
[114]
Zheng, C. and Thompson, C. 2000. PA-RISC to IA-64: Transparent execution, no recompilation. IEEE Comput. 33, 3 (March), 47--52.

Cited By

View all
  • (2024)Supply chain coordination with inventory risk allocationJUSTC10.52396/JUSTC-2023-013454:8(0806)Online publication date: 2024
  • (2024)Julia for HPC: In Situ Data Analysis with Julia for Climate Simulations at Large ScaleJuliaCon Proceedings10.21105/jcon.001346:60(134)Online publication date: Jun-2024
  • (2024)Automatically Generating an Abstract Interpretation-Based Optimizer from a DSLCompanion Proceedings of the 2024 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity10.1145/3689491.3689968(28-30)Online publication date: 20-Oct-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Computing Surveys
ACM Computing Surveys  Volume 35, Issue 2
June 2003
125 pages
ISSN:0360-0300
EISSN:1557-7341
DOI:10.1145/857076
Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 June 2003
Published in CSUR Volume 35, Issue 2

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Just-in-time compilation
  2. dynamic compilation

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)451
  • Downloads (Last 6 weeks)91
Reflects downloads up to 14 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Supply chain coordination with inventory risk allocationJUSTC10.52396/JUSTC-2023-013454:8(0806)Online publication date: 2024
  • (2024)Julia for HPC: In Situ Data Analysis with Julia for Climate Simulations at Large ScaleJuliaCon Proceedings10.21105/jcon.001346:60(134)Online publication date: Jun-2024
  • (2024)Automatically Generating an Abstract Interpretation-Based Optimizer from a DSLCompanion Proceedings of the 2024 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity10.1145/3689491.3689968(28-30)Online publication date: 20-Oct-2024
  • (2024)On Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled CodeProceedings of the 16th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages10.1145/3689490.3690398(1-11)Online publication date: 17-Oct-2024
  • (2024)CARE: Cloudified Android With Optimized Rendering PlatformIEEE Transactions on Multimedia10.1109/TMM.2023.327430326(958-971)Online publication date: 1-Jan-2024
  • (2024)autoGEMM: Pushing the Limits of Irregular Matrix Multiplication on Arm ArchitecturesProceedings of the International Conference for High Performance Computing, Networking, Storage, and Analysis10.1109/SC41406.2024.00027(1-15)Online publication date: 17-Nov-2024
  • (2024)Traditional or drop-shipping? channel choice and product qualityInternational Journal of Production Research10.1080/00207543.2024.2316889(1-19)Online publication date: 16-Feb-2024
  • (2024)Gravity.jl: Fast and accurate gravitational lens modeling in JuliaAstronomy & Astrophysics10.1051/0004-6361/202451214690(A346)Online publication date: 22-Oct-2024
  • (2024)It is the time, are you sufficiently resilient?International Journal of Critical Infrastructure Protection10.1016/S1874-5482(24)00051-946(100710)Online publication date: Sep-2024
  • (2024)Working memory involvement in action planning does not include timing initiation structurePsychological Research10.1007/s00426-024-01986-188:5(1413-1425)Online publication date: 14-Jun-2024
  • Show More Cited By

View Options

Get Access

Login options

Full Access

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media