“Edge” Chakra runtime

Each Chakra runtime has its own independent execution engine, JIT compiler, and garbage collected heap. As such, each runtime is completely isolated from other runtimes.

Runtimes can be used on any thread, but only one thread can call into a runtime at any time.

NOTE: A EdgeJsRuntime, unlike other objects in the Chakra hosting API, is not garbage collected since it contains the garbage collected heap itself. A runtime will continue to exist until Dispose is called.

コード例 #1
0
        /// <summary>
        /// Constructs an instance of the Chakra “Edge” JsRT engine
        /// </summary>
        /// <param name="enableDebugging">Flag for whether to enable script debugging features</param>
        public ChakraEdgeJsRtJsEngine(bool enableDebugging)
            : base(JsEngineMode.ChakraEdgeJsRt, enableDebugging)
        {
            _dispatcher.Invoke(() =>
            {
                try
                {
                    _jsRuntime = CreateJsRuntime();
                    _jsContext = _jsRuntime.CreateContext();
                }
                catch (JsUsageException e)
                {
                    string errorMessage;
                    if (e.ErrorCode == JsErrorCode.WrongThread)
                    {
                        errorMessage = CommonStrings.Runtime_JsEnginesConflictOnMachine;
                    }
                    else
                    {
                        errorMessage = string.Format(CommonStrings.Runtime_EdgeJsEngineNotLoaded, e.Message);
                    }

                    throw new JsEngineLoadException(errorMessage, _engineModeName);
                }
                catch (Exception e)
                {
                    throw new JsEngineLoadException(
                        string.Format(CommonStrings.Runtime_EdgeJsEngineNotLoaded, e.Message), _engineModeName);
                }
            });
        }
コード例 #2
0
		internal static extern JsErrorCode JsDisposeRuntime(EdgeJsRuntime handle);
コード例 #3
0
		internal static extern JsErrorCode JsCollectGarbage(EdgeJsRuntime handle);
コード例 #4
0
		internal static extern JsErrorCode JsCreateRuntime(JsRuntimeAttributes attributes, JsThreadServiceCallback threadService, out EdgeJsRuntime runtime);
コード例 #5
0
 internal static extern JsErrorCode JsIsRuntimeExecutionDisabled(EdgeJsRuntime runtime, out bool isDisabled);
コード例 #6
0
		internal static extern JsErrorCode JsCreateContext(EdgeJsRuntime runtime, out EdgeJsContext newContext);
コード例 #7
0
		internal static extern JsErrorCode JsSetRuntimeMemoryAllocationCallback(EdgeJsRuntime runtime, IntPtr callbackState, JsMemoryAllocationCallback allocationCallback);
コード例 #8
0
		internal static extern JsErrorCode JsIsRuntimeExecutionDisabled(EdgeJsRuntime runtime, out bool isDisabled);
コード例 #9
0
 internal static extern JsErrorCode JsSetRuntimeBeforeCollectCallback(EdgeJsRuntime runtime,
                                                                      IntPtr callbackState, JsBeforeCollectCallback beforeCollectCallback);
コード例 #10
0
 internal static extern JsErrorCode JsSetRuntimeMemoryAllocationCallback(EdgeJsRuntime runtime,
                                                                         IntPtr callbackState, JsMemoryAllocationCallback allocationCallback);
コード例 #11
0
 internal static extern JsErrorCode JsSetRuntimeMemoryLimit(EdgeJsRuntime runtime, UIntPtr memoryLimit);
コード例 #12
0
 internal static extern JsErrorCode JsGetRuntimeMemoryUsage(EdgeJsRuntime runtime, out UIntPtr memoryUsage);
コード例 #13
0
 internal static extern JsErrorCode JsDisposeRuntime(EdgeJsRuntime handle);
コード例 #14
0
 internal static extern JsErrorCode JsCollectGarbage(EdgeJsRuntime handle);
コード例 #15
0
 internal static extern JsErrorCode JsCreateRuntime(JsRuntimeAttributes attributes,
                                                    JsThreadServiceCallback threadService, out EdgeJsRuntime runtime);
コード例 #16
0
		internal static extern JsErrorCode JsGetRuntimeMemoryUsage(EdgeJsRuntime runtime, out UIntPtr memoryUsage);
コード例 #17
0
		internal static extern JsErrorCode JsEnableRuntimeExecution(EdgeJsRuntime runtime);
コード例 #18
0
 internal static extern JsErrorCode JsCreateContext(EdgeJsRuntime runtime, out EdgeJsContext newContext);
コード例 #19
0
		internal static extern JsErrorCode JsSetRuntimeMemoryLimit(EdgeJsRuntime runtime, UIntPtr memoryLimit);
コード例 #20
0
 internal static extern JsErrorCode JsGetRuntime(EdgeJsContext context, out EdgeJsRuntime runtime);
コード例 #21
0
		internal static extern JsErrorCode JsSetRuntimeBeforeCollectCallback(EdgeJsRuntime runtime, IntPtr callbackState, JsBeforeCollectCallback beforeCollectCallback);
コード例 #22
0
 /// <summary>
 /// Creates a instance of JS runtime with special settings
 /// </summary>
 /// <returns>Instance of JS runtime with special settings</returns>
 private static EdgeJsRuntime CreateJsRuntime()
 {
     return(EdgeJsRuntime.Create(JsRuntimeAttributes.None, null));
 }
コード例 #23
0
		internal static extern JsErrorCode JsGetRuntime(EdgeJsContext context, out EdgeJsRuntime runtime);
コード例 #24
0
 internal static extern JsErrorCode JsEnableRuntimeExecution(EdgeJsRuntime runtime);