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.