blob: 7d75ef64755d80dfbd81119b033c5b5e8bf5f689 [file] [edit]
/*
* Copyright 2026 Rive
*/
// Registry of wasm modules whose AOT code was compiled offline and linked
// into this binary. Platforms without runtime executable memory load these
// through wasm_runtime_load_from_sections, pointing the text section at the
// linked copy; everything else falls back to the interpreter.
#ifndef _RIVE_PRELINKED_AOT_HPP_
#define _RIVE_PRELINKED_AOT_HPP_
#include <cstddef>
#include <cstdint>
namespace rive
{
struct PrelinkedAotModule
{
// FNV-1a 64 of the wasm module bytes, matching WasmScriptingVM's key.
uint64_t moduleKey;
// The full .aot container; metadata sections are read from here.
const uint8_t* aot;
size_t aotSize;
// The linked, executable copy of the container's text payload.
const uint8_t* text;
size_t textSize;
// Byte length of the wasm module the key was computed from; checked at
// lookup so a hash collision cannot select the wrong module's code.
size_t wasmSize;
};
void registerPrelinkedAotModule(const PrelinkedAotModule& module);
const PrelinkedAotModule* findPrelinkedAotModule(uint64_t moduleKey,
size_t wasmSize);
} // namespace rive
#endif