jit.h

Include dependency graph for jit.h:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "14" [label="atom.h" tooltip="atom.h"] "2" [label="bitstring.h" tooltip="bitstring.h"] "16" [label="erl_nif.h" tooltip="erl_nif.h"] "27" [label="exportedfunction.h" tooltip="exportedfunction.h"] "3" [label="intn.h" tooltip="intn.h"] "1" [label="/__w/AtomVM/AtomVM/src/libAtomVM/jit.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/jit.h" fillcolor="#BFBFBF"] "21" [label="list.h" tooltip="list.h"] "23" [label="mailbox.h" tooltip="mailbox.h"] "15" [label="memory.h" tooltip="memory.h"] "20" [label="refc_binary.h" tooltip="refc_binary.h"] "22" [label="resources.h" tooltip="resources.h"] "25" [label="smp.h" tooltip="smp.h"] "24" [label="synclist.h" tooltip="synclist.h"] "11" [label="term.h" tooltip="term.h"] "17" [label="term_typedef.h" tooltip="term_typedef.h"] "26" [label="unicode.h" tooltip="unicode.h"] "6" [label="utils.h" tooltip="utils.h"] "18" [label="assert.h" tooltip="assert.h"] "7" [label="inttypes.h" tooltip="inttypes.h"] "19" [label="limits.h" tooltip="limits.h"] "4" [label="stdbool.h" tooltip="stdbool.h"] "8" [label="stddef.h" tooltip="stddef.h"] "13" [label="stdint.h" tooltip="stdint.h"] "9" [label="stdio.h" tooltip="stdio.h"] "10" [label="stdlib.h" tooltip="stdlib.h"] "5" [label="string.h" tooltip="string.h"] "12" [label="sys/types.h" tooltip="sys/types.h"] "14" -> "13" [dir=forward tooltip="include"] "14" -> "10" [dir=forward tooltip="include"] "2" -> "3" [dir=forward tooltip="include"] "2" -> "11" [dir=forward tooltip="include"] "2" -> "26" [dir=forward tooltip="include"] "2" -> "4" [dir=forward tooltip="include"] "2" -> "13" [dir=forward tooltip="include"] "16" -> "17" [dir=forward tooltip="include"] "27" -> "11" [dir=forward tooltip="include"] "3" -> "4" [dir=forward tooltip="include"] "3" -> "5" [dir=forward tooltip="include"] "3" -> "6" [dir=forward tooltip="include"] "1" -> "2" [dir=forward tooltip="include"] "1" -> "27" [dir=forward tooltip="include"] "1" -> "11" [dir=forward tooltip="include"] "1" -> "17" [dir=forward tooltip="include"] "1" -> "4" [dir=forward tooltip="include"] "21" -> "4" [dir=forward tooltip="include"] "23" -> "4" [dir=forward tooltip="include"] "23" -> "21" [dir=forward tooltip="include"] "23" -> "17" [dir=forward tooltip="include"] "23" -> "6" [dir=forward tooltip="include"] "15" -> "13" [dir=forward tooltip="include"] "15" -> "10" [dir=forward tooltip="include"] "15" -> "16" [dir=forward tooltip="include"] "15" -> "17" [dir=forward tooltip="include"] "15" -> "6" [dir=forward tooltip="include"] "20" -> "4" [dir=forward tooltip="include"] "20" -> "10" [dir=forward tooltip="include"] "20" -> "21" [dir=forward tooltip="include"] "20" -> "22" [dir=forward tooltip="include"] "22" -> "10" [dir=forward tooltip="include"] "22" -> "16" [dir=forward tooltip="include"] "22" -> "21" [dir=forward tooltip="include"] "22" -> "23" [dir=forward tooltip="include"] "22" -> "15" [dir=forward tooltip="include"] "22" -> "24" [dir=forward tooltip="include"] "25" -> "4" [dir=forward tooltip="include"] "24" -> "9" [dir=forward tooltip="include"] "24" -> "21" [dir=forward tooltip="include"] "24" -> "25" [dir=forward tooltip="include"] "11" -> "12" [dir=forward tooltip="include"] "11" -> "4" [dir=forward tooltip="include"] "11" -> "13" [dir=forward tooltip="include"] "11" -> "9" [dir=forward tooltip="include"] "11" -> "10" [dir=forward tooltip="include"] "11" -> "5" [dir=forward tooltip="include"] "11" -> "14" [dir=forward tooltip="include"] "11" -> "3" [dir=forward tooltip="include"] "11" -> "15" [dir=forward tooltip="include"] "11" -> "20" [dir=forward tooltip="include"] "11" -> "22" [dir=forward tooltip="include"] "11" -> "6" [dir=forward tooltip="include"] "11" -> "17" [dir=forward tooltip="include"] "17" -> "18" [dir=forward tooltip="include"] "17" -> "19" [dir=forward tooltip="include"] "17" -> "7" [dir=forward tooltip="include"] "17" -> "13" [dir=forward tooltip="include"] "26" -> "4" [dir=forward tooltip="include"] "26" -> "8" [dir=forward tooltip="include"] "26" -> "13" [dir=forward tooltip="include"] "6" -> "7" [dir=forward tooltip="include"] "6" -> "4" [dir=forward tooltip="include"] "6" -> "8" [dir=forward tooltip="include"] "6" -> "9" [dir=forward tooltip="include"] "6" -> "10" [dir=forward tooltip="include"] }

This graph shows which files directly or indirectly include jit.h:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "4" [label="/__w/AtomVM/AtomVM/src/libAtomVM/bif.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/bif.c"] "3" [label="/__w/AtomVM/AtomVM/src/libAtomVM/bif.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/bif.h"] "9" [label="/__w/AtomVM/AtomVM/src/libAtomVM/context.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/context.c"] "2" [label="/__w/AtomVM/AtomVM/src/libAtomVM/context.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/context.h"] "11" [label="/__w/AtomVM/AtomVM/src/libAtomVM/debug.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/debug.c"] "10" [label="/__w/AtomVM/AtomVM/src/libAtomVM/debug.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/debug.h"] "13" [label="/__w/AtomVM/AtomVM/src/libAtomVM/dist_nifs.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/dist_nifs.c"] "14" [label="/__w/AtomVM/AtomVM/src/libAtomVM/erl_nif_priv.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/erl_nif_priv.h"] "24" [label="/__w/AtomVM/AtomVM/src/libAtomVM/ets.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/ets.c"] "25" [label="/__w/AtomVM/AtomVM/src/libAtomVM/external_term.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/external_term.c"] "15" [label="/__w/AtomVM/AtomVM/src/libAtomVM/globalcontext.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/globalcontext.c"] "28" [label="/__w/AtomVM/AtomVM/src/libAtomVM/inet.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/inet.c"] "27" [label="/__w/AtomVM/AtomVM/src/libAtomVM/inet.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/inet.h"] "30" [label="/__w/AtomVM/AtomVM/src/libAtomVM/interop.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/interop.c"] "26" [label="/__w/AtomVM/AtomVM/src/libAtomVM/interop.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/interop.h"] "5" [label="/__w/AtomVM/AtomVM/src/libAtomVM/jit.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/jit.c"] "1" [label="/__w/AtomVM/AtomVM/src/libAtomVM/jit.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/jit.h" fillcolor="#BFBFBF"] "16" [label="/__w/AtomVM/AtomVM/src/libAtomVM/jit_stream_flash.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/jit_stream_flash.c"] "33" [label="/__w/AtomVM/AtomVM/src/libAtomVM/jit_stream_flash.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/jit_stream_flash.h"] "46" [label="/__w/AtomVM/AtomVM/src/libAtomVM/mailbox.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/mailbox.c"] "12" [label="/__w/AtomVM/AtomVM/src/libAtomVM/memory.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/memory.c"] "6" [label="/__w/AtomVM/AtomVM/src/libAtomVM/module.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/module.c"] "32" [label="/__w/AtomVM/AtomVM/src/libAtomVM/module.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/module.h"] "7" [label="/__w/AtomVM/AtomVM/src/libAtomVM/nifs.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/nifs.c"] "37" [label="/__w/AtomVM/AtomVM/src/libAtomVM/nifs.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/nifs.h"] "17" [label="/__w/AtomVM/AtomVM/src/libAtomVM/otp_crypto.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/otp_crypto.c"] "18" [label="/__w/AtomVM/AtomVM/src/libAtomVM/otp_crypto.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/otp_crypto.h"] "29" [label="/__w/AtomVM/AtomVM/src/libAtomVM/otp_net.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/otp_net.c"] "38" [label="/__w/AtomVM/AtomVM/src/libAtomVM/otp_net.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/otp_net.h"] "19" [label="/__w/AtomVM/AtomVM/src/libAtomVM/otp_socket.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/otp_socket.c"] "39" [label="/__w/AtomVM/AtomVM/src/libAtomVM/otp_socket.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/otp_socket.h"] "20" [label="/__w/AtomVM/AtomVM/src/libAtomVM/otp_ssl.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/otp_ssl.c"] "40" [label="/__w/AtomVM/AtomVM/src/libAtomVM/otp_ssl.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/otp_ssl.h"] "34" [label="/__w/AtomVM/AtomVM/src/libAtomVM/platform_nifs.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/platform_nifs.h"] "43" [label="/__w/AtomVM/AtomVM/src/libAtomVM/port.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/port.c"] "44" [label="/__w/AtomVM/AtomVM/src/libAtomVM/port.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/port.h"] "42" [label="/__w/AtomVM/AtomVM/src/libAtomVM/portnifloader.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/portnifloader.c"] "41" [label="/__w/AtomVM/AtomVM/src/libAtomVM/portnifloader.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/portnifloader.h"] "21" [label="/__w/AtomVM/AtomVM/src/libAtomVM/posix_nifs.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/posix_nifs.c"] "22" [label="/__w/AtomVM/AtomVM/src/libAtomVM/refc_binary.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/refc_binary.c"] "23" [label="/__w/AtomVM/AtomVM/src/libAtomVM/resources.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/resources.c"] "45" [label="/__w/AtomVM/AtomVM/src/libAtomVM/scheduler.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/scheduler.h"] "8" [label="/__w/AtomVM/AtomVM/src/libAtomVM/stacktrace.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/stacktrace.c"] "35" [label="/__w/AtomVM/AtomVM/src/libAtomVM/stacktrace.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/stacktrace.h"] "36" [label="/__w/AtomVM/AtomVM/src/libAtomVM/sys.h" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/sys.h"] "31" [label="/__w/AtomVM/AtomVM/src/libAtomVM/term.c" tooltip="/__w/AtomVM/AtomVM/src/libAtomVM/term.c"] "3" -> "4" [dir=back tooltip="include"] "3" -> "5" [dir=back tooltip="include"] "3" -> "6" [dir=back tooltip="include"] "3" -> "7" [dir=back tooltip="include"] "3" -> "8" [dir=back tooltip="include"] "2" -> "3" [dir=back tooltip="include"] "2" -> "9" [dir=back tooltip="include"] "2" -> "10" [dir=back tooltip="include"] "2" -> "13" [dir=back tooltip="include"] "2" -> "14" [dir=back tooltip="include"] "2" -> "24" [dir=back tooltip="include"] "2" -> "25" [dir=back tooltip="include"] "2" -> "15" [dir=back tooltip="include"] "2" -> "26" [dir=back tooltip="include"] "2" -> "5" [dir=back tooltip="include"] "2" -> "16" [dir=back tooltip="include"] "2" -> "12" [dir=back tooltip="include"] "2" -> "6" [dir=back tooltip="include"] "2" -> "32" [dir=back tooltip="include"] "2" -> "7" [dir=back tooltip="include"] "2" -> "37" [dir=back tooltip="include"] "2" -> "17" [dir=back tooltip="include"] "2" -> "29" [dir=back tooltip="include"] "2" -> "19" [dir=back tooltip="include"] "2" -> "20" [dir=back tooltip="include"] "2" -> "43" [dir=back tooltip="include"] "2" -> "44" [dir=back tooltip="include"] "2" -> "41" [dir=back tooltip="include"] "2" -> "22" [dir=back tooltip="include"] "2" -> "23" [dir=back tooltip="include"] "2" -> "45" [dir=back tooltip="include"] "2" -> "35" [dir=back tooltip="include"] "2" -> "31" [dir=back tooltip="include"] "10" -> "11" [dir=back tooltip="include"] "10" -> "5" [dir=back tooltip="include"] "10" -> "12" [dir=back tooltip="include"] "14" -> "9" [dir=back tooltip="include"] "14" -> "13" [dir=back tooltip="include"] "14" -> "15" [dir=back tooltip="include"] "14" -> "16" [dir=back tooltip="include"] "14" -> "12" [dir=back tooltip="include"] "14" -> "7" [dir=back tooltip="include"] "14" -> "17" [dir=back tooltip="include"] "14" -> "18" [dir=back tooltip="include"] "14" -> "19" [dir=back tooltip="include"] "14" -> "20" [dir=back tooltip="include"] "14" -> "21" [dir=back tooltip="include"] "14" -> "22" [dir=back tooltip="include"] "14" -> "23" [dir=back tooltip="include"] "27" -> "28" [dir=back tooltip="include"] "27" -> "29" [dir=back tooltip="include"] "27" -> "19" [dir=back tooltip="include"] "27" -> "20" [dir=back tooltip="include"] "26" -> "4" [dir=back tooltip="include"] "26" -> "15" [dir=back tooltip="include"] "26" -> "27" [dir=back tooltip="include"] "26" -> "30" [dir=back tooltip="include"] "26" -> "7" [dir=back tooltip="include"] "26" -> "17" [dir=back tooltip="include"] "26" -> "29" [dir=back tooltip="include"] "26" -> "19" [dir=back tooltip="include"] "26" -> "20" [dir=back tooltip="include"] "26" -> "21" [dir=back tooltip="include"] "26" -> "31" [dir=back tooltip="include"] "1" -> "2" [dir=back tooltip="include"] "1" -> "5" [dir=back tooltip="include"] "1" -> "16" [dir=back tooltip="include"] "1" -> "6" [dir=back tooltip="include"] "1" -> "32" [dir=back tooltip="include"] "1" -> "7" [dir=back tooltip="include"] "33" -> "16" [dir=back tooltip="include"] "32" -> "3" [dir=back tooltip="include"] "32" -> "25" [dir=back tooltip="include"] "32" -> "5" [dir=back tooltip="include"] "32" -> "16" [dir=back tooltip="include"] "32" -> "33" [dir=back tooltip="include"] "32" -> "6" [dir=back tooltip="include"] "32" -> "7" [dir=back tooltip="include"] "32" -> "34" [dir=back tooltip="include"] "32" -> "35" [dir=back tooltip="include"] "32" -> "36" [dir=back tooltip="include"] "32" -> "31" [dir=back tooltip="include"] "37" -> "13" [dir=back tooltip="include"] "37" -> "5" [dir=back tooltip="include"] "37" -> "16" [dir=back tooltip="include"] "37" -> "6" [dir=back tooltip="include"] "37" -> "7" [dir=back tooltip="include"] "37" -> "17" [dir=back tooltip="include"] "37" -> "18" [dir=back tooltip="include"] "37" -> "29" [dir=back tooltip="include"] "37" -> "38" [dir=back tooltip="include"] "37" -> "19" [dir=back tooltip="include"] "37" -> "39" [dir=back tooltip="include"] "37" -> "20" [dir=back tooltip="include"] "37" -> "40" [dir=back tooltip="include"] "37" -> "41" [dir=back tooltip="include"] "37" -> "21" [dir=back tooltip="include"] "37" -> "8" [dir=back tooltip="include"] "18" -> "15" [dir=back tooltip="include"] "18" -> "17" [dir=back tooltip="include"] "38" -> "29" [dir=back tooltip="include"] "39" -> "19" [dir=back tooltip="include"] "39" -> "20" [dir=back tooltip="include"] "40" -> "20" [dir=back tooltip="include"] "34" -> "7" [dir=back tooltip="include"] "44" -> "28" [dir=back tooltip="include"] "44" -> "7" [dir=back tooltip="include"] "44" -> "29" [dir=back tooltip="include"] "44" -> "19" [dir=back tooltip="include"] "44" -> "20" [dir=back tooltip="include"] "44" -> "43" [dir=back tooltip="include"] "41" -> "42" [dir=back tooltip="include"] "45" -> "15" [dir=back tooltip="include"] "45" -> "5" [dir=back tooltip="include"] "45" -> "46" [dir=back tooltip="include"] "45" -> "7" [dir=back tooltip="include"] "45" -> "19" [dir=back tooltip="include"] "35" -> "5" [dir=back tooltip="include"] "35" -> "8" [dir=back tooltip="include"] "36" -> "9" [dir=back tooltip="include"] "36" -> "15" [dir=back tooltip="include"] "36" -> "16" [dir=back tooltip="include"] "36" -> "6" [dir=back tooltip="include"] "36" -> "7" [dir=back tooltip="include"] "36" -> "19" [dir=back tooltip="include"] "36" -> "23" [dir=back tooltip="include"] }

Defines

TYPEDEF_MODULE
CALL_EXT_NO_DEALLOC -1
CALL_EXT_NO_DEALLOC_MFA -2
JIT_FORMAT_VERSION 1
JIT_ARCH_X86_64 1
JIT_ARCH_AARCH64 2
JIT_ARCH_ARMV6M 3
JIT_ARCH_RISCV32 4
JIT_ARCH_RISCV64 5
JIT_ARCH_ARM32 6
JIT_VARIANT_PIC 1
JIT_VARIANT_FLOAT32 2
JIT_VARIANT_THUMB2 4

Typedefs

typedef struct Module Module
typedef Context *(*ModuleNativeEntryPoint)(Context *ctx, JITState *jit_state, const ModuleNativeInterface *p)

Enums

enum TrapAndLoadResult

Values:

enumerator TRAP_AND_LOAD_OK
enumerator TRAP_AND_LOAD_CODE_SERVER_NOT_FOUND

Functions

ModuleNativeEntryPoint jit_stream_entry_point(Context *ctx, term jit_stream)

Return the entry point from a given jit stream.

Platform implementing JIT must provide this function which is called by code_server:set_native_code/2

Parameters:
  • ctx – the current context (code_server)

  • jit_stream – the jit stream term

Returns:

the pointer to the first function

enum TrapAndLoadResult jit_trap_and_load(Context *ctx, Module *mod, uint32_t label)

Trap a process and load module, process shall be resumed at given label.

Parameters:
  • ctx – the process to trap

  • mod – the module to load

  • label – the label to resume the process to

void jit_debug_register_code(Module *mod, const void *native_code, size_t native_size, ModuleNativeEntryPoint entry_point)

Register JIT-compiled code with debug info with GDB/LLDB.

This function registers native code and associated DWARF debug information with the debugger using the GDB JIT interface. This allows debuggers to show function names and source line information for JIT code.

Parameters:
  • mod – The module containing the JIT code

  • native_code – Pointer to the native machine code

  • native_size – Size of the native code in bytes

  • entry_point – The actual mapped entry point address

void jit_debug_unregister_code(Context *ctx, Module *mod)

Unregister JIT-compiled code from debugger.

This function unregisters previously registered JIT code from the debugger. Should be called when a module is unloaded.

Parameters:
  • ctx – The context

  • mod – The module being unloaded

Variables

const ModuleNativeInterface module_native_interface
struct JITState
#include <jit.h>

Collaboration diagram for JITState:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "14" [label="AtomTable" tooltip="AtomTable"] "3" [label="Context" tooltip="Context"] "13" [label="Ets" tooltip="Ets"] "23" [label="ExportedFunction" tooltip="ExportedFunction"] "4" [label="GlobalContext" tooltip="GlobalContext"] "15" [label="HNode" tooltip="HNode"] "16" [label="HNodeGroup" tooltip="HNodeGroup"] "19" [label="Heap" tooltip="Heap"] "20" [label="HeapFragment" tooltip="HeapFragment"] "1" [label="JITState" tooltip="JITState" fillcolor="#BFBFBF"] "5" [label="ListHead" tooltip="ListHead"] "24" [label="LiteralEntry" tooltip="LiteralEntry"] "22" [label="Mailbox" tooltip="Mailbox"] "8" [label="MailboxMessage" tooltip="MailboxMessage"] "7" [label="MessageQueueItem" tooltip="MessageQueueItem"] "2" [label="Module" tooltip="Module"] "10" [label="RefcBinary" tooltip="RefcBinary"] "9" [label="RefcBinaryQueueItem" tooltip="RefcBinaryQueueItem"] "11" [label="ResourceType" tooltip="ResourceType"] "6" [label="SpinLock" tooltip="SpinLock"] "12" [label="SyncList" tooltip="SyncList"] "18" [label="TimerList" tooltip="TimerList"] "21" [label="TimerListItem" tooltip="TimerListItem"] "17" [label="ValuesHashTable" tooltip="ValuesHashTable"] "14" -> "15" [dir=forward tooltip="usage"] "14" -> "16" [dir=forward tooltip="usage"] "3" -> "4" [dir=forward tooltip="usage"] "3" -> "19" [dir=forward tooltip="usage"] "3" -> "5" [dir=forward tooltip="usage"] "3" -> "21" [dir=forward tooltip="usage"] "3" -> "2" [dir=forward tooltip="usage"] "3" -> "3" [dir=forward tooltip="usage"] "3" -> "22" [dir=forward tooltip="usage"] "13" -> "12" [dir=forward tooltip="usage"] "4" -> "5" [dir=forward tooltip="usage"] "4" -> "6" [dir=forward tooltip="usage"] "4" -> "7" [dir=forward tooltip="usage"] "4" -> "9" [dir=forward tooltip="usage"] "4" -> "12" [dir=forward tooltip="usage"] "4" -> "13" [dir=forward tooltip="usage"] "4" -> "14" [dir=forward tooltip="usage"] "4" -> "17" [dir=forward tooltip="usage"] "4" -> "2" [dir=forward tooltip="usage"] "4" -> "18" [dir=forward tooltip="usage"] "4" -> "11" [dir=forward tooltip="usage"] "15" -> "15" [dir=forward tooltip="usage"] "16" -> "16" [dir=forward tooltip="usage"] "16" -> "15" [dir=forward tooltip="usage"] "19" -> "20" [dir=forward tooltip="usage"] "20" -> "20" [dir=forward tooltip="usage"] "1" -> "2" [dir=forward tooltip="usage"] "1" -> "3" [dir=forward tooltip="usage"] "5" -> "5" [dir=forward tooltip="usage"] "22" -> "8" [dir=forward tooltip="usage"] "8" -> "8" [dir=forward tooltip="usage"] "7" -> "7" [dir=forward tooltip="usage"] "7" -> "8" [dir=forward tooltip="usage"] "2" -> "3" [dir=forward tooltip="usage"] "2" -> "23" [dir=forward tooltip="usage"] "2" -> "24" [dir=forward tooltip="usage"] "10" -> "5" [dir=forward tooltip="usage"] "10" -> "11" [dir=forward tooltip="usage"] "9" -> "9" [dir=forward tooltip="usage"] "9" -> "10" [dir=forward tooltip="usage"] "11" -> "5" [dir=forward tooltip="usage"] "11" -> "4" [dir=forward tooltip="usage"] "11" -> "12" [dir=forward tooltip="usage"] "12" -> "5" [dir=forward tooltip="usage"] "18" -> "5" [dir=forward tooltip="usage"] "21" -> "5" [dir=forward tooltip="usage"] "17" -> "15" [dir=forward tooltip="usage"] }

Public Members

Module *module
ModuleNativeEntryPoint continuation
const void *continuation_pc
union JITState.[anonymous] [anonymous]
int remaining_reductions
struct ModuleNativeInterface
#include <jit.h>

Collaboration diagram for ModuleNativeInterface:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "13" [label="AtomTable" tooltip="AtomTable"] "2" [label="Context" tooltip="Context"] "12" [label="Ets" tooltip="Ets"] "18" [label="ExportedFunction" tooltip="ExportedFunction"] "3" [label="GlobalContext" tooltip="GlobalContext"] "14" [label="HNode" tooltip="HNode"] "15" [label="HNodeGroup" tooltip="HNodeGroup"] "21" [label="Heap" tooltip="Heap"] "22" [label="HeapFragment" tooltip="HeapFragment"] "4" [label="ListHead" tooltip="ListHead"] "19" [label="LiteralEntry" tooltip="LiteralEntry"] "24" [label="Mailbox" tooltip="Mailbox"] "7" [label="MailboxMessage" tooltip="MailboxMessage"] "6" [label="MessageQueueItem" tooltip="MessageQueueItem"] "17" [label="Module" tooltip="Module"] "1" [label="ModuleNativeInterface" tooltip="ModuleNativeInterface" fillcolor="#BFBFBF"] "9" [label="RefcBinary" tooltip="RefcBinary"] "8" [label="RefcBinaryQueueItem" tooltip="RefcBinaryQueueItem"] "10" [label="ResourceType" tooltip="ResourceType"] "5" [label="SpinLock" tooltip="SpinLock"] "11" [label="SyncList" tooltip="SyncList"] "20" [label="TimerList" tooltip="TimerList"] "23" [label="TimerListItem" tooltip="TimerListItem"] "16" [label="ValuesHashTable" tooltip="ValuesHashTable"] "13" -> "14" [dir=forward tooltip="usage"] "13" -> "15" [dir=forward tooltip="usage"] "2" -> "3" [dir=forward tooltip="usage"] "2" -> "21" [dir=forward tooltip="usage"] "2" -> "4" [dir=forward tooltip="usage"] "2" -> "23" [dir=forward tooltip="usage"] "2" -> "17" [dir=forward tooltip="usage"] "2" -> "2" [dir=forward tooltip="usage"] "2" -> "24" [dir=forward tooltip="usage"] "12" -> "11" [dir=forward tooltip="usage"] "3" -> "4" [dir=forward tooltip="usage"] "3" -> "5" [dir=forward tooltip="usage"] "3" -> "6" [dir=forward tooltip="usage"] "3" -> "8" [dir=forward tooltip="usage"] "3" -> "11" [dir=forward tooltip="usage"] "3" -> "12" [dir=forward tooltip="usage"] "3" -> "13" [dir=forward tooltip="usage"] "3" -> "16" [dir=forward tooltip="usage"] "3" -> "17" [dir=forward tooltip="usage"] "3" -> "20" [dir=forward tooltip="usage"] "3" -> "10" [dir=forward tooltip="usage"] "14" -> "14" [dir=forward tooltip="usage"] "15" -> "15" [dir=forward tooltip="usage"] "15" -> "14" [dir=forward tooltip="usage"] "21" -> "22" [dir=forward tooltip="usage"] "22" -> "22" [dir=forward tooltip="usage"] "4" -> "4" [dir=forward tooltip="usage"] "24" -> "7" [dir=forward tooltip="usage"] "7" -> "7" [dir=forward tooltip="usage"] "6" -> "6" [dir=forward tooltip="usage"] "6" -> "7" [dir=forward tooltip="usage"] "17" -> "2" [dir=forward tooltip="usage"] "17" -> "18" [dir=forward tooltip="usage"] "17" -> "19" [dir=forward tooltip="usage"] "1" -> "2" [dir=forward tooltip="usage"] "9" -> "4" [dir=forward tooltip="usage"] "9" -> "10" [dir=forward tooltip="usage"] "8" -> "8" [dir=forward tooltip="usage"] "8" -> "9" [dir=forward tooltip="usage"] "10" -> "4" [dir=forward tooltip="usage"] "10" -> "3" [dir=forward tooltip="usage"] "10" -> "11" [dir=forward tooltip="usage"] "11" -> "4" [dir=forward tooltip="usage"] "20" -> "4" [dir=forward tooltip="usage"] "23" -> "4" [dir=forward tooltip="usage"] "16" -> "14" [dir=forward tooltip="usage"] }

Public Members

Context *(*raise_error)(Context *ctx, JITState *jit_state, int offset, term error_term)
Context *(*do_return)(Context *ctx, JITState *jit_state)
Context *(*schedule_next_cp)(Context *ctx, JITState *jit_state)
term (*module_get_atom_term_by_id)(JITState *jit_state, int atom_index)
Context *(*call_ext)(Context *ctx, JITState *jit_state, int offset, int arity, int index, int n_words)
bool (*allocate)(Context *ctx, JITState *jit_state, uint32_t stack_need, uint32_t heap_need, uint32_t live)
Context *(*handle_error)(Context *ctx, JITState *jit_state, int offset)
void (*jit_trim_live_regs)(Context *ctx, uint32_t live)
BifImpl0 (*get_imported_bif)(JITState *jit_state, uint32_t bif)
bool (*deallocate)(Context *ctx, JITState *jit_state, uint32_t n_words)
Context *(*terminate_context)(Context *ctx, JITState *jit_state)
TermCompareResult (*term_compare)(Context *ctx, JITState *jit_state, term t, term other, TermCompareOpts opts)
bool (*test_heap)(Context *ctx, JITState *jit_state, uint32_t heap_need, uint32_t live)
term (*put_list)(Context *ctx, term head, term tail)
term (*module_load_literal)(Context *ctx, JITState *jit_state, int index)
term (*alloc_boxed_integer_fragment)(Context *ctx, avm_int64_t value)
term (*term_alloc_tuple)(Context *ctx, uint32_t size)
bool (*send)(Context *ctx, JITState *jit_state)
term *(*extended_register_pointer)(Context *ctx, unsigned int index)
Context *(*raise_error_tuple)(Context *ctx, JITState *jit_state, int offset, term error_atom, term arg1)
term (*term_alloc_fun)(Context *ctx, JITState *jit_state, uint32_t fun_index, uint32_t numfree)
Context *(*process_signal_messages)(Context *ctx, JITState *jit_state)
term (*mailbox_peek)(Context *ctx)
void (*mailbox_remove_message)(Context *ctx)
void (*timeout)(Context *ctx)
void (*mailbox_next)(Context *ctx)
void (*cancel_timeout)(Context *ctx)
void (*clear_timeout_flag)(Context *ctx)
Context *(*raise)(Context *ctx, JITState *jit_state, term stacktrace, term exc_value)
Context *(*schedule_wait_cp)(Context *ctx, JITState *jit_state)
Context *(*wait_timeout)(Context *ctx, JITState *jit_state, term timeout, int label)
Context *(*wait_timeout_trap_handler)(Context *ctx, JITState *jit_state, int label)
Context *(*call_fun)(Context *ctx, JITState *jit_state, int offset, term fun, unsigned int args_count)
int (*context_get_flags)(Context *ctx, int mask)
void (*context_ensure_fpregs)(Context *ctx)
term (*term_from_float)(Context *ctx, int fpreg)
bool (*term_is_number)(term t)
void (*term_conv_to_float)(Context *ctx, term t, int fpreg)
bool (*fadd)(Context *ctx, int fpreg_1, int fpreg_2, int fpreg_3)
bool (*fsub)(Context *ctx, int fpreg_1, int fpreg_2, int fpreg_3)
bool (*fmul)(Context *ctx, int fpreg_1, int fpreg_2, int fpreg_3)
bool (*fdiv)(Context *ctx, int fpreg_1, int fpreg_2, int fpreg_3)
void (*fnegate)(Context *ctx, int fpreg_1, int fpreg_2)
bool (*catch_end)(Context *ctx, JITState *jit_state)
bool (*memory_ensure_free_with_roots)(Context *ctx, JITState *jit_state, int sz, int live, int flags)
term (*term_alloc_bin_match_state)(Context *ctx, term src, int slots)
term (*bitstring_extract_integer)(Context *ctx, JITState *jit_state, term *bin_ptr, size_t offset, int n, int bs_flags)
size_t (*term_sub_binary_heap_size)(term *bin_ptr, size_t size)
term (*term_maybe_create_sub_binary)(Context *ctx, term bin, size_t offset, size_t len)
int (*term_find_map_pos)(Context *ctx, term map, term key)
int (*bitstring_utf8_size)(int c)
int (*bitstring_utf16_size)(int c)
term (*term_create_empty_binary)(Context *ctx, size_t len)
int (*decode_flags_list)(Context *ctx, JITState *jit_state, term l)
int (*bitstring_insert_utf8)(term bin, size_t offset, int c)
int (*bitstring_insert_utf16)(term bin, size_t offset, int c, enum BitstringFlags flags)
bool (*bitstring_insert_utf32)(term bin, size_t offset, uint32_t c, enum BitstringFlags flags)
bool (*bitstring_insert_integer)(term bin, size_t offset, term value, size_t n, enum BitstringFlags flags)
void (*bitstring_copy_module_str)(Context *ctx, JITState *jit_state, term bin, size_t offset, int str_id, size_t len)
int (*bitstring_copy_binary)(Context *ctx, JITState *jit_state, term t, size_t offset, term src, term size)
Context *(*apply)(Context *ctx, JITState *jit_state, int offset, term module, term function, unsigned int arity)
void *(*malloc)(Context *ctx, JITState *jit_state, size_t sz)
void (*free)(void *ptr)
term (*put_map_assoc)(Context *ctx, JITState *jit_state, term src, size_t new_entries, size_t num_elements, term *kv)
term (*bitstring_extract_float)(Context *ctx, term *bin_ptr, size_t offset, int n, int bs_flags)
int (*module_get_fun_arity)(Module *fun_module, uint32_t fun_index)
bool (*bitstring_match_module_str)(Context *ctx, JITState *jit_state, term bin, size_t offset, int str_id, size_t len)
term (*bitstring_get_utf8)(term src)
term (*bitstring_get_utf16)(term src, int flags_value)
term (*bitstring_get_utf32)(term src, int flags_value)
term (*term_copy_map)(Context *ctx, term src)
term (*stacktrace_build)(Context *ctx)
term (*term_reuse_binary)(Context *ctx, term src, size_t len)
term (*alloc_big_integer_fragment)(Context *ctx, size_t digits_len, term_integer_sign_t sign)
bool (*bitstring_insert_float)(term bin, size_t offset, term value, size_t n, enum BitstringFlags flags)
Context *(*raw_raise)(Context *ctx, JITState *jit_state)
Context *(*raise_error_mfa)(Context *ctx, JITState *jit_state, int offset, int function_atom_index, int arity)