RU2011114807A - Кэширование генерируемого во время выполнения кода - Google Patents
Кэширование генерируемого во время выполнения кода Download PDFInfo
- Publication number
- RU2011114807A RU2011114807A RU2011114807/08A RU2011114807A RU2011114807A RU 2011114807 A RU2011114807 A RU 2011114807A RU 2011114807/08 A RU2011114807/08 A RU 2011114807/08A RU 2011114807 A RU2011114807 A RU 2011114807A RU 2011114807 A RU2011114807 A RU 2011114807A
- Authority
- RU
- Russia
- Prior art keywords
- code
- cache
- runtime
- generated
- generation
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
Abstract
1. Система (100), которая кэширует генерируемый во время выполнения код, содержащая: ! компонент (120), выполняющийся в среде управляемого кода на компьютере, при этом компонент кэширует объект (116, 111) в первом кэше (109, 108) или во втором кэше (109, 118), при этом кэшируемый объект (116, 111) содержит генерируемый во время выполнения код, при этом генерируемый во время выполнения код генерируется динамически генерирующим код объектом, причем динамически генерирующий код объект не изменяет глобальное состояние, в которой кэшируемый объект (116, 111) извлекается из первого кэша (109, 118) или второго кэша (109, 118) при последующих выполнениях кэшированного объекта (116, 111), пропуская, по меньшей мере, одну фазу генерации кода, при этом пропущенная, по меньшей мере, одна фаза генерации кода содержит генерацию промежуточного байт-кода или генерацию собственного двоичного кода. ! 2. Система по п.1, в которой первый кэш содержит кэш, который хранит промежуточный байт-код, представляющий генерируемый во время выполнения код, и в которой, по меньшей мере, одна пропускаемая фаза генерации кода содержит генерацию промежуточного байт-кода для генерируемого во время выполнения кода. ! 3. Система по п.1, в которой второй кэш содержит кэш, который хранит собственный двоичный код, и в которой, по меньшей мере, одна пропущенная фаза генерации кода содержит генерацию собственного двоичного кода для генерируемого во время выполнения кода. ! 4. Система по п.1, в которой первый кэш является кэшем исходной сборки и в которой, по меньшей мере, одна пропущенная фаза генерации содержит генерацию промежуточного байт-кода для генерируемого во время выполнения кода, или гене�
Claims (15)
1. Система (100), которая кэширует генерируемый во время выполнения код, содержащая:
компонент (120), выполняющийся в среде управляемого кода на компьютере, при этом компонент кэширует объект (116, 111) в первом кэше (109, 108) или во втором кэше (109, 118), при этом кэшируемый объект (116, 111) содержит генерируемый во время выполнения код, при этом генерируемый во время выполнения код генерируется динамически генерирующим код объектом, причем динамически генерирующий код объект не изменяет глобальное состояние, в которой кэшируемый объект (116, 111) извлекается из первого кэша (109, 118) или второго кэша (109, 118) при последующих выполнениях кэшированного объекта (116, 111), пропуская, по меньшей мере, одну фазу генерации кода, при этом пропущенная, по меньшей мере, одна фаза генерации кода содержит генерацию промежуточного байт-кода или генерацию собственного двоичного кода.
2. Система по п.1, в которой первый кэш содержит кэш, который хранит промежуточный байт-код, представляющий генерируемый во время выполнения код, и в которой, по меньшей мере, одна пропускаемая фаза генерации кода содержит генерацию промежуточного байт-кода для генерируемого во время выполнения кода.
3. Система по п.1, в которой второй кэш содержит кэш, который хранит собственный двоичный код, и в которой, по меньшей мере, одна пропущенная фаза генерации кода содержит генерацию собственного двоичного кода для генерируемого во время выполнения кода.
4. Система по п.1, в которой первый кэш является кэшем исходной сборки и в которой, по меньшей мере, одна пропущенная фаза генерации содержит генерацию промежуточного байт-кода для генерируемого во время выполнения кода, или генерацию собственного двоичного кода для генерируемого во время выполнения кода.
5. Система по п.1, в которой промежуточный байт-код для генерируемого во время выполнения кода извлекается по идентификатору, состоящему из имени, ассоциированному с динамически генерирующим код объектом, по меньшей мере, одного аргумента, передаваемого к динамически генерирующему код объекту, и указателя версий для динамически генерирующего код объекта.
6. Способ кэширования генерируемого во время выполнения кода, содержащий этапы на которых:
вычисляют идентификатор (304) для объекта, содержащего генерируемый во время выполнения код, сгенерированный чисто функциональным генерирующим во время выполнения код объектом, при этом объект сгенерированного во время выполнения кода содержит промежуточный байт-код, созданный механизмом порожденного отражения, при этом вычисленный идентификатор содержит зависящие от контекста выполнения характеристики генерируемого во время выполнения кода;
сохраняют объект в первом кэше, снабженным ключом на основании вычисленного идентификатора, при первом выполнении объекта (320);
возвращают (322) сохраненный объект в ответ на второе выполнение сохраненного объекта, в котором генерацию промежуточного байт-кода для сохраненного объекта пропускают для второго выполнения сохраненного объекта.
7. Способ по п.6, дополнительно содержащий этапы на которых:
генерируют собственный двоичный код для генерируемого во время выполнения кода из промежуточного байт-кода для сохраненного объекта.
8. Способ по п.7, дополнительно содержащий этапы на которых:
кэшируют сгенерированный собственный двоичный код в кэше собственного двоичного кода, содержащий второй кэш.
9. Способ по п.6, в котором первый кэш или второй кэш является исходной сборкой, содержащей сохраненный объект.
10. Способ по п.6, в котором вычисленный идентификатор содержит идентификатор, состоящий из: имени, ассоциированного с чисто функциональным генерирующим код во время выполнения объектом, по меньшей мере, одного аргумента, переданного к чисто функциональному генерирующему во время выполнения код объекту, и указателя версии для чисто функционального генерирующего во время выполнения код объекта.
11. Машиночитаемый запоминающий носитель, содержащий машиноисполняемые инструкции, которые, когда выполняются, побуждают управляемую вычислительную среду:
кэшировать объект в первом кэше или во втором кэше, при этом объект содержит генерируемый во время выполнения код, генерируемый генерирующим код во время выполнения объектом, который не изменяет глобальное состояние, причем кэшированный объект извлекается при последующем выполнении объекта, пропуская, по меньшей мере, одну фазу генерации кода в последующих выполнениях.
12. Машиночитаемый запоминающий носитель по п.11, содержащий дополнительные машиновыполняемые инструкции, которые когда выполняются, побуждают вычислительную среду:
пропускать генерацию промежуточного байт-кода для генерируемого во время выполнения кода для последующих выполнений кэшированного объекта.
13. Машиночитаемый запоминающий носитель по п.11, содержащий дополнительные машиновыполняемые инструкции, которые, когда выполняются, побуждают вычислительную среду:
пропускать генерацию собственного двоичного кода из промежуточного байт-кода для кода, генерируемого во время выполнения, для последующих выполнений кэшированного объекта.
14. Машиночитаемый запоминающий носитель по п.13, содержащий дополнительные машиновыполняемые инструкции, которые когда выполняются, побуждают вычислительную среду:
кэшировать собственный двоичный код или промежуточный байт-код в исходной сборке кэшированного объекта.
15. Машиночитаемый запоминающий носитель по п.13, содержащий дополнительные машинновыполняемые инструкции, которые когда выполняются, побуждают вычислительную среду:
предоставлять объект с конкретной идентификацией, использующей зависящие от выполнения характеристики кэшируемого объекта; и
извлекать кэшированный объект из первого кэша или второго кэша, снабженного ключом по конкретной идентификации.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/251,497 US9250938B2 (en) | 2008-10-15 | 2008-10-15 | Caching runtime generated code |
US12/251,497 | 2008-10-15 | ||
PCT/US2009/059125 WO2010045027A2 (en) | 2008-10-15 | 2009-09-30 | Caching runtime generated code |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2011114807A true RU2011114807A (ru) | 2012-10-20 |
RU2520344C2 RU2520344C2 (ru) | 2014-06-20 |
Family
ID=42100058
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2011114807/08A RU2520344C2 (ru) | 2008-10-15 | 2009-09-30 | Кэширование генерируемого во время выполнения кода |
Country Status (7)
Country | Link |
---|---|
US (1) | US9250938B2 (ru) |
EP (1) | EP2340481B1 (ru) |
JP (1) | JP5518085B2 (ru) |
CN (1) | CN102187313B (ru) |
BR (1) | BRPI0919132A2 (ru) |
RU (1) | RU2520344C2 (ru) |
WO (1) | WO2010045027A2 (ru) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8578056B1 (en) * | 2008-03-31 | 2013-11-05 | Symantec Corporation | Optimized application streaming for just in time compiled components |
US20100306751A1 (en) * | 2009-05-28 | 2010-12-02 | James Paul Schneider | Execution result caching and searching |
US9117071B2 (en) | 2009-06-03 | 2015-08-25 | Apple Inc. | Methods and apparatuses for secure compilation |
US8677329B2 (en) * | 2009-06-03 | 2014-03-18 | Apple Inc. | Methods and apparatuses for a compiler server |
US9104484B2 (en) | 2010-04-21 | 2015-08-11 | Salesforce.Com, Inc. | Methods and systems for evaluating bytecode in an on-demand service environment including translation of apex to bytecode |
US8924922B2 (en) * | 2010-06-14 | 2014-12-30 | Microsoft Corporation | Pre-compiling hosted managed code |
US9152437B2 (en) * | 2010-10-28 | 2015-10-06 | Hewlett-Packard Development Company, L.P. | Dynamically installing image processing |
US20120110558A1 (en) * | 2010-10-29 | 2012-05-03 | Microsoft Corporation | Customized binaries on-the-fly |
US9584877B2 (en) * | 2011-06-16 | 2017-02-28 | Microsoft Technology Licensing, Llc | Light-weight validation of native images |
US9552201B2 (en) * | 2011-08-31 | 2017-01-24 | Avaya Inc. | System and method for incremental software installation |
US8972952B2 (en) | 2012-02-03 | 2015-03-03 | Apple Inc. | Tracer based runtime optimization for dynamic programming languages |
US9223599B1 (en) * | 2012-03-30 | 2015-12-29 | Zynga Inc. | Client-side server for client-side scripting languages |
US9104449B2 (en) * | 2012-06-18 | 2015-08-11 | Google Inc. | Optimized execution of dynamic languages |
US9116713B1 (en) * | 2013-03-12 | 2015-08-25 | Emc Corporation | System and method for expression evaluation in a distributed networking environment |
CN103412754A (zh) * | 2013-08-15 | 2013-11-27 | 优视科技有限公司 | 动态语言代码执行方法和装置 |
US9710388B2 (en) * | 2014-01-23 | 2017-07-18 | Qualcomm Incorporated | Hardware acceleration for inline caches in dynamic languages |
KR101559651B1 (ko) | 2014-01-28 | 2015-10-13 | 한양대학교 산학협력단 | 동적 분석 방법 및 장치 |
US9389890B2 (en) | 2014-03-27 | 2016-07-12 | Microsoft Technology Licensing, Llc | Hierarchical directives-based management of runtime behaviors |
US9292270B2 (en) | 2014-03-27 | 2016-03-22 | Microsoft Technology Licensing, Llc | Supporting dynamic behavior in statically compiled programs |
US9952843B2 (en) * | 2014-05-15 | 2018-04-24 | Nvidia Corporation | Partial program specialization at runtime |
JP6379654B2 (ja) * | 2014-05-15 | 2018-08-29 | 富士通株式会社 | 処理実行プログラム、処理実行方法、及び情報処理装置 |
US10025571B1 (en) | 2014-07-17 | 2018-07-17 | Google Llc | Optimized execution of dynamic languages |
CN105786465A (zh) * | 2014-12-23 | 2016-07-20 | 远光软件股份有限公司 | 一种脚本语言执行方法及装置 |
RU2628920C2 (ru) * | 2015-03-31 | 2017-08-22 | Закрытое акционерное общество "Лаборатория Касперского" | Способ обнаружения вредоносных сборок |
RU2635271C2 (ru) * | 2015-03-31 | 2017-11-09 | Закрытое акционерное общество "Лаборатория Касперского" | Способ категоризации сборок и зависимых образов |
FR3038086B1 (fr) * | 2015-06-29 | 2018-08-10 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Procede d'execution d'un programme d'ordinateur comportant une fonction parametree |
FR3038087B1 (fr) * | 2015-06-29 | 2018-08-10 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Procede d'execution d'un programme d'ordinateur comportant une fonction parametree |
US9367686B1 (en) * | 2015-07-21 | 2016-06-14 | AO Kaspersky Lab | System and method for antivirus checking of native images of software assemblies |
US20170083298A1 (en) * | 2015-09-23 | 2017-03-23 | Microsoft Technology Licensing, Llc | Resilient format for distribution of ahead-of-time compiled code components |
US10303498B2 (en) * | 2015-10-01 | 2019-05-28 | Microsoft Technology Licensing, Llc | Performance optimizations for emulators |
US9910646B2 (en) * | 2015-12-26 | 2018-03-06 | Intel Corporation | Technologies for native code invocation using binary analysis |
US10459727B2 (en) * | 2015-12-31 | 2019-10-29 | Microsoft Technology Licensing, Llc | Loop code processor optimizations |
CN105893031B (zh) * | 2016-03-28 | 2019-12-24 | 广州华多网络科技有限公司 | 一种缓存操作实现方法、业务层方法的调用方法及装置 |
US10521208B2 (en) * | 2017-06-23 | 2019-12-31 | Microsoft Technology Licensing, Llc. | Differentiated static analysis for dynamic code optimization |
EP3428746B1 (en) * | 2017-07-14 | 2021-06-02 | Siemens Aktiengesellschaft | A method and apparatus for providing an adaptive self-learning control program for deployment on a target field device |
CN112183712A (zh) * | 2019-07-03 | 2021-01-05 | 安徽寒武纪信息科技有限公司 | 深度学习算法的编译方法、装置及相关产品 |
US11150915B2 (en) | 2019-09-13 | 2021-10-19 | International Business Machines Corporation | Deferred bytecode class verification in managed runtime environments |
US11403075B2 (en) | 2019-11-25 | 2022-08-02 | International Business Machines Corporation | Bytecode verification using class relationship caching |
US11231918B1 (en) | 2020-08-31 | 2022-01-25 | Microsoft Technologly Licensing, LLC | Native emulation compatible application binary interface for supporting emulation of foreign code |
US11403100B2 (en) | 2020-08-31 | 2022-08-02 | Microsoft Technology Licensing, Llc | Dual architecture function pointers having consistent reference addresses |
US11042422B1 (en) | 2020-08-31 | 2021-06-22 | Microsoft Technology Licensing, Llc | Hybrid binaries supporting code stream folding |
CN112596770B (zh) * | 2020-12-24 | 2023-08-18 | 潍柴动力股份有限公司 | 一种数据处理方法、装置、电子设备和存储介质 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6427234B1 (en) * | 1998-06-11 | 2002-07-30 | University Of Washington | System and method for performing selective dynamic compilation using run-time information |
AU2002220999A1 (en) * | 2000-11-22 | 2002-06-03 | Zend Technologies Ltd. | Method and apparatus for dynamic shared-memory caching of scripting engine product |
CA2349905A1 (en) | 2001-06-07 | 2002-12-07 | Ibm Canada Limited-Ibm Canada Limitee | System and method of mapping between software objects and structured language element based documents |
JP3808755B2 (ja) * | 2001-11-07 | 2006-08-16 | 富士通株式会社 | Jitコンパイラを備えた仮想計算機 |
EP1313012A1 (en) * | 2001-11-15 | 2003-05-21 | Texas Instruments France | Java DSP acceleration by byte-code optimization |
US6947955B2 (en) * | 2002-09-23 | 2005-09-20 | International Business Machines Corporation | Run-time augmentation of object code to facilitate object data caching in an application server |
US20040123278A1 (en) * | 2002-12-23 | 2004-06-24 | Murthi Nanja | Persistent cache apparatus and methods |
US20040186862A1 (en) * | 2003-03-18 | 2004-09-23 | Garthwaite Alexander T. | Parallel caching of insertions into remembered-sets |
US7219329B2 (en) * | 2003-06-13 | 2007-05-15 | Microsoft Corporation | Systems and methods providing lightweight runtime code generation |
JP2005250958A (ja) | 2004-03-05 | 2005-09-15 | Ntt Data Corp | 分散コンピューティング環境におけるサービス実行処理システム、およびそのクライアント装置ならびにプログラム、サービス実行処理方法 |
CN100552650C (zh) * | 2004-04-30 | 2009-10-21 | 马维尔国际贸易有限公司 | 用于结合使用有效范围语句和动态缓存变量的方法 |
US7770159B2 (en) * | 2004-10-20 | 2010-08-03 | Microsoft Corporation | Virtual types |
KR100725393B1 (ko) * | 2005-05-19 | 2007-06-07 | 삼성전자주식회사 | 자바 가상 머신에서 바이트 코드의 수행 시간을 줄이는시스템 및 방법 |
US7650600B2 (en) * | 2005-06-20 | 2010-01-19 | Microsoft Corporation | Unique identifier resolution interfaces for lightweight runtime identity |
US7730464B2 (en) * | 2005-09-14 | 2010-06-01 | Microsoft Corporation | Code compilation management service |
US7506119B2 (en) * | 2006-05-04 | 2009-03-17 | International Business Machines Corporation | Complier assisted victim cache bypassing |
US8321850B2 (en) * | 2008-06-06 | 2012-11-27 | Vmware, Inc. | Sharing and persisting code caches |
-
2008
- 2008-10-15 US US12/251,497 patent/US9250938B2/en active Active
-
2009
- 2009-09-30 CN CN200980141635.0A patent/CN102187313B/zh active Active
- 2009-09-30 BR BRPI0919132A patent/BRPI0919132A2/pt not_active Application Discontinuation
- 2009-09-30 RU RU2011114807/08A patent/RU2520344C2/ru not_active IP Right Cessation
- 2009-09-30 JP JP2011532141A patent/JP5518085B2/ja active Active
- 2009-09-30 WO PCT/US2009/059125 patent/WO2010045027A2/en active Application Filing
- 2009-09-30 EP EP09820999.2A patent/EP2340481B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP2340481A4 (en) | 2013-03-06 |
US20100095284A1 (en) | 2010-04-15 |
BRPI0919132A2 (pt) | 2015-12-08 |
CN102187313A (zh) | 2011-09-14 |
JP5518085B2 (ja) | 2014-06-11 |
WO2010045027A2 (en) | 2010-04-22 |
RU2520344C2 (ru) | 2014-06-20 |
EP2340481A2 (en) | 2011-07-06 |
US9250938B2 (en) | 2016-02-02 |
JP2012506094A (ja) | 2012-03-08 |
WO2010045027A3 (en) | 2010-07-01 |
CN102187313B (zh) | 2014-07-09 |
EP2340481B1 (en) | 2018-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2011114807A (ru) | Кэширование генерируемого во время выполнения кода | |
JP2012506094A5 (ru) | ||
EP3039535B1 (en) | Concurrent inline cache optimization in accessing dynamically typed objects | |
JP2007521555A5 (ru) | ||
US9875106B2 (en) | Computer processor employing instruction block exit prediction | |
US10185567B2 (en) | Multilevel conversion table cache for translating guest instructions to native instructions | |
Perais et al. | Practical data value speculation for future high-end processors | |
US9501423B2 (en) | Program execution device and compiler system | |
US8364461B2 (en) | Reusing invalidated traces in a system emulator | |
CA2635116A1 (en) | Efficient memory hierarchy management using instruction in a data cache | |
KR20070108939A (ko) | 포워드 룩킹 브렌치 타겟 어드레스 캐싱 | |
RU2008113217A (ru) | Быстрая загрузка операционной системы из выключенного состояния | |
JP2007531075A5 (ru) | ||
US9584877B2 (en) | Light-weight validation of native images | |
RU2012149004A (ru) | Увеличение числа доступных для команд регистров общего назначения | |
CN107832057A (zh) | 一种iOS应用的构建方法及终端 | |
US20080282116A1 (en) | Transient Fault Detection by Integrating an SRMT Code and a Non SRMT Code in a Single Application | |
JPWO2012093489A1 (ja) | 演算処理装置および分岐予測方法 | |
US20080282257A1 (en) | Transient Fault Detection by Integrating an SRMT Code and a Non SRMT Code in a Single Application | |
US20050246677A1 (en) | Native method invocation (NMI) custom marshalling stub service | |
US8291395B2 (en) | Fast function call dispatching | |
Jeon et al. | Reuse of JIT compiled code in JavaScript engine | |
CN102819435B (zh) | 一种Java虚拟机的位置无关代码生成方法 | |
CN112199110A (zh) | 一种免重启运维升级方法、系统、装置和介质 | |
Heo et al. | Improving JavaScript performance via efficient in-memory bytecode caching |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PC41 | Official registration of the transfer of exclusive right |
Effective date: 20150526 |
|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20191001 |