“IE” 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 IeJsRuntime, 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 “IE” JsRT JavaScript engine
        /// </summary>
        /// <param name="enableDebugging">Flag for whether to enable script debugging features</param>
        public ChakraIeJsRtJsEngine(bool enableDebugging)
            : base(JsEngineMode.ChakraIeJsRt, 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_IeJsEngineNotLoaded,
                                                     _engineModeName, LOWER_IE_VERSION, e.Message);
                    }

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