示例#1
0
 // 可在 GC 线程直接调用此方法
 public unsafe void FreeValues(int argc, JSValue *values)
 {
     if (argc == 0)
     {
         return;
     }
     if (_mainThreadId == Thread.CurrentThread.ManagedThreadId)
     {
         for (int i = 0; i < argc; i++)
         {
             JSApi.JS_FreeValueRT(_rt, values[i]);
         }
     }
     else
     {
         lock (_pendingActions)
         {
             for (int i = 0; i < argc; i++)
             {
                 var act = new JSAction()
                 {
                     value    = values[i],
                     callback = _FreeValueAction,
                 };
                 _pendingActions.Enqueue(act);
             }
         }
     }
 }
示例#2
0
        // unsafe primitive call, will not change ref count of jsvalue in argv
        public unsafe JSValue _Invoke(int argc, JSValue *argv)
        {
            if (_context == null)
            {
                return(JSApi.JS_UNDEFINED);
            }
            JSContext ctx  = _context;
            var       rVal = JSApi.JS_Call(ctx, _jsValue, _thisValue, argc, argv);

            return(rVal);
        }
示例#3
0
 public unsafe void FreeValues(int argc, JSValue *values)
 {
     _runtime.FreeValues(argc, values);
 }
示例#4
0
 public static extern unsafe JSValue JS_NewPromiseCapability(JSContext ctx, JSValue *resolving_funcs);
示例#5
0
        public unsafe JSValue Invoke(JSContext ctx, JSValue this_obj, int argc, JSValue *argv)
        {
            JSValue rval = JSApi.JS_Call(ctx, _jsValue, this_obj, argc, argv);

            return(rval);
        }
示例#6
0
        public unsafe JSValue Invoke(JSContext ctx, int argc, JSValue *argv)
        {
            JSValue rval = JSApi.JS_Call(ctx, _jsValue, JSApi.JS_UNDEFINED, argc, argv);

            return(rval);
        }
示例#7
0
        private unsafe static JSValue Hello(JSContext ctx, JSValue thisArg, int argc, JSValue[] argv, int magic, JSValue *data)
        {
            string name = argc > 0 ? argv[0].ToString(ctx) : "anonymous";

            Console.WriteLine($"Hello, {name}!");
            return(JSValue.Undefined);
        }
示例#8
0
 private unsafe ulong CFnData2Impl8(JSContext cx, JSValue thisArg, int argc, JSValue[] argv, int magic, JSValue *data)
 {
     try
     {
         var fnData = new JSValue[_data_len];
         for (int i = 0; i < fnData.Length; i++)
         {
             fnData[i] = data[i];
         }
         return(((JSCFunctionDataDelegate)_callback)(cx, thisArg, argv, magic, fnData).uint64);
     }
     catch (OutOfMemoryException)
     {
         return(JS_ThrowOutOfMemory(cx).uint64);
     }
     catch (Exception ex)
     {
         return(Utils.ReportException(cx, ex).uint64);
     }
 }
示例#9
0
 private unsafe JSValue CFnDataImpl16(JSContext cx, JSValue thisArg, int argc, JSValue[] argv, int magic, JSValue *data)
 {
     try
     {
         return(((JSCFunctionData)_callback)(cx, thisArg, argc, argv, magic, data));
     }
     catch (OutOfMemoryException)
     {
         return(JS_ThrowOutOfMemory(cx));
     }
     catch (Exception ex)
     {
         return(Utils.ReportException(cx, ex));
     }
 }