Специализатор JaSpe: BT-объекты и межпроцедурный аспект алгоритма анализа времен связывания
Автор: Адамович Игорь Алексеевич
Журнал: Программные системы: теория и приложения @programmnye-sistemy
Рубрика: Программное и аппаратное обеспечение распределенных и суперкомпьютерных систем
Статья в выпуске: 4 (51) т.12, 2021 года.
Бесплатный доступ
Статья посвящена частичным вычислениям, использующим offline-стратегию. Мощность этого метода решения задачи специализации программ во многом зависит от анализа времен связывания, который размечает программные конструкции как выполнимые либо невыполнимые на этапе специализации. Анализ времен связывания может использовать несколько вариантов разметки полей класса, зависящих от их использования в программе. Увеличивая число потенциальных оптимизаций, такая поливариантность по классам позволяет эффективно специализировать большее число программ. Наибольший эффект достигается на объектно./ориентированных языках, предполагающих создание большого количества различающихся по~ назначению экземпляров класса. Известные алгоритмы анализа времен связывания расширяются до поливариантности по классам и распрострают их на~объектно./ориентированный язык общего назначения. Новые методы реализованы в~виде набора плагинов для Eclipse IDE, составляющих специализатор JaSpe для программ на Java.
Современные языки программирования, статический анализ программ, преобразование программ, метавычисления, смешанные вычисления, интерактивная специализация
Короткий адрес: https://sciup.org/143178113
IDR: 143178113 | DOI: 10.25209/2079-3316-2021-12-4-3-32
Список литературы Специализатор JaSpe: BT-объекты и межпроцедурный аспект алгоритма анализа времен связывания
- V. F. Turchin. “The Concept of a Supercompiler,”, ACM Transactions on Programming Languages and Systems, 8:3 (1986), pp. 292-325.
- V. F. Turchin. “Supercompilation: Techniques and results”, Perspectives of System Informatics, Second International Andrei Ershov Memorial Conference (Akademgorodok, Novosibirsk, Russia, June 25–28, 1996), Lecture Notes in Computer Science, vol. 1181, eds. D. Bjørner, M. Broy, I. V. Pottosin, Springer, ISBN 978-3-540-49637-3, pp. 227-248.
- And. V. Klimov, Introduction to metacomputations and supercompilation, KomKniga, M., 2008, ISBN 978-5-484-01028-8, pp. 343–368 (In Russian).
- And. V. Klimov, S. A. Romanenko. “Supercompilation: fundamentals and basic concepts”, Preprinty IPM im. M.V. Keldysha, 2018, 111 (In Russian), 36 pp.
- N. D. Jones, C. K. Gomard, P. Sestoft, Partial Evaluation and Automatic Program Generation, Prentice-hall International Series in Computer Science, Prentice-Hall, 1993, ISBN 978-0130202499, 415 pp.
- Eclipse integrated develoment environment (IDE), Eclipse Foundation.
- N. H. Christensen, R. Glück. “Offline partial evaluation can be as accurate as online partial evaluation”, ACM Transactions on Programming Languages and Systems, 26:1 (2004), pp. 91–220.
- Yu. A. Klimov. Program specialization for object-oriented languages by partial evaluation, dis. . . . k.f.-m.n., Institut prikladnoy matematiki im. M.V. Keldysha RAN, M., 2009 (In Russian).
- Yu. A. Klimov. “Specializer CILPE: binding time analysis”, Preprinty IPM im. M.V. Keldysha, 2009, 007 (In Russian), 28 pp.
- Yu. A. Klimov. “SOOL: an object-oriented stacked-based language for specification and implementation of program specialization techniques”, Preprinty IPM im. M.V. Keldysha, 2008, 044 (In Russian), 32 pp.
- Yu. A. Klimov. “Program specialization for object-oriented languages by partial evaluation: approaches and problems”, Preprinty IPM im. M.V. Keldysha, 2008,012 (In Russian), 27 pp.
- Yu. A. Klimov. “Specializer CILPE: examples of object-oriented program specialization”, Preprinty IPM im. M.V. Keldysha, 2008, 030 (In Russian), 28 pp.
- Yu. A. Klimov. “Specializer CILPE: residual program generation”, Preprinty IPM im. M.V. Keldysha, 2009, 008 (In Russian), 26 pp.
- Yu. A. Klimov. “Specializer CILPE: correctness proof”, Preprinty IPM im. M.V. Keldysha, 2009, 033 (In Russian), 32 pp.
- Yu. A. Klimov. “Specializer CILPE: partial evaluator for object-oriented languages”, Program Systems: Theory and Applications : elektron. nauchn. zhurn., 2010, no. 3(3), pp. 13–36 (In Russian).
- I. A. Adamovich, Yu. A. Klimov. “The JaSpe specializer: an algorithm of intraprocedural binding time analysis in Java language subset”, Program Systems: Theory and Applications, 11:1(44) (2020), pp. 3-–29 (In Russian).
- J. Gosling, B. Joy, G. L. Steele, G. Bracha, A. Buckley. The Java® language specification, Java SE 8 Edition, Addison-Wesley Professional, 2014, ISBN 978-0-13-390069-9.
- Eclipse Java development tools (JDT), Eclipse Foundation. hUtRtpLs:↑://www.eclipse.org/jdt 13
- C. Consel, J. L. Lawall, A.-F. Le Meur. “A tour of Tempo: a program specializer for the C language”, Science of computer programming, 52:1–3 (2004), pp. 241-370.
- U.P. Schultz. Object-oriented software engineering using partial evaluation, Ph.D. dissertation, University of Rennes I, Rennes, France, 2000.
- A. Shali, W. R. Cook. “Hybrid partial evaluation”, Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications, OOPSLA ’11, Association for Computing Machinery, New York, NY, USA, 2011, ISBN 9781450309400, pp. 375–390.
- R. Ji, R. Bubel. “PE-KeY: A partial evaluator for Java programs”, Lecture Notes in Computer Science, eds. J. Derrick, S. Gnesi, D. Latella, H. Treharne, Springer, Berlin–Heidelberg, 2012, ISBN 978-3-642-30728-7, pp. 283–295.
- T. Würthinger, C. Wimmer, C. Humer, A. Wöß, L. Stadler, C. Seaton, G. Duboscq, D. Simon, M. Grimmer. “Practical partial evaluation for high-performance dynamic language runtimes”, SIGPLAN Not., 52:6 (June 2017), pp. 662–676.
- T. Würthinger, C. Wimmer, C. Humer, A. Wöß, L. Stadler, G. Duboscq, C. Humer, G. Richards, D. Simon, M. Wolczko. “One VM to rule them all”, Onward! 2013: Proceedings of the 2013 ACM international symposium on New ideas, new paradigms, and reflections on programming & software (October 2013), pp. 187–204.
- [25] C. Wimmer, C. Stancu, P. Hofer, V. Jovanovic, P. Wögerer, P. B. Kessler, O. Pliss, T. Würthinger. “Initialize once, start fast: application initialization at build time”, Proceedings of the ACM on Programming Languages. V. 3 (October 2019), 2019, 29 pp.
- F. Latifi, D. Leopoldseder, C. Wimmer, H. Mössenb¨ck. “CompGen: generation of fast JIT compilers in a multi-language VM”, Proceedings of the 17th ACMSIGPLAN International Symposium on Dynamic Languages, DLS ’21 (October 2021), 2021, pp. 35–47.
- Y. Futamura. “Partial evaluation of computation process — an approach to a compiler-compiler”, Higher-Order and Symbolic Computation, 12:4 (1999), pp. 381–391.
- A. Tanaka. “Coq to C translation with partial evaluation”, Proceedings of the 2021 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, PEPM 2021 (January 2021), pp. 14–31.
- A. Müller, B. Schmidt, A. Hildebrandt, R. Membarth, R. Leißa, M. Kruse, S. Hack. “AnySeq: A high performance sequence alignment library based on partial evaluation”, IEEE International Parallel and Distributed Processing Symposium (IPDPS) (18–22 May 2020), pp. 1030–1040.
- A. Pérard-Gayot, R. Membarth, R. Leißa, S. Hack, P. Slusallek. “Rodent: generating renderers without writing a generator”, ACM Transactions on Graphics, 38:4 (2019), 40, 12 pp.
- A. Tyurin, D. Berezun, S. Grigorev. “Optimizing GPU programs by partial evaluation”, PPoPP ’20: Proceedings of the 25th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (February 2020), 2020, pp. 431–432.
- R. Leißa, K. Boesche, S. Hack, A. Pérard-Gayot, R. Membarth, P. Slusallek, A. M¨ller, B. Schmidt. “AnyDSL: a partial evaluation framework for programming high-performance libraries”, Proceedings of the ACM on Programming Languages, 2:OOPSLA (November 2018), 119, 30 pp.