quickjs/ffi library

Classes

JSChannelType
JSContext
JSEvalFlag
JsMemoryUsage
Snapshot of QuickJS JSMemoryUsage fields used for monitoring.
JSProp
JSPropertyEnum
JSRef
JSRefLeakable
JSRuntime
JSTag
JsTypedArrayTransfer
A native buffer whose ownership can be transferred to a QuickJS TypedArray.
JSTypedArrayType
JSTypedArrayEnum values (order matches quickjs.h).
JSValue
NativeHeapUsage
C heap accounting: what the allocator holds vs what is actually live.

Extensions

ListFirstWhere on Iterable<T>

Constants

jsStripSource → const int
JS_STRIP_SOURCE: drop function source text from compiled code.

Properties

compileFn → Pointer<Uint8> Function(Pointer<JSContext>, Pointer<Char>, Pointer<Char>, Pointer<IntPtr>)
latefinal
compileWithFlagsFn → Pointer<Uint8> Function(Pointer<JSContext>, Pointer<Char>, Pointer<Char>, int, Pointer<IntPtr>)
DLLEXPORT uint8_t *jsCompile(JSContext *, const char *script, const char *fileName, int32_t eval_flags, size_t *lengthPtr)
latefinal
evaluateBytecodeFn → Pointer<JSValue> Function(Pointer<JSContext>, int, Pointer<Uint8>)
latefinal
jsAllocBuffer → Pointer<Uint8> Function(int len)
uint8_t *jsAllocBuffer(size_t len)
final
jsAtomToValue → Pointer<JSValue> Function(Pointer<JSContext> ctx, int val)
JSValue *jsAtomToValue(JSContext *ctx, JSAtom val)
final
jsBeginCall → void Function(Pointer<JSContext>)
void jsBeginCall(JSContext *ctx)
final
jsBridgeStatsAllocBytes → int Function()
final
jsBridgeStatsAllocCalls → int Function()
final
jsBridgeStatsCopyBytes → int Function()
final
jsBridgeStatsCopyCalls → int Function()
final
jsBridgeStatsFreeCalls → int Function()
final
jsBridgeStatsMemcpyBytes → int Function()
final
jsBridgeStatsMemcpyCalls → int Function()
final
jsBridgeStatsOwnedTypedArrayCalls → int Function()
final
jsBridgeStatsRecordCopy → void Function(int)
final
jsBridgeStatsReset → void Function()
Native bridge operation counters used by diagnostic tests and profiling.
final
jsBridgeStatsTypedArrayDataCalls → int Function()
final
jsDefinePropertyValue → int Function(Pointer<JSContext> ctx, Pointer<JSValue> thisObj, int prop, Pointer<JSValue> val, int flag)
int jsDefinePropertyValue(JSContext *ctx, JSValueConst *this_obj, JSAtom prop, JSValue *val, int flags)
final
jsDefinePropertyValueUint32 → int Function(Pointer<JSContext> ctx, Pointer<JSValue> thisObj, int prop, Pointer<JSValue> val, int flag)
int jsDefinePropertyValueUint32(JSContext *ctx, JSValueConst *this_obj, uint32_t idx, JSValue *val, int flags)
final
jsDupValue → Pointer<JSValue> Function(Pointer<JSContext> ctx, Pointer<JSValue> val)
JSValue *jsDupValue(JSContext *ctx, JSValueConst *v)
final
jsDupValueRT → Pointer<JSValue> Function(Pointer<JSRuntime> rt, Pointer<JSValue> val)
JSValue *jsDupValueRT(JSRuntime *rt, JSValue *v)
final
jsEndCall → void Function(Pointer<JSContext>)
void jsEndCall(JSContext *ctx)
final
jsEXCEPTION → Pointer<JSValue> Function()
JSValue *jsEXCEPTION()
final
jsExecutePendingJob → int Function(Pointer<JSRuntime> ctx)
int jsExecutePendingJob(JSRuntime *rt)
final
jsFree → void Function(Pointer<JSContext> ctx, Pointer<JSPropertyEnum> ptab)
void jsFree(JSContext *ctx, void *ptab)
final
jsFreeAtom → void Function(Pointer<JSContext> ctx, int v)
void jsFreeAtom(JSContext *ctx, JSAtom v)
final
jsFreeContext → void Function(Pointer<JSContext>)
void jsFreeContext(JSContext *ctx)
final
jsFreeCString → void Function(Pointer<JSContext> ctx, Pointer<Utf8> val)
void jsFreeCString(JSContext *ctx, const char *ptr)
final
jsGetArrayBuffer → Pointer<Uint8> Function(Pointer<JSContext> ctx, Pointer<IntPtr> psize, Pointer<JSValue> val)
uint8_t *jsGetArrayBuffer(JSContext *ctx, size_t *psize, JSValueConst *obj)
final
jsGetException → Pointer<JSValue> Function(Pointer<JSContext> ctx)
JSValue *jsGetException(JSContext *ctx)
final
jsGetObjectOpaque → int Function(Pointer<JSValue> obj, int classid)
DLLEXPORT void *jsGetObjectOpaque(JSValue *obj, uint32_t classid)
final
jsGetOwnPropertyNames → int Function(Pointer<JSContext> ctx, Pointer<Pointer<JSPropertyEnum>> ptab, Pointer<Uint32> plen, Pointer<JSValue> obj, int flags)
int jsGetOwnPropertyNames(JSContext *ctx, JSPropertyEnum **ptab, uint32_t *plen, JSValueConst *obj, int flags)
final
jsGetProperty → Pointer<JSValue> Function(Pointer<JSContext> ctx, Pointer<JSValue> thisObj, int prop)
JSValue *jsGetProperty(JSContext *ctx, JSValueConst *this_obj, JSAtom prop)
final
jsGetPropertyUint32 → Pointer<JSValue> Function(Pointer<JSContext> ctx, Pointer<JSValue> thisObj, int prop)
JSValue *jsGetPropertyUint32(JSContext *ctx, JSValueConst *this_obj, uint32_t idx)
final
jsGetRuntime → Pointer<JSRuntime> Function(Pointer<JSContext>)
JSRuntime *jsGetRuntime(JSContext *ctx)
final
jsGetStripInfo → int Function(Pointer<JSRuntime> ctx)
int32_t jsGetStripInfo(JSRuntime *rt)
final
jsGetTypedArrayData → Pointer<Uint8> Function(Pointer<JSContext> ctx, Pointer<JSValue> val, Pointer<IntPtr> plength, Pointer<Int32> ptype)
uint8_t *jsGetTypedArrayData(JSContext *ctx, JSValueConst *val, size_t *plength, int32_t *ptype)
final
jsIsArray → int Function(Pointer<JSContext> ctx, Pointer<JSValue> val)
int32_t jsIsArray(JSContext *ctx, JSValueConst *val)
final
jsIsError → int Function(Pointer<JSContext> ctx, Pointer<JSValue> val)
DLLEXPORT int32_t jsIsError(JSContext *ctx, JSValueConst *val);
final
jsIsException → int Function(Pointer<JSValue> val)
int jsIsException(JSValueConst *val)
final
jsIsFunction → int Function(Pointer<JSContext> ctx, Pointer<JSValue> val)
int32_t jsIsFunction(JSContext *ctx, JSValueConst *val)
final
jsIsJobPending → int Function(Pointer<JSRuntime> ctx)
DLLEXPORT int32_t jsIsJobPending(JSRuntime *rt)
final
jsIsPromise → int Function(Pointer<JSContext> ctx, Pointer<JSValue> val)
int32_t jsIsPromise(JSContext *ctx, JSValueConst *val)
final
jsMemcpy → void Function(Pointer<Uint8>, Pointer<Uint8>, int)
void jsMemcpy(uint8_t *dst, const uint8_t *src, size_t len)
final
jsNewArray → Pointer<JSValue> Function(Pointer<JSContext> ctx)
JSValue *jsNewArray(JSContext *ctx)
final
jsNewArrayBufferCopy → Pointer<JSValue> Function(Pointer<JSContext> ctx, Pointer<Uint8> buf, int len)
JSValue *jsNewArrayBufferCopy(JSContext *ctx, const uint8_t *buf, size_t len)
final
jsNewArrayBufferOwned → Pointer<JSValue> Function(Pointer<JSContext> ctx, Pointer<Uint8> buf, int len)
JSValue *jsNewArrayBufferOwned(JSContext *ctx, uint8_t *buf, size_t len)
final
jsNewBigInt64 → Pointer<JSValue> Function(Pointer<JSContext> ctx, int val)
JSValue *jsNewBigInt64(JSContext *ctx, int64_t v)
final
jsNewBool → Pointer<JSValue> Function(Pointer<JSContext> ctx, int val)
JSValue *jsNewBool(JSContext *ctx, int val)
final
jsNewCFunction → Pointer<JSValue> Function(Pointer<JSContext> ctx, Pointer<JSValue> val)
JSValue *jsNewCFunction(JSContext *ctx, JSValue *funcData)
final
jsNewError → Pointer<JSValue> Function(Pointer<JSContext> ctx)
DLLEXPORT JSValue *jsNewError(JSContext *ctx);
final
jsNewFloat64 → Pointer<JSValue> Function(Pointer<JSContext> ctx, double val)
JSValue *jsNewFloat64(JSContext *ctx, double val)
final
jsNewInt64 → Pointer<JSValue> Function(Pointer<JSContext> ctx, int val)
JSValue *jsNewInt64(JSContext *ctx, int64_t val)
final
jsNewObject → Pointer<JSValue> Function(Pointer<JSContext> ctx)
JSValue *jsNewObject(JSContext *ctx)
final
jsNewObjectClass → Pointer<JSValue> Function(Pointer<JSContext> ctx, int classId, int opaque)
DLLEXPORT JSValue *jsNewObjectClass(JSContext *ctx, uint32_t QJSClassId, void *opaque)
final
jsNewPromiseCapability → Pointer<JSValue> Function(Pointer<JSContext> ctx, Pointer<JSValue> val)
JSValue *jsNewPromiseCapability(JSContext *ctx, JSValue *resolving_funcs)
final
jsNewTypedArray → Pointer<JSValue> Function(Pointer<JSContext> ctx, Pointer<Uint8> buf, int len, int type)
JSValue *jsNewTypedArray(JSContext *ctx, const uint8_t *buf, size_t len, int32_t type)
final
jsNewTypedArrayOwned → Pointer<JSValue> Function(Pointer<JSContext> ctx, Pointer<Uint8> buf, int len, int type)
JSValue *jsNewTypedArrayOwned(JSContext *ctx, uint8_t *buf, size_t len, int32_t type)
final
jsNewWebNatives → Pointer<JSValue> Function(Pointer<JSContext> ctx)
JSValue *jsNewWebNatives(JSContext *ctx)
final
jsPropertyEnumGetAtom → int Function(Pointer<JSPropertyEnum> ptab, int i)
JSAtom jsPropertyEnumGetAtom(JSPropertyEnum *ptab, int i)
final
jsRunGC → void Function(Pointer<JSRuntime>)
DLLEXPORT void jsRunGC(JSRuntime *rt)
final
jsSetMaxStackSize → void Function(Pointer<JSRuntime>, int)
DLLEXPORT void jsSetMaxStackSize(JSRuntime *rt, size_t stack_size)
final
jsSetMemoryLimit → void Function(Pointer<JSRuntime>, int)
DLLEXPORT void jsSetMemoryLimit(JSRuntime *rt, size_t limit);
final
jsSetStripInfo → void Function(Pointer<JSRuntime>, int)
void jsSetStripInfo(JSRuntime *rt, int32_t flags)
final
jsTagIsFloat64 → int Function(int val)
DLLEXPORT bool jsTagIsFloat64(int32_t tag)
final
jsThrow → Pointer<JSValue> Function(Pointer<JSContext> ctx, Pointer<JSValue> val)
DLLEXPORT JSValue *jsThrow(JSContext *ctx, JSValue *obj)
final
jsToBool → int Function(Pointer<JSContext> ctx, Pointer<JSValue> val)
int32_t jsToBool(JSContext *ctx, JSValueConst *val)
final
jsToFloat64 → double Function(Pointer<JSContext> ctx, Pointer<JSValue> val)
double jsToFloat64(JSContext *ctx, JSValueConst *val)
final
jsToInt64 → int Function(Pointer<JSContext> ctx, Pointer<JSValue> val)
int64_t jsToFloat64(JSContext *ctx, JSValueConst *val)
final
jsUNDEFINED → Pointer<JSValue> Function()
JSValue *jsUNDEFINED()
final
jsValueGetPtr → int Function(Pointer<JSValue> val)
void *jsValueGetPtr(JSValue *val)
final
jsValueGetTag → int Function(Pointer<JSValue> val)
DLLEXPORT int32_t jsValueGetTag(JSValue *val)
final
jsValueToAtom → int Function(Pointer<JSContext> ctx, Pointer<JSValue> val)
JSAtom jsValueToAtom(JSContext *ctx, JSValueConst *val)
final
readModuleBytecodeFn → int Function(Pointer<JSContext>, int, Pointer<Uint8>, int)
DLLEXPORT int32_t jsReadModuleBytecode(JSContext *, size_t, uint8_t *, int32_t)
latefinal
runtimeOpaques → Map<Pointer<JSRuntime>, _RuntimeOpaque>
final
setJSValueList → void Function(Pointer<JSValue> list, int i, Pointer<JSValue> val)
void setJSValueList(JSValue *list, int i, JSValue *val)
final
sizeOfJSValue → int
final

Functions

channelDispacher(Pointer<JSContext> ctx, int type, Pointer<JSValue> argv) → Pointer<JSValue>
jsCall(Pointer<JSContext> ctx, Pointer<JSValue> funcObj, Pointer<JSValue> thisObj, List<Pointer<JSValue>> argv) → Pointer<JSValue>
jsComputeMemoryUsage(Pointer<JSRuntime> rt) → JsMemoryUsage
jsEval(Pointer<JSContext> ctx, String input, String filename, int evalFlags) → Pointer<JSValue>
jsFreeRuntime(Pointer<JSRuntime> rt) → void
jsFreeValue(Pointer<JSContext> ctx, Pointer<JSValue> val, {bool free = true}) → void
jsFreeValueRT(Pointer<JSRuntime> rt, Pointer<JSValue> val, {bool free = true}) → void
jsNewClass(Pointer<JSContext> ctx, String name) → int
jsNewContext(Pointer<JSRuntime> rt) → Pointer<JSContext>
jsNewRuntime(_JSChannel callback, int timeout, ReceivePort port, {int? memoryLimit}) → Pointer<JSRuntime>
jsNewString(Pointer<JSContext> ctx, String str) → Pointer<JSValue>
jsReleaseRuntimeRefs(Pointer<JSRuntime> rt, Pointer<JSContext> ctx) → String?
Release Dart-side references while ctx is still valid.
jsRuntimeReferenceCount(Pointer<JSRuntime> rt) → int
jsToCString(Pointer<JSContext> ctx, Pointer<JSValue> val) → String
readBridgeStats() → Map<String, int>
readNativeHeapUsage() → NativeHeapUsage
Snapshot of NativeHeapUsage for the whole process.
trimNativeHeap() → bool
Ask the C allocator to return free pages to the OS, and report whether it released anything. Unsupported allocators return false.