jsCall function

Pointer<JSValue> jsCall(
  1. Pointer<JSContext> ctx,
  2. Pointer<JSValue> funcObj,
  3. Pointer<JSValue> thisObj,
  4. List<Pointer<JSValue>> argv,
)

Implementation

Pointer<JSValue> jsCall(
  Pointer<JSContext> ctx,
  Pointer<JSValue> funcObj,
  Pointer<JSValue> thisObj,
  List<Pointer<JSValue>> argv,
) {
  final jsArgs = calloc<Uint8>(
    argv.length > 0 ? sizeOfJSValue * argv.length : 1,
  ).cast<JSValue>();
  for (int i = 0; i < argv.length; ++i) {
    Pointer<JSValue> jsArg = argv[i];
    setJSValueList(jsArgs, i, jsArg);
  }
  final func1 = jsDupValue(ctx, funcObj);
  final _thisObj = thisObj;
  final jsRet = _jsCall(ctx, funcObj, _thisObj, argv.length, jsArgs);
  jsFreeValue(ctx, func1);
  malloc.free(jsArgs);
  runtimeOpaques[jsGetRuntime(ctx)]?._port.sendPort.send(#call);
  return jsRet;
}