Name Date Size #Lines LOC

..23-Nov-2023-

dynasm/H11-Aug-2022-

libudis86/H19-Aug-2022-

vtune/H11-Aug-2022-

Makefile.fragH A D31-Aug-2021901 2215

Makefile.frag.w32H A D31-Aug-2021889 1815

README.mdH A D11-Aug-20221.2 KiB2921

zend_elf.cH A D31-Aug-20213.9 KiB12292

zend_elf.hH A D31-Aug-20212.9 KiB11684

zend_jit.cH A D02-Nov-2023148.8 KiB5,2354,580

zend_jit.hH A D11-Aug-20227.7 KiB192143

zend_jit_arm64.dascH A D25-Oct-2023472.5 KiB15,63014,484

zend_jit_arm64.hH A D31-Aug-20213.8 KiB158118

zend_jit_disasm.cH A D03-Mar-202322.9 KiB781695

zend_jit_gdb.cH A D31-Aug-202115 KiB523415

zend_jit_gdb.hH A D31-Aug-20211.7 KiB3813

zend_jit_helpers.cH A D23-Nov-202387.6 KiB3,1402,699

zend_jit_internal.hH A D20-Jun-202328.7 KiB834690

zend_jit_oprofile.cH A D31-Aug-20211.8 KiB5126

zend_jit_perf_dump.cH A D11-Aug-20227.2 KiB273207

zend_jit_trace.cH A D13-Nov-2023278.5 KiB8,4407,640

zend_jit_vm_helpers.cH A D11-Aug-202237.6 KiB1,1931,015

zend_jit_vtune.cH A D31-Aug-20211.9 KiB4721

zend_jit_x86.dascH A D25-Oct-2023469.3 KiB16,51115,389

zend_jit_x86.hH A D31-Aug-20214.8 KiB158119

README.md

1Opcache JIT
2===========
3
4This is the implementation of Opcache's JIT (Just-In-Time compiler),
5This converts the PHP Virtual Machine's opcodes into x64/x86 assembly,
6on POSIX platforms and Windows.
7
8It generates native code directly from PHP byte-code and information collected
9by the SSA static analysis framework (a part of the opcache optimizer).
10Code is usually generated separately for each PHP byte-code instruction. Only
11a few combinations are considered together (e.g. compare + conditional jump).
12
13See [the JIT RFC](https://wiki.php.net/rfc/jit) for more details.
14
15DynAsm
16------
17
18This uses [DynAsm](https://luajit.org/dynasm.html) (developed for LuaJIT project)
19for the generation of native code.  It's a very lightweight and advanced tool,
20but does assume good, and very low-level development knowledge of target
21assembler languages. In the past we tried LLVM, but its code generation speed
22was almost 100 times slower, making it prohibitively expensive to use.
23
24[The unofficial DynASM Documentation](https://corsix.github.io/dynasm-doc/tutorial.html)
25has a tutorial, reference, and instruction listing.
26
27`zend_jit_x86.dasc` gets automatically converted to `zend_jit_x86.c` by the bundled
28`dynasm` during `make`.
29