/// <summary> /// Runs a serialized script /// </summary> /// <remarks> /// <para>Requires an active script context.</para> /// <para>The runtime will detach the data from the buffer and hold on to it until all /// instances of any functions created from the buffer are garbage collected.</para> /// </remarks> /// <param name="script">The source code of the serialized script</param> /// <param name="buffer">The serialized script</param> /// <param name="scriptLoadCallback">Callback to load the source code of the serialized script</param> /// <param name="sourceContext">A cookie identifying the script that can be used /// by debuggable script contexts</param> /// <param name="sourceUrl">The location the script came from</param> /// <returns>The result of running the script, if any</returns> public static JsValue RunSerializedScript(string script, byte[] buffer, JsSerializedLoadScriptCallback scriptLoadCallback, JsSourceContext sourceContext, string sourceUrl) { JsValue bufferValue = JsValue.CreateExternalArrayBuffer(buffer); bufferValue.AddRef(); JsValue sourceUrlValue = JsValue.FromString(sourceUrl); sourceUrlValue.AddRef(); JsValue result; try { JsErrorCode errorCode = NativeMethods.JsRunSerialized(bufferValue, scriptLoadCallback, sourceContext, sourceUrlValue, out result); JsErrorHelpers.ThrowIfError(errorCode); } finally { bufferValue.Release(); sourceUrlValue.Release(); } return(result); }
/// <summary> /// Constructs an instance of pre-compiled script /// </summary> /// <param name="code">The source code of the script</param> /// <param name="parseAttributes">Attribute mask for parsing the script</param> /// <param name="cachedBytes">Cached data for accelerated recompilation</param> /// <param name="documentName">Document name</param> public ChakraCorePrecompiledScript(string code, JsParseScriptAttributes parseAttributes, byte[] cachedBytes, string documentName) { _code = code; _parseAttributes = parseAttributes; _cachedBytes = cachedBytes; _documentName = documentName; _loadScriptSourceCodeCallback = LoadScriptSourceCode; }
internal static extern JsErrorCode JsRunSerialized(JsValue buffer, JsSerializedLoadScriptCallback scriptLoadCallback, JsSourceContext sourceContext, JsValue sourceUrl, out JsValue result);
public static extern JsErrorCode JsParseSerialized(JsValueRef buffer, JsSerializedLoadScriptCallback scriptLoadCallback, JsSourceContext sourceContext, JsValueRef sourceUrl, out JsValueRef result);