Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

Модуль jit

Обзор

Модуль jit содержит функции для отслеживания работы LuaJIT — Just-In-Time компилятора, отображения байт-кода или ассемблерного вывода, создаваемого компилятором, а также для получения общей информации о том, как LuaJIT обрабатывает Lua-код.

Индекс

Ниже приведён список всех функций модуля jit.

Имя

Назначение

jit_bc.dump()

Вывод байт-кода функции

jit_dis_x86.disass()

Вывод ассемблерного кода i386 для строки байтов

jit_dis_x64.disass()

Вывод ассемблерного кода x86-64 для строки байтов

jit_dump.on(), jit_dump.off()

Вывод промежуточного или машинного кода для последующего Lua-кода

jit_v.on(), jit_v.off()

Вывод трассировки процесса компиляции и интерпретации кода в LuaJIT

jit_bc.dump(function)

Выводит байт-код функции.

Пример:

tarantool> jit_bc = require('jit.bc')---...tarantool> function f()         > print("D")         > end---...tarantool> jit_bc.dump(f)----- BYTECODE -- 0x01113163c8:1-30001    GGET     0   0      ; "print"0002    KSTR     2   1      ; "D"0003    CALL     0   1   20004    RET0     0   1...
function f()  print("D")endrequire('jit.bc').dump(f)

Список доступных параметров см. в исходном коде bc.lua.

jit_dis_x86.disass(string)

Выводит ассемблерный код i386 для строки байтов.

Пример:

tarantool> -- Disassemble hexadecimal 97 which is the x86 code for xchg eax, edi---...tarantool> jit_dis_x86 = require('jit.dis_x86')---...tarantool> jit_dis_x86.disass('\x97')---00000000  97                xchg eax, edi...

Список доступных параметров см. в исходном коде dis_x86.lua.

jit_dis_x64.disass(string)

Выводит ассемблерный код x86-64 для строки байтов.

Пример:

tarantool> -- Disassemble hexadecimal 97 which is the x86-64 code for xchg eax, edi---...tarantool> jit_dis_x64 = require('jit.dis_x64')---...tarantool> jit_dis_x64.disass('\x97')---00000000  97                xchg eax, edi...

Список доступных параметров см. в исходном коде dis_x64.lua.

jit_dump.on(option[, output-file])

jit_dump.off()

Выводит промежуточный или машинный код для последующего Lua-кода.

Пример:

tarantool> -- Show the machine code of a Lua "for" looptarantool> jit_dump = require('jit.dump')tarantool> jit_dump.on('m')tarantool> x = 0;tarantool> for i = 1, 1e6 do         > x = x + i         > end------- TRACE 1 start 0x01047fbc38:1---- TRACE 1 mcode 148104c29f6b  mov dword [r14-0xed0], 0x1104c29f76  cvttsd2si ebp, [rdx]104c29f7a  rorx rbx, [rdx-0x10], 0x2f104c29f81  shr rbx, 0x11104c29f85  mov rdx, [rbx+0x10]104c29f89  cmp dword [rdx+0x34], +0x3f104c29f8d  jnz 0x104c1a010  ->0104c29f93  mov rcx, [rdx+0x28]104c29f97  mov rdi, 0xfffd8001046b3d58104c29fa1  cmp rdi, [rcx+0x320]104c29fa8  jnz 0x104c1a010  ->0104c29fae  lea rax, [rcx+0x318]104c29fb5  cmp dword [rax+0x4], 0xfff90000104c29fbc  jnb 0x104c1a010  ->0104c29fc2  xorps xmm7, xmm7104c29fc5  cvtsi2sd xmm7, ebp104c29fc9  addsd xmm7, [rax]104c29fcd  movsd [rax], xmm7104c29fd1  add ebp, +0x01104c29fd4  cmp ebp, 0x000f4240104c29fda  jg 0x104c1a014   ->1->LOOP:104c29fe0  xorps xmm6, xmm6104c29fe3  cvtsi2sd xmm6, ebp104c29fe7  addsd xmm7, xmm6104c29feb  movsd [rax], xmm7104c29fef  add ebp, +0x01104c29ff2  cmp ebp, 0x000f4240104c29ff8  jle 0x104c29fe0  ->LOOP104c29ffa  jmp 0x104c1a01c  ->3---- TRACE 1 stop -> loop...tarantool> print(x)---500000500000...tarantool> jit_dump.off()---...

Список доступных параметров см. в исходном коде dump.lua.

jit_v.on(option[, output-file])

jit_v.off()

Выводит трассировку процесса компиляции и интерпретации кода в LuaJIT.

Пример:

tarantool> -- Show what LuaJIT is doing for a Lua "for" looptarantool> jit_v = require('jit.v')tarantool> jit_v.on()tarantool> l = 0tarantool> for i = 1, 1e6 do         >     l = l + i         > end---[TRACE   3 "for i = 1, 1e6 do    l = l + iend":1 loop]...tarantool> print(l)---500000500000...tarantool> jit_v.off()---...

Список доступных параметров см. в исходном коде v.lua.