/// <summary> /// Executes a script /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="script">The script to run</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> /// <param name="parseAttributes">Attribute mask for parsing the script</param> /// <returns>The result of the script, if any</returns> public static JsValue RunScript(string script, JsSourceContext sourceContext, string sourceUrl, ref JsParseScriptAttributes parseAttributes) { JsValue scriptValue = JsValue.FromString(script); scriptValue.AddRef(); JsValue sourceUrlValue = JsValue.FromString(sourceUrl); sourceUrlValue.AddRef(); JsValue result; try { JsErrorCode errorCode = NativeMethods.JsRun(scriptValue, sourceContext, sourceUrlValue, parseAttributes, out result); JsErrorHelpers.ThrowIfError(errorCode); } finally { scriptValue.Release(); sourceUrlValue.Release(); } return(result); }
public static unsafe JsValue RunScriptUtf16Buffer( ReadOnlySpan <char> scriptBuffer, JsSourceContext sourceContext, ReadOnlySpan <char> sourceUrl) { //not work, because fixed.. https://github.com/dotnet/corefx/issues/31651 PInvoke marshaling will pin the pointer for ref byte hash arguments that will pin the whole block as side-effect fixed(char *scriptBufferPtr = &MemoryMarshal.GetReference(scriptBuffer)) fixed(char *sourceUrlPtr = &MemoryMarshal.GetReference(sourceUrl)) { JsErrorHelpers.ThrowIfError(NativeMethods.JsCreateStringUtf16((IntPtr)scriptBufferPtr, (uint)scriptBuffer.Length, out var scriptValue)); scriptValue.AddRef(); JsErrorHelpers.ThrowIfError(NativeMethods.JsCreateStringUtf16((IntPtr)sourceUrlPtr, (uint)sourceUrl.Length, out var sourceUrlValue)); sourceUrlValue.AddRef(); JsValue result; try { JsErrorHelpers.ThrowIfError(NativeMethods.JsRun(scriptValue, sourceContext, sourceUrlValue, JsParseScriptAttributes.None, out result)); } finally { scriptValue.Release(); sourceUrlValue.Release(); } return(result); } }
/// <summary> /// Executes a script /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="script">The script to run</param> /// <param name="sourceContext">The cookie identifying the script that can be used /// by script contexts that have debugging enabled</param> /// <param name="sourceName">The location the script came from</param> /// <returns>The result of the script, if any</returns> public static JsValue RunScript(string script, JsSourceContext sourceContext, string sourceName) { JsValue result; JsErrorCode errorCode; if (Utils.IsWindows()) { errorCode = NativeMethods.JsRunScript(script, sourceContext, sourceName, out result); JsErrorHelpers.ThrowIfError(errorCode); } else { JsValue scriptValue = JsValue.FromString(script); scriptValue.AddRef(); JsValue sourceUrlValue = JsValue.FromString(sourceName); sourceUrlValue.AddRef(); try { errorCode = NativeMethods.JsRun(scriptValue, sourceContext, sourceUrlValue, JsParseScriptAttributes.None, out result); JsErrorHelpers.ThrowIfError(errorCode); } finally { scriptValue.Release(); sourceUrlValue.Release(); } } return(result); }
/// <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); }
internal static extern JsErrorCode JsRunSerialized(JsValue buffer, JsSerializedLoadScriptCallback scriptLoadCallback, JsSourceContext sourceContext, JsValue sourceUrl, out JsValue result);
internal static extern JsErrorCode JsRun(JsValue script, JsSourceContext sourceContext, JsValue sourceUrl, JsParseScriptAttributes parseAttributes, out JsValue result);
internal static extern JsErrorCode JsRunSerializedScript(string script, byte[] buffer, JsSourceContext sourceContext, string sourceUrl, out JsValue result);
internal static extern JsErrorCode JsRunSerializedScriptWithCallback( JsSerializedScriptLoadSourceCallback scriptLoadCallback, JsSerializedScriptUnloadCallback scriptUnloadCallback, byte[] buffer, JsSourceContext sourceContext, string sourceUrl, out JsValue result);
internal static extern JsErrorCode JsRunScript(string script, JsSourceContext sourceContext, string sourceUrl, out JsValue result);