Version 5.5.3: Changed V8Update to use V8's GN-based build system; fixed VB.NET access to nonexistent JavaScript properties (GitHub Issue #47, Take 2); fixed script object serialization via Json.NET (GitHub Issue #60); added host item invocability assessment and patched V8's typeof implementation to return "object" for all non-delegate host objects (GitHub Issue #62); added DocumentInfo and related APIs to address GitHub Issue #46; fixed property bag invocation; updated deployment and API documentation. Tested with V8 6.8.275.28.
This commit is contained in:
Родитель
69ce8fadba
Коммит
8591cc5415
|
@ -35,3 +35,4 @@ ClearScript/V8/V8/build/
|
|||
ClearScript/V8/V8/lib/
|
||||
ClearScript/V8/V8/include/
|
||||
.vs/
|
||||
packages/
|
|
@ -2,6 +2,7 @@
|
|||
<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>
|
||||
<s:Boolean x:Key="/Default/CodeInspection/ExcludedFiles/FileMasksToSkip/=_002A_002Ecpp/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/CodeInspection/ExcludedFiles/FileMasksToSkip/=_002A_002Eh/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/CodeInspection/Highlighting/CalculateUnusedTypeMembers/@EntryValue">False</s:Boolean>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeRedundantParentheses/@EntryIndexedValue">DO_NOT_SHOW</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ConvertIfStatementToConditionalTernaryExpression/@EntryIndexedValue">DO_NOT_SHOW</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ConvertIfStatementToNullCoalescingExpression/@EntryIndexedValue">DO_NOT_SHOW</s:String>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>
|
||||
<s:Boolean x:Key="/Default/CodeInspection/ExcludedFiles/FileMasksToSkip/=_002A_002Ecpp/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/CodeInspection/ExcludedFiles/FileMasksToSkip/=_002A_002Eh/@EntryIndexedValue">True</s:Boolean>
|
||||
<s:Boolean x:Key="/Default/CodeInspection/Highlighting/CalculateUnusedTypeMembers/@EntryValue">False</s:Boolean>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeRedundantParentheses/@EntryIndexedValue">DO_NOT_SHOW</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ConvertIfStatementToConditionalTernaryExpression/@EntryIndexedValue">DO_NOT_SHOW</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ConvertIfStatementToNullCoalescingExpression/@EntryIndexedValue">DO_NOT_SHOW</s:String>
|
||||
|
|
|
@ -83,6 +83,11 @@ namespace Microsoft.ClearScript
|
|||
return target.TryInvoke(context, invokeFlags, args, bindArgs, out result);
|
||||
}
|
||||
|
||||
public override Invocability GetInvocability(BindingFlags bindFlags, ScriptAccess defaultAccess, bool ignoreDynamic)
|
||||
{
|
||||
return target.GetInvocability(bindFlags, defaultAccess, ignoreDynamic);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region IByRefArg implementation
|
||||
|
|
|
@ -64,6 +64,9 @@
|
|||
<ItemGroup>
|
||||
<Compile Include="CanonicalRefTable.cs" />
|
||||
<Compile Include="ContinuationCallback.cs" />
|
||||
<Compile Include="DocumentFlags.cs" />
|
||||
<Compile Include="DocumentInfo.cs" />
|
||||
<Compile Include="Invocability.cs" />
|
||||
<Compile Include="ImmutableValueAttribute.cs" />
|
||||
<Compile Include="HostItemCollateral.cs" />
|
||||
<Compile Include="HostItemFlags.cs" />
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using System;
|
||||
|
||||
namespace Microsoft.ClearScript
|
||||
{
|
||||
/// <summary>
|
||||
/// Defines script document attributes.
|
||||
/// </summary>
|
||||
[Flags]
|
||||
public enum DocumentFlags
|
||||
{
|
||||
/// <summary>
|
||||
/// Indicates that no attributes are present.
|
||||
/// </summary>
|
||||
None = 0,
|
||||
|
||||
/// <summary>
|
||||
/// Indicates that the script document is temporary and can be discarded after execution.
|
||||
/// Only Windows Script engines honor this attribute.
|
||||
/// </summary>
|
||||
IsTransient = 0x00000001
|
||||
}
|
||||
}
|
|
@ -0,0 +1,77 @@
|
|||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using Microsoft.ClearScript.Util;
|
||||
|
||||
namespace Microsoft.ClearScript
|
||||
{
|
||||
/// <summary>
|
||||
/// Contains information about a script document.
|
||||
/// </summary>
|
||||
public struct DocumentInfo
|
||||
{
|
||||
internal const string DefaultName = "Script Document";
|
||||
|
||||
private readonly string name;
|
||||
private readonly Uri uri;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new <see cref="DocumentInfo"/> structure with the specified document name.
|
||||
/// </summary>
|
||||
/// <param name="name">The document name.</param>
|
||||
public DocumentInfo(string name)
|
||||
: this()
|
||||
{
|
||||
this.name = MiscHelpers.EnsureNonBlank(name, DefaultName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new <see cref="DocumentInfo"/> structure with the specified document URI.
|
||||
/// </summary>
|
||||
/// <param name="uri">The document URI.</param>
|
||||
public DocumentInfo(Uri uri)
|
||||
: this()
|
||||
{
|
||||
MiscHelpers.VerifyNonNullArgument(uri, "uri");
|
||||
this.uri = uri.IsAbsoluteUri ? uri : new Uri(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + uri);
|
||||
name = Path.GetFileName(this.uri.AbsolutePath);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the document's name.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This property always returns a non-blank string. If a null or blank document name was
|
||||
/// specified at instantiation time, this property returns a default document name.
|
||||
/// </remarks>
|
||||
public string Name
|
||||
{
|
||||
get { return MiscHelpers.EnsureNonBlank(name, DefaultName); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the document's URI.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This property returns <c>null</c> if a URI was not specified at instantiation time.
|
||||
/// </remarks>
|
||||
public Uri Uri
|
||||
{
|
||||
get { return uri; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a source map URI for the document.
|
||||
/// </summary>
|
||||
public Uri SourceMapUri { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets optional document attributes.
|
||||
/// </summary>
|
||||
public DocumentFlags? Flags { get; set; }
|
||||
|
||||
internal string UniqueName { get; set; }
|
||||
}
|
||||
}
|
|
@ -5,5 +5,5 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#define CLEARSCRIPT_VERSION_STRING "5.5.2.0"
|
||||
#define CLEARSCRIPT_VERSION_COMMA_SEPARATED 5,5,2,0
|
||||
#define CLEARSCRIPT_VERSION_STRING "5.5.3.0"
|
||||
#define CLEARSCRIPT_VERSION_COMMA_SEPARATED 5,5,3,0
|
||||
|
|
|
@ -223,12 +223,12 @@ namespace Microsoft.ClearScript
|
|||
/// <item>
|
||||
/// <term><c>out</c></term>
|
||||
/// <term>read-only</term>
|
||||
/// <description>A reference to the host variable that can be passed as an <c><see href="http://msdn.microsoft.com/en-us/library/t3c3bfhx(VS.80).aspx">out</see></c> argument.</description>
|
||||
/// <description>A reference to the host variable that can be passed as an <c><see href="https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/out-parameter-modifier">out</see></c> argument.</description>
|
||||
/// </item>
|
||||
/// <item>
|
||||
/// <term><c>ref</c></term>
|
||||
/// <term>read-only</term>
|
||||
/// <description>A reference to the host variable that can be passed as a <c><see href="http://msdn.microsoft.com/en-us/library/14akc2c7(VS.80).aspx">ref</see></c> argument.</description>
|
||||
/// <description>A reference to the host variable that can be passed as a <c><see href="https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/ref">ref</see></c> argument.</description>
|
||||
/// </item>
|
||||
/// </list>
|
||||
/// </para>
|
||||
|
@ -305,7 +305,7 @@ namespace Microsoft.ClearScript
|
|||
/// This function creates a delegate that accepts <paramref name="argCount"/> arguments and
|
||||
/// returns no value. The type of all parameters is <see cref="System.Object"/>. Such a
|
||||
/// delegate is often useful in strongly typed contexts because of
|
||||
/// <see href="http://msdn.microsoft.com/en-us/library/ms173174(VS.80).aspx">contravariance</see>.
|
||||
/// <see href="https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/covariance-contravariance/">contravariance</see>.
|
||||
/// </remarks>
|
||||
/// <example>
|
||||
/// The following code demonstrates delegating a callback to a script function.
|
||||
|
@ -344,7 +344,7 @@ namespace Microsoft.ClearScript
|
|||
/// returns a value of the specified type. The type of all parameters is
|
||||
/// <see cref="System.Object"/>. Such a delegate is often useful in strongly typed contexts
|
||||
/// because of
|
||||
/// <see href="http://msdn.microsoft.com/en-us/library/ms173174(VS.80).aspx">contravariance</see>.
|
||||
/// <see href="https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/covariance-contravariance/">contravariance</see>.
|
||||
/// </remarks>
|
||||
/// <example>
|
||||
/// The following code demonstrates delegating a callback to a script function.
|
||||
|
@ -385,7 +385,7 @@ namespace Microsoft.ClearScript
|
|||
/// returns the result of invoking <paramref name="scriptFunc"/>. The type of all
|
||||
/// parameters and the return value is <see cref="System.Object"/>. Such a delegate is
|
||||
/// often useful in strongly typed contexts because of
|
||||
/// <see href="http://msdn.microsoft.com/en-us/library/ms173174(VS.80).aspx">contravariance</see>.
|
||||
/// <see href="https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/covariance-contravariance/">contravariance</see>.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// For information about the types of result values that script code can return, see
|
||||
|
@ -407,7 +407,7 @@ namespace Microsoft.ClearScript
|
|||
/// <remarks>
|
||||
/// <para>
|
||||
/// This function is similar to C#'s
|
||||
/// <c><see href="http://msdn.microsoft.com/en-us/library/58918ffs(VS.71).aspx">typeof</see></c>
|
||||
/// <c><see href="https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/typeof">typeof</see></c>
|
||||
/// operator. It is overloaded with <see cref="typeOf(object)"/> and selected at runtime if
|
||||
/// <typeparamref name="T"/> can be used as a type argument.
|
||||
/// </para>
|
||||
|
@ -442,7 +442,7 @@ namespace Microsoft.ClearScript
|
|||
/// <remarks>
|
||||
/// <para>
|
||||
/// This function is similar to C#'s
|
||||
/// <c><see href="http://msdn.microsoft.com/en-us/library/58918ffs(VS.71).aspx">typeof</see></c>
|
||||
/// <c><see href="https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/typeof">typeof</see></c>
|
||||
/// operator. It is overloaded with <see cref="typeOf{T}"/> and selected at runtime if
|
||||
/// <paramref name="value"/> cannot be used as a type argument. Note that this applies to
|
||||
/// some host types; examples are static types and overloaded generic type groups.
|
||||
|
@ -477,7 +477,7 @@ namespace Microsoft.ClearScript
|
|||
/// <returns><c>True</c> if <paramref name="value"/> is compatible with the specified type, <c>false</c> otherwise.</returns>
|
||||
/// <remarks>
|
||||
/// This function is similar to C#'s
|
||||
/// <c><see href="http://msdn.microsoft.com/en-us/library/scekt9xw(VS.71).aspx">is</see></c>
|
||||
/// <c><see href="https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/is">is</see></c>
|
||||
/// operator.
|
||||
/// </remarks>
|
||||
/// <example>
|
||||
|
@ -508,7 +508,7 @@ namespace Microsoft.ClearScript
|
|||
/// <returns>The result of the cast if successful, <c>null</c> otherwise.</returns>
|
||||
/// <remarks>
|
||||
/// This function is similar to C#'s
|
||||
/// <c><see href="http://msdn.microsoft.com/en-us/library/cscsdfbt(VS.71).aspx">as</see></c>
|
||||
/// <c><see href="https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/as">as</see></c>
|
||||
/// operator.
|
||||
/// </remarks>
|
||||
/// <example>
|
||||
|
|
|
@ -88,6 +88,11 @@ namespace Microsoft.ClearScript
|
|||
return true;
|
||||
}
|
||||
|
||||
public override Invocability GetInvocability(BindingFlags bindFlags, ScriptAccess defaultAccess, bool ignoreDynamic)
|
||||
{
|
||||
return Invocability.Delegate;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
|
@ -130,6 +130,19 @@ namespace Microsoft.ClearScript
|
|||
get { return flags; }
|
||||
}
|
||||
|
||||
public Invocability Invocability
|
||||
{
|
||||
get
|
||||
{
|
||||
if (TargetInvocability == null)
|
||||
{
|
||||
TargetInvocability = target.GetInvocability(GetCommonBindFlags(), defaultAccess, flags.HasFlag(HostItemFlags.HideDynamicMembers));
|
||||
}
|
||||
|
||||
return TargetInvocability.GetValueOrDefault();
|
||||
}
|
||||
}
|
||||
|
||||
public object InvokeMember(string name, BindingFlags invokeFlags, object[] args, object[] bindArgs, CultureInfo culture, bool bypassTunneling)
|
||||
{
|
||||
bool isCacheable;
|
||||
|
@ -378,6 +391,12 @@ namespace Microsoft.ClearScript
|
|||
set { targetMemberData.ExtensionMethodSummary = value; }
|
||||
}
|
||||
|
||||
private Invocability? TargetInvocability
|
||||
{
|
||||
get { return targetMemberData.TargetInvocability; }
|
||||
set { targetMemberData.TargetInvocability = value; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region initialization
|
||||
|
@ -525,6 +544,13 @@ namespace Microsoft.ClearScript
|
|||
return;
|
||||
}
|
||||
|
||||
if (target is ScriptMethod)
|
||||
{
|
||||
// script methods can share their (dummy) member data
|
||||
targetMemberData = engine.SharedScriptMethodMemberData;
|
||||
return;
|
||||
}
|
||||
|
||||
var hostObject = target as HostObject;
|
||||
if (hostObject != null)
|
||||
{
|
||||
|
@ -1014,14 +1040,24 @@ namespace Microsoft.ClearScript
|
|||
{
|
||||
if (invokeFlags.HasFlag(BindingFlags.InvokeMethod))
|
||||
{
|
||||
object value;
|
||||
|
||||
if (name == SpecialMemberNames.Default)
|
||||
{
|
||||
if (invokeFlags.HasFlag(BindingFlags.GetField) && (args.Length < 1))
|
||||
if (invokeFlags.HasFlag(BindingFlags.GetField))
|
||||
{
|
||||
if (args.Length < 1)
|
||||
{
|
||||
return TargetPropertyBag;
|
||||
}
|
||||
|
||||
throw new NotSupportedException("Object does not support invocation");
|
||||
if (args.Length == 1)
|
||||
{
|
||||
return TargetPropertyBag.TryGetValue(Convert.ToString(args[0]), out value) ? value : Nonexistent.Value;
|
||||
}
|
||||
}
|
||||
|
||||
throw new NotSupportedException("Object does not support the requested invocation operation");
|
||||
}
|
||||
|
||||
if (name == SpecialMemberNames.NewEnum)
|
||||
|
@ -1029,7 +1065,6 @@ namespace Microsoft.ClearScript
|
|||
return HostObject.Wrap(TargetPropertyBag.GetEnumerator(), typeof(IEnumerator));
|
||||
}
|
||||
|
||||
object value;
|
||||
if (!TargetPropertyBag.TryGetValue(name, out value))
|
||||
{
|
||||
throw new MissingMemberException(MiscHelpers.FormatInvariant("Object has no property named '{0}'", name));
|
||||
|
@ -1041,16 +1076,39 @@ namespace Microsoft.ClearScript
|
|||
return result;
|
||||
}
|
||||
|
||||
if (invokeFlags.HasFlag(BindingFlags.GetField) && (args.Length < 1))
|
||||
if (invokeFlags.HasFlag(BindingFlags.GetField))
|
||||
{
|
||||
if (args.Length < 1)
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
if (args.Length == 1)
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
throw new InvalidOperationException("Cannot invoke a null property value");
|
||||
}
|
||||
|
||||
return ((HostItem)Wrap(engine, value)).InvokeMember(SpecialMemberNames.Default, invokeFlags, args, bindArgs, null, true);
|
||||
}
|
||||
}
|
||||
|
||||
throw new NotSupportedException("Object does not support the requested invocation operation");
|
||||
}
|
||||
|
||||
if (invokeFlags.HasFlag(BindingFlags.GetField))
|
||||
{
|
||||
if (name == SpecialMemberNames.Default)
|
||||
{
|
||||
if (args.Length == 1)
|
||||
{
|
||||
return TargetPropertyBag[Convert.ToString(args[0])];
|
||||
}
|
||||
|
||||
throw new InvalidOperationException("Invalid argument count");
|
||||
}
|
||||
|
||||
if (args.Length < 1)
|
||||
{
|
||||
object value;
|
||||
|
@ -1062,11 +1120,37 @@ namespace Microsoft.ClearScript
|
|||
|
||||
if (invokeFlags.HasFlag(BindingFlags.SetField))
|
||||
{
|
||||
if (name == SpecialMemberNames.Default)
|
||||
{
|
||||
if (args.Length == 2)
|
||||
{
|
||||
return TargetPropertyBag[Convert.ToString(args[0])] = args[1];
|
||||
}
|
||||
|
||||
throw new InvalidOperationException("Invalid argument count");
|
||||
}
|
||||
|
||||
if (args.Length == 1)
|
||||
{
|
||||
return TargetPropertyBag[name] = args[0];
|
||||
}
|
||||
|
||||
if (args.Length == 2)
|
||||
{
|
||||
object value;
|
||||
if (TargetPropertyBag.TryGetValue(name, out value))
|
||||
{
|
||||
if (value == null)
|
||||
{
|
||||
throw new InvalidOperationException("Cannot invoke a null property value");
|
||||
}
|
||||
|
||||
return ((HostItem)Wrap(engine, value)).InvokeMember(SpecialMemberNames.Default, invokeFlags, args, bindArgs, null, true);
|
||||
}
|
||||
|
||||
throw new MissingMemberException(MiscHelpers.FormatInvariant("Object has no property named '{0}'", name));
|
||||
}
|
||||
|
||||
throw new InvalidOperationException("Invalid argument count");
|
||||
}
|
||||
|
||||
|
@ -1206,8 +1290,13 @@ namespace Microsoft.ClearScript
|
|||
return target;
|
||||
}
|
||||
|
||||
if (TargetDynamicMetaObject != null)
|
||||
{
|
||||
// dynamic target; don't throw for default indexed property retrieval failure
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
throw new NotSupportedException("Object does not support the requested invocation operation");
|
||||
}
|
||||
|
|
|
@ -60,6 +60,11 @@ namespace Microsoft.ClearScript
|
|||
return true;
|
||||
}
|
||||
|
||||
public override Invocability GetInvocability(BindingFlags bindFlags, ScriptAccess defaultAccess, bool ignoreDynamic)
|
||||
{
|
||||
return Invocability.Delegate;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
|
@ -126,6 +126,11 @@ namespace Microsoft.ClearScript
|
|||
get { return HostTargetFlags.AllowInstanceMembers | HostTargetFlags.AllowExtensionMethods; }
|
||||
}
|
||||
|
||||
public override Invocability GetInvocability(BindingFlags bindFlags, ScriptAccess defaultAccess, bool ignoreDynamic)
|
||||
{
|
||||
return type.GetInvocability(bindFlags, defaultAccess, ignoreDynamic);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Nested type: NullWrapper<T>
|
||||
|
|
|
@ -40,5 +40,7 @@ namespace Microsoft.ClearScript
|
|||
result = null;
|
||||
return false;
|
||||
}
|
||||
|
||||
public abstract Invocability GetInvocability(BindingFlags bindFlags, ScriptAccess defaultAccess, bool ignoreDynamic);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ namespace Microsoft.ClearScript
|
|||
|
||||
public object EnumerationSettingsToken;
|
||||
public ExtensionMethodSummary ExtensionMethodSummary;
|
||||
public Invocability? TargetInvocability;
|
||||
}
|
||||
|
||||
internal sealed class SharedHostObjectMemberData : HostTargetMemberData
|
||||
|
|
|
@ -233,6 +233,11 @@ namespace Microsoft.ClearScript
|
|||
return true;
|
||||
}
|
||||
|
||||
public override Invocability GetInvocability(BindingFlags bindFlags, ScriptAccess defaultAccess, bool ignoreDynamic)
|
||||
{
|
||||
return Invocability.Delegate;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region IScriptableObject implementation
|
||||
|
|
|
@ -160,6 +160,11 @@ namespace Microsoft.ClearScript
|
|||
return false;
|
||||
}
|
||||
|
||||
public override Invocability GetInvocability(BindingFlags bindFlags, ScriptAccess defaultAccess, bool ignoreDynamic)
|
||||
{
|
||||
return typeof(T).GetInvocability(bindFlags, defaultAccess, ignoreDynamic);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region IHostVariable implementation
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
namespace Microsoft.ClearScript
|
||||
{
|
||||
internal enum Invocability
|
||||
{
|
||||
None,
|
||||
Delegate,
|
||||
Dynamic,
|
||||
DefaultProperty
|
||||
}
|
||||
}
|
|
@ -17,13 +17,13 @@ using System.Runtime.InteropServices;
|
|||
[assembly: InternalsVisibleTo("ClearScriptTest")]
|
||||
|
||||
[assembly: ComVisible(false)]
|
||||
[assembly: AssemblyVersion("5.5.2.0")]
|
||||
[assembly: AssemblyFileVersion("5.5.2.0")]
|
||||
[assembly: AssemblyVersion("5.5.3.0")]
|
||||
[assembly: AssemblyFileVersion("5.5.3.0")]
|
||||
|
||||
namespace Microsoft.ClearScript.Properties
|
||||
{
|
||||
internal static class ClearScriptVersion
|
||||
{
|
||||
public const string Value = "5.5.2.0";
|
||||
public const string Value = "5.5.3.0";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -926,7 +926,22 @@ namespace Microsoft.ClearScript
|
|||
/// </remarks>
|
||||
public void Execute(string documentName, bool discard, string code)
|
||||
{
|
||||
Execute(documentName, code, false, discard);
|
||||
Execute(new DocumentInfo(documentName) { Flags = discard ? DocumentFlags.IsTransient : DocumentFlags.None }, code);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Executes script code with the specified document information.
|
||||
/// </summary>
|
||||
/// <param name="documentInfo">A structure containing information about the script document.</param>
|
||||
/// <param name="code">The script code to execute.</param>
|
||||
/// <remarks>
|
||||
/// In some script languages the distinction between statements and expressions is
|
||||
/// significant but ambiguous for certain syntactic elements. This method always
|
||||
/// interprets the specified script code as a statement.
|
||||
/// </remarks>
|
||||
public void Execute(DocumentInfo documentInfo, string code)
|
||||
{
|
||||
Execute(documentInfo, code, false);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -942,7 +957,7 @@ namespace Microsoft.ClearScript
|
|||
/// </remarks>
|
||||
public virtual string ExecuteCommand(string command)
|
||||
{
|
||||
return GetCommandResultString(Evaluate("Command", true, command, false));
|
||||
return GetCommandResultString(Evaluate(new DocumentInfo("Command") { Flags = DocumentFlags.IsTransient }, command, false));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -1097,7 +1112,29 @@ namespace Microsoft.ClearScript
|
|||
/// </remarks>
|
||||
public object Evaluate(string documentName, bool discard, string code)
|
||||
{
|
||||
return Evaluate(documentName, discard, code, true);
|
||||
return Evaluate(new DocumentInfo(documentName) { Flags = discard ? DocumentFlags.IsTransient : DocumentFlags.None }, code);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Evaluates script code with the specified document information.
|
||||
/// </summary>
|
||||
/// <param name="documentInfo">A structure containing information about the script document.</param>
|
||||
/// <param name="code">The script code to evaluate.</param>
|
||||
/// <returns>The result value.</returns>
|
||||
/// <remarks>
|
||||
/// <para>
|
||||
/// In some script languages the distinction between statements and expressions is
|
||||
/// significant but ambiguous for certain syntactic elements. This method always
|
||||
/// interprets the specified script code as an expression.
|
||||
/// </para>
|
||||
/// <para>
|
||||
/// For information about the types of result values that script code can return, see
|
||||
/// <see cref="Evaluate(string, bool, string)"/>.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
public object Evaluate(DocumentInfo documentInfo, string code)
|
||||
{
|
||||
return Evaluate(documentInfo, code, true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -1193,11 +1230,16 @@ namespace Microsoft.ClearScript
|
|||
return args.Select(arg => MarshalToHost(arg, preserveHostTargets)).ToArray();
|
||||
}
|
||||
|
||||
internal abstract object Execute(string documentName, string code, bool evaluate, bool discard);
|
||||
internal abstract object Execute(DocumentInfo documentInfo, string code, bool evaluate);
|
||||
|
||||
internal object Evaluate(string documentName, bool discard, string code, bool marshalResult)
|
||||
internal object Evaluate(DocumentInfo documentInfo, string code, bool marshalResult)
|
||||
{
|
||||
var result = Execute(documentName, code, true, discard);
|
||||
if (!documentInfo.Flags.HasValue)
|
||||
{
|
||||
documentInfo.Flags = DocumentFlags.IsTransient;
|
||||
}
|
||||
|
||||
var result = Execute(documentInfo, code, true);
|
||||
if (marshalResult)
|
||||
{
|
||||
result = MarshalToHost(result, false);
|
||||
|
@ -1577,6 +1619,7 @@ namespace Microsoft.ClearScript
|
|||
|
||||
internal readonly HostTargetMemberData SharedHostMethodMemberData = new HostTargetMemberData();
|
||||
internal readonly HostTargetMemberData SharedHostIndexedPropertyMemberData = new HostTargetMemberData();
|
||||
internal readonly HostTargetMemberData SharedScriptMethodMemberData = new HostTargetMemberData();
|
||||
|
||||
private readonly ConditionalWeakTable<Type, List<WeakReference>> sharedHostObjectMemberDataCache = new ConditionalWeakTable<Type, List<WeakReference>>();
|
||||
|
||||
|
|
|
@ -246,7 +246,7 @@ namespace Microsoft.ClearScript
|
|||
public MemberInfo[] GetMember(string name, BindingFlags bindFlags)
|
||||
{
|
||||
// ReSharper disable CoVariantArrayConversion
|
||||
return GetFields(bindFlags).Where(propertyInfo => propertyInfo.Name == name).ToArray();
|
||||
return new [] { MemberMap.GetField(name) };
|
||||
// ReSharper restore CoVariantArrayConversion
|
||||
}
|
||||
|
||||
|
|
|
@ -66,6 +66,11 @@ namespace Microsoft.ClearScript
|
|||
return true;
|
||||
}
|
||||
|
||||
public override Invocability GetInvocability(BindingFlags bindFlags, ScriptAccess defaultAccess, bool ignoreDynamic)
|
||||
{
|
||||
return Invocability.Delegate;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region IReflect implementation
|
||||
|
|
|
@ -7,7 +7,7 @@ namespace Microsoft.ClearScript
|
|||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Use this class in conjunction with C#'s
|
||||
/// <c><see href="http://msdn.microsoft.com/en-us/library/scekt9xw(VS.71).aspx">is</see></c>
|
||||
/// <c><see href="https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/is">is</see></c>
|
||||
/// operator to identify script objects.
|
||||
/// </remarks>
|
||||
/// <seealso cref="ScriptEngine.Evaluate(string, bool, string)"/>
|
||||
|
|
|
@ -68,7 +68,16 @@ namespace Microsoft.ClearScript.Util
|
|||
|
||||
public override FieldAttributes Attributes
|
||||
{
|
||||
get { throw new NotImplementedException(); }
|
||||
get
|
||||
{
|
||||
// This occurs during VB-based dynamic script item invocation. It was not
|
||||
// observed before script items gained an IReflect/IExpando implementation that
|
||||
// exposes script item properties as fields. Apparently VB's dynamic invocation
|
||||
// support not only recognizes IReflect/IExpando but actually favors it over
|
||||
// DynamicObject.
|
||||
|
||||
return FieldAttributes.Public;
|
||||
}
|
||||
}
|
||||
|
||||
public override RuntimeFieldHandle FieldHandle
|
||||
|
|
|
@ -155,6 +155,28 @@ namespace Microsoft.ClearScript.Util
|
|||
return string.Join("\n", lines) + '\n';
|
||||
}
|
||||
|
||||
public static string GetUrlOrPath(Uri uri, string alternate)
|
||||
{
|
||||
Debug.Assert(alternate != null);
|
||||
|
||||
if (uri == null)
|
||||
{
|
||||
return alternate;
|
||||
}
|
||||
|
||||
if (!uri.IsAbsoluteUri)
|
||||
{
|
||||
return uri.ToString();
|
||||
}
|
||||
|
||||
if (uri.IsFile)
|
||||
{
|
||||
return uri.LocalPath;
|
||||
}
|
||||
|
||||
return uri.AbsoluteUri;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region index helpers
|
||||
|
|
|
@ -87,6 +87,7 @@ namespace Microsoft.ClearScript.Util
|
|||
|
||||
public static readonly int E_NOINTERFACE = 0x80004002U.ToSigned();
|
||||
public static readonly int E_ABORT = 0x80004004U.ToSigned();
|
||||
public static readonly int E_FAIL = 0x80004005U.ToSigned();
|
||||
public static readonly int E_INVALIDARG = 0x80070057U.ToSigned();
|
||||
|
||||
public static readonly int DISP_E_UNKNOWNNAME = 0x80020006U.ToSigned();
|
||||
|
|
|
@ -2,8 +2,10 @@
|
|||
// Licensed under the MIT license.
|
||||
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Dynamic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
|
@ -40,6 +42,8 @@ namespace Microsoft.ClearScript.Util
|
|||
typeof(decimal?)
|
||||
};
|
||||
|
||||
private static readonly ConcurrentDictionary<Tuple<Type, BindingFlags, ScriptAccess, bool>, Invocability> invocabilityMap = new ConcurrentDictionary<Tuple<Type, BindingFlags, ScriptAccess, bool>, Invocability>();
|
||||
|
||||
public static bool IsStatic(this Type type)
|
||||
{
|
||||
return type.IsAbstract && type.IsSealed;
|
||||
|
@ -331,6 +335,12 @@ namespace Microsoft.ClearScript.Util
|
|||
|
||||
public static IEnumerable<PropertyInfo> GetScriptableDefaultProperties(this Type type, BindingFlags bindFlags, ScriptAccess defaultAccess)
|
||||
{
|
||||
if (type.IsArray)
|
||||
{
|
||||
var property = typeof(IList<>).MakeSpecificType(type.GetElementType()).GetProperty("Item");
|
||||
return (property != null) ? new[] { property } : ArrayHelpers.GetEmptyArray<PropertyInfo>();
|
||||
}
|
||||
|
||||
var properties = type.GetProperties(bindFlags).AsEnumerable();
|
||||
if (type.IsInterface)
|
||||
{
|
||||
|
@ -363,6 +373,11 @@ namespace Microsoft.ClearScript.Util
|
|||
return type.GetNestedTypes(bindFlags).Where(nestedType => nestedType.IsScriptable(defaultAccess));
|
||||
}
|
||||
|
||||
public static Invocability GetInvocability(this Type type, BindingFlags bindFlags, ScriptAccess defaultAccess, bool ignoreDynamic)
|
||||
{
|
||||
return invocabilityMap.GetOrAdd(Tuple.Create(type, bindFlags, defaultAccess, ignoreDynamic), GetInvocabilityInternal);
|
||||
}
|
||||
|
||||
public static object CreateInstance(this Type type, params object[] args)
|
||||
{
|
||||
return type.CreateInstance(BindingFlags.Public, args);
|
||||
|
@ -537,6 +552,26 @@ namespace Microsoft.ClearScript.Util
|
|||
return fullTypeName;
|
||||
}
|
||||
|
||||
private static Invocability GetInvocabilityInternal(Tuple<Type, BindingFlags, ScriptAccess, bool> args)
|
||||
{
|
||||
if (typeof(Delegate).IsAssignableFrom(args.Item1))
|
||||
{
|
||||
return Invocability.Delegate;
|
||||
}
|
||||
|
||||
if (!args.Item4 && typeof(IDynamicMetaObjectProvider).IsAssignableFrom(args.Item1))
|
||||
{
|
||||
return Invocability.Dynamic;
|
||||
}
|
||||
|
||||
if (args.Item1.GetScriptableDefaultProperties(args.Item2, args.Item3).Any())
|
||||
{
|
||||
return Invocability.DefaultProperty;
|
||||
}
|
||||
|
||||
return Invocability.None;
|
||||
}
|
||||
|
||||
private static bool IsValidLocatorChar(char ch)
|
||||
{
|
||||
return char.IsLetterOrDigit(ch) || (ch == '_') || (ch == '.');
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(VisualStudioVersion)'=='15.0'">
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<WindowsTargetPlatformVersion Condition="'$(WindowsTargetPlatformVersion)'==''">$([Microsoft.Build.Utilities.ToolLocationHelper]::GetLatestSDKTargetPlatformVersion('Windows', '10.0'))</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(VisualStudioVersion)'=='14.0'">
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
|
@ -81,7 +82,7 @@
|
|||
<Link>
|
||||
<GenerateDebugInformation Condition="'$(VisualStudioVersion)'=='15.0'">DebugFull</GenerateDebugInformation>
|
||||
<GenerateDebugInformation Condition="'$(VisualStudioVersion)'=='14.0'">true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>..\..\V8\lib\v8-ia32.lib</AdditionalDependencies>
|
||||
<AdditionalDependencies>..\..\V8\lib\v8-ia32.dll.lib</AdditionalDependencies>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>..\..\..\Exports</AdditionalIncludeDirectories>
|
||||
|
@ -112,7 +113,7 @@
|
|||
<Link>
|
||||
<GenerateDebugInformation Condition="'$(VisualStudioVersion)'=='15.0'">DebugFull</GenerateDebugInformation>
|
||||
<GenerateDebugInformation Condition="'$(VisualStudioVersion)'=='14.0'">true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>..\..\V8\lib\v8-ia32.lib</AdditionalDependencies>
|
||||
<AdditionalDependencies>..\..\V8\lib\v8-ia32.dll.lib</AdditionalDependencies>
|
||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
|
@ -207,7 +208,7 @@
|
|||
</CustomBuild>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="..\..\V8\lib\v8-ia32.pdb">
|
||||
<CustomBuild Include="..\..\V8\lib\v8-ia32.dll.pdb">
|
||||
<FileType>Document</FileType>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" "$(OutDir)"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" "$(OutDir)"</Command>
|
||||
|
@ -239,6 +240,7 @@
|
|||
<ClInclude Include="..\V8ContextImpl.h" />
|
||||
<ClInclude Include="..\V8ContextProxyImpl.h" />
|
||||
<ClInclude Include="..\V8DebugListenerImpl.h" />
|
||||
<ClInclude Include="..\V8DocumentInfo.h" />
|
||||
<ClInclude Include="..\V8Exception.h" />
|
||||
<ClInclude Include="..\V8Isolate.h" />
|
||||
<ClInclude Include="..\V8IsolateConstraints.h" />
|
||||
|
@ -268,7 +270,7 @@
|
|||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(OutDir)%(Filename)%(Extension)</Outputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(OutDir)%(Filename)%(Extension)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\..\V8\lib\v8-base-ia32.pdb">
|
||||
<CustomBuild Include="..\..\V8\lib\v8-base-ia32.dll.pdb">
|
||||
<FileType>Document</FileType>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">copy "%(FullPath)" "$(OutDir)"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">copy "%(FullPath)" "$(OutDir)"</Command>
|
||||
|
@ -278,6 +280,9 @@
|
|||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(OutDir)%(Filename)%(Extension)</Outputs>
|
||||
</CustomBuild>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
|
|
|
@ -85,9 +85,9 @@
|
|||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="..\..\V8\lib\v8-ia32.dll" />
|
||||
<CustomBuild Include="..\..\V8\lib\v8-ia32.pdb" />
|
||||
<CustomBuild Include="..\..\V8\lib\v8-ia32.dll.pdb" />
|
||||
<CustomBuild Include="..\..\V8\lib\v8-base-ia32.dll" />
|
||||
<CustomBuild Include="..\..\V8\lib\v8-base-ia32.pdb" />
|
||||
<CustomBuild Include="..\..\V8\lib\v8-base-ia32.dll.pdb" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\ClearScriptV8Managed.h">
|
||||
|
@ -207,5 +207,8 @@
|
|||
<ClInclude Include="..\V8CacheType.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\V8DocumentInfo.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -31,6 +31,7 @@
|
|||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(VisualStudioVersion)'=='15.0'">
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
<WindowsTargetPlatformVersion Condition="'$(WindowsTargetPlatformVersion)'==''">$([Microsoft.Build.Utilities.ToolLocationHelper]::GetLatestSDKTargetPlatformVersion('Windows', '10.0'))</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(VisualStudioVersion)'=='14.0'">
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
|
@ -82,7 +83,7 @@
|
|||
<Link>
|
||||
<GenerateDebugInformation Condition="'$(VisualStudioVersion)'=='15.0'">DebugFull</GenerateDebugInformation>
|
||||
<GenerateDebugInformation Condition="'$(VisualStudioVersion)'=='14.0'">true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>..\..\V8\lib\v8-x64.lib</AdditionalDependencies>
|
||||
<AdditionalDependencies>..\..\V8\lib\v8-x64.dll.lib</AdditionalDependencies>
|
||||
</Link>
|
||||
<ResourceCompile>
|
||||
<AdditionalIncludeDirectories>..\..\..\Exports</AdditionalIncludeDirectories>
|
||||
|
@ -113,7 +114,7 @@
|
|||
<Link>
|
||||
<GenerateDebugInformation Condition="'$(VisualStudioVersion)'=='15.0'">DebugFull</GenerateDebugInformation>
|
||||
<GenerateDebugInformation Condition="'$(VisualStudioVersion)'=='14.0'">true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>..\..\V8\lib\v8-x64.lib</AdditionalDependencies>
|
||||
<AdditionalDependencies>..\..\V8\lib\v8-x64.dll.lib</AdditionalDependencies>
|
||||
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
|
@ -208,7 +209,7 @@
|
|||
</CustomBuild>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="..\..\V8\lib\v8-x64.pdb">
|
||||
<CustomBuild Include="..\..\V8\lib\v8-x64.dll.pdb">
|
||||
<FileType>Document</FileType>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" "$(OutDir)"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" "$(OutDir)"</Command>
|
||||
|
@ -240,6 +241,7 @@
|
|||
<ClInclude Include="..\V8ContextImpl.h" />
|
||||
<ClInclude Include="..\V8ContextProxyImpl.h" />
|
||||
<ClInclude Include="..\V8DebugListenerImpl.h" />
|
||||
<ClInclude Include="..\V8DocumentInfo.h" />
|
||||
<ClInclude Include="..\V8Exception.h" />
|
||||
<ClInclude Include="..\V8Isolate.h" />
|
||||
<ClInclude Include="..\V8IsolateConstraints.h" />
|
||||
|
@ -269,7 +271,7 @@
|
|||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">copy "%(FullPath)" "$(OutDir)"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" "$(OutDir)"</Command>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\..\V8\lib\v8-base-x64.pdb">
|
||||
<CustomBuild Include="..\..\V8\lib\v8-base-x64.dll.pdb">
|
||||
<FileType>Document</FileType>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(OutDir)%(Filename)%(Extension)</Outputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(OutDir)%(Filename)%(Extension)</Outputs>
|
||||
|
@ -279,6 +281,9 @@
|
|||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">copy "%(FullPath)" "$(OutDir)"</Command>
|
||||
</CustomBuild>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
|
|
|
@ -85,9 +85,9 @@
|
|||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="..\..\V8\lib\v8-x64.dll" />
|
||||
<CustomBuild Include="..\..\V8\lib\v8-x64.pdb" />
|
||||
<CustomBuild Include="..\..\V8\lib\v8-x64.dll.pdb" />
|
||||
<CustomBuild Include="..\..\V8\lib\v8-base-x64.dll" />
|
||||
<CustomBuild Include="..\..\V8\lib\v8-base-x64.pdb" />
|
||||
<CustomBuild Include="..\..\V8\lib\v8-base-x64.dll.pdb" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\ClearScriptV8Managed.h">
|
||||
|
@ -207,5 +207,8 @@
|
|||
<ClInclude Include="..\V8CacheType.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\V8DocumentInfo.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -17,6 +17,7 @@
|
|||
#include "V8Exception.h"
|
||||
#include "V8IsolateConstraints.h"
|
||||
#include "V8IsolateHeapInfo.h"
|
||||
#include "V8DocumentInfo.h"
|
||||
#include "V8CacheType.h"
|
||||
#include "V8Isolate.h"
|
||||
#include "V8Context.h"
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "V8Exception.h"
|
||||
#include "V8IsolateConstraints.h"
|
||||
#include "V8IsolateHeapInfo.h"
|
||||
#include "V8DocumentInfo.h"
|
||||
#include "V8CacheType.h"
|
||||
#include "V8Isolate.h"
|
||||
#include "V8Context.h"
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
|
||||
#include "ClearScriptV8Managed.h"
|
||||
|
||||
using namespace Microsoft::ClearScript::V8;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// local helper functions
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -216,11 +214,21 @@ V8Value HostObjectHelpers::InvokeMethod(void* pvObject, const StdString& name, c
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
bool HostObjectHelpers::IsDelegate(void* pvObject)
|
||||
HostObjectHelpers::V8Invocability HostObjectHelpers::GetInvocability(void* pvObject)
|
||||
{
|
||||
try
|
||||
{
|
||||
return V8ProxyHelpers::HostObjectIsDelegate(pvObject);
|
||||
switch (V8ProxyHelpers::GetHostObjectInvocability(pvObject))
|
||||
{
|
||||
case Invocability::None:
|
||||
return V8Invocability::None;
|
||||
|
||||
case Invocability::Delegate:
|
||||
return V8Invocability::Delegate;
|
||||
|
||||
default:
|
||||
return V8Invocability::Other;
|
||||
}
|
||||
}
|
||||
catch (Exception^ gcException)
|
||||
{
|
||||
|
|
|
@ -29,7 +29,9 @@ public:
|
|||
|
||||
static V8Value Invoke(void* pvObject, const std::vector<V8Value>& args, bool asConstructor);
|
||||
static V8Value InvokeMethod(void* pvObject, const StdString& name, const std::vector<V8Value>& args);
|
||||
static bool IsDelegate(void* pvObject);
|
||||
|
||||
enum class V8Invocability { None, Delegate, Other };
|
||||
static V8Invocability GetInvocability(void* pvObject);
|
||||
|
||||
static V8Value GetEnumerator(void* pvObject);
|
||||
static bool AdvanceEnumerator(void* pvEnumerator, V8Value& value);
|
||||
|
|
|
@ -29,8 +29,10 @@ using namespace System;
|
|||
using namespace System::Globalization;
|
||||
using namespace System::Runtime::InteropServices;
|
||||
using namespace System::Threading;
|
||||
using namespace Microsoft::ClearScript;
|
||||
using namespace Microsoft::ClearScript::JavaScript;
|
||||
using namespace Microsoft::ClearScript::Util;
|
||||
using namespace Microsoft::ClearScript::V8;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// global macros
|
||||
|
|
|
@ -14,7 +14,7 @@ class StringToUniPtr
|
|||
public:
|
||||
|
||||
explicit StringToUniPtr(String^ gcValue):
|
||||
m_pValue(Microsoft::ClearScript::V8::V8ProxyHelpers::AllocString(gcValue))
|
||||
m_pValue(V8ProxyHelpers::AllocString(gcValue))
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,7 @@ public:
|
|||
|
||||
~StringToUniPtr()
|
||||
{
|
||||
Microsoft::ClearScript::V8::V8ProxyHelpers::FreeString(m_pValue);
|
||||
V8ProxyHelpers::FreeString(m_pValue);
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
|
@ -38,11 +38,11 @@ public:
|
|||
virtual void SetGlobalProperty(const StdString& name, const V8Value& value, bool globalMembers) = 0;
|
||||
|
||||
virtual void AwaitDebuggerAndPause() = 0;
|
||||
virtual V8Value Execute(const StdString& documentName, const StdString& code, bool evaluate, bool discard) = 0;
|
||||
virtual V8Value Execute(const V8DocumentInfo& documentInfo, const StdString& code, bool evaluate) = 0;
|
||||
|
||||
virtual V8ScriptHolder* Compile(const StdString& documentName, const StdString& code) = 0;
|
||||
virtual V8ScriptHolder* Compile(const StdString& documentName, const StdString& code, V8CacheType cacheType, std::vector<std::uint8_t>& cacheBytes) = 0;
|
||||
virtual V8ScriptHolder* Compile(const StdString& documentName, const StdString& code, V8CacheType cacheType, const std::vector<std::uint8_t>& cacheBytes, bool& cacheAccepted) = 0;
|
||||
virtual V8ScriptHolder* Compile(const V8DocumentInfo& documentInfo, const StdString& code) = 0;
|
||||
virtual V8ScriptHolder* Compile(const V8DocumentInfo& documentInfo, const StdString& code, V8CacheType cacheType, std::vector<std::uint8_t>& cacheBytes) = 0;
|
||||
virtual V8ScriptHolder* Compile(const V8DocumentInfo& documentInfo, const StdString& code, V8CacheType cacheType, const std::vector<std::uint8_t>& cacheBytes, bool& cacheAccepted) = 0;
|
||||
virtual bool CanExecute(V8ScriptHolder* pHolder) = 0;
|
||||
virtual V8Value Execute(V8ScriptHolder* pHolder, bool evaluate) = 0;
|
||||
|
||||
|
|
|
@ -275,16 +275,24 @@ V8ContextImpl::V8ContextImpl(V8IsolateImpl* pIsolateImpl, const StdString& name,
|
|||
m_hHostObjectTemplate->SetCallHandler(HostObjectConstructorCallHandler, hContextImpl);
|
||||
m_hHostObjectTemplate->InstanceTemplate()->SetHandler(v8::NamedPropertyHandlerConfiguration(GetHostObjectProperty, SetHostObjectProperty, QueryHostObjectProperty, DeleteHostObjectProperty, GetHostObjectPropertyNames, hContextImpl, v8::PropertyHandlerFlags::kNone));
|
||||
m_hHostObjectTemplate->InstanceTemplate()->SetHandler(v8::IndexedPropertyHandlerConfiguration(GetHostObjectProperty, SetHostObjectProperty, QueryHostObjectProperty, DeleteHostObjectProperty, GetHostObjectPropertyIndices, hContextImpl));
|
||||
m_hHostObjectTemplate->InstanceTemplate()->SetCallAsFunctionHandler(InvokeHostObject, hContextImpl);
|
||||
m_hHostObjectTemplate->PrototypeTemplate()->Set(GetIteratorSymbol(), hGetIteratorFunction);
|
||||
|
||||
m_hHostInvocableTemplate = CreatePersistent(CreateFunctionTemplate());
|
||||
m_hHostInvocableTemplate->SetClassName(FROM_MAYBE(CreateString(StdString(L"HostInvocable"))));
|
||||
m_hHostInvocableTemplate->SetCallHandler(HostObjectConstructorCallHandler, hContextImpl);
|
||||
m_hHostInvocableTemplate->InstanceTemplate()->SetHandler(v8::NamedPropertyHandlerConfiguration(GetHostObjectProperty, SetHostObjectProperty, QueryHostObjectProperty, DeleteHostObjectProperty, GetHostObjectPropertyNames, hContextImpl, v8::PropertyHandlerFlags::kNone));
|
||||
m_hHostInvocableTemplate->InstanceTemplate()->SetHandler(v8::IndexedPropertyHandlerConfiguration(GetHostObjectProperty, SetHostObjectProperty, QueryHostObjectProperty, DeleteHostObjectProperty, GetHostObjectPropertyIndices, hContextImpl));
|
||||
m_hHostInvocableTemplate->PrototypeTemplate()->Set(GetIteratorSymbol(), hGetIteratorFunction);
|
||||
m_hHostInvocableTemplate->InstanceTemplate()->SetCallAsFunctionHandler(InvokeHostObject, hContextImpl);
|
||||
|
||||
m_hHostDelegateTemplate = CreatePersistent(CreateFunctionTemplate());
|
||||
m_hHostDelegateTemplate->SetClassName(FROM_MAYBE(CreateString(StdString(L"HostDelegate"))));
|
||||
m_hHostDelegateTemplate->SetCallHandler(HostObjectConstructorCallHandler, hContextImpl);
|
||||
m_hHostDelegateTemplate->InstanceTemplate()->SetHandler(v8::NamedPropertyHandlerConfiguration(GetHostObjectProperty, SetHostObjectProperty, QueryHostObjectProperty, DeleteHostObjectProperty, GetHostObjectPropertyNames, hContextImpl, v8::PropertyHandlerFlags::kNone));
|
||||
m_hHostDelegateTemplate->InstanceTemplate()->SetHandler(v8::IndexedPropertyHandlerConfiguration(GetHostObjectProperty, SetHostObjectProperty, QueryHostObjectProperty, DeleteHostObjectProperty, GetHostObjectPropertyIndices, hContextImpl));
|
||||
m_hHostDelegateTemplate->InstanceTemplate()->SetCallAsFunctionHandler(InvokeHostObject, hContextImpl);
|
||||
m_hHostDelegateTemplate->PrototypeTemplate()->Set(GetIteratorSymbol(), hGetIteratorFunction);
|
||||
m_hHostDelegateTemplate->InstanceTemplate()->SetCallAsFunctionHandler(InvokeHostObject, hContextImpl);
|
||||
m_hHostDelegateTemplate->InstanceTemplate()->SetImmutableProto(); // instructs our patched V8 typeof implementation to return "function"
|
||||
m_hHostDelegateTemplate->PrototypeTemplate()->Set(FROM_MAYBE(CreateString(StdString(L"toFunction"))), hToFunctionFunction);
|
||||
|
||||
m_hHostIteratorTemplate = CreatePersistent(CreateFunctionTemplate());
|
||||
|
@ -431,13 +439,13 @@ void V8ContextImpl::AwaitDebuggerAndPause()
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
V8Value V8ContextImpl::Execute(const StdString& documentName, const StdString& code, bool evaluate, bool /*discard*/)
|
||||
V8Value V8ContextImpl::Execute(const V8DocumentInfo& documentInfo, const StdString& code, bool evaluate)
|
||||
{
|
||||
BEGIN_CONTEXT_SCOPE
|
||||
BEGIN_EXECUTION_SCOPE
|
||||
FROM_MAYBE_TRY
|
||||
|
||||
v8::ScriptCompiler::Source source(FROM_MAYBE(CreateString(code)), v8::ScriptOrigin(FROM_MAYBE(CreateString(documentName))));
|
||||
v8::ScriptCompiler::Source source(FROM_MAYBE(CreateString(code)), CreateScriptOrigin(documentInfo));
|
||||
auto hScript = VERIFY_MAYBE(v8::ScriptCompiler::Compile(m_hContext, &source));
|
||||
if (hScript.IsEmpty())
|
||||
{
|
||||
|
@ -463,13 +471,13 @@ V8Value V8ContextImpl::Execute(const StdString& documentName, const StdString& c
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
V8ScriptHolder* V8ContextImpl::Compile(const StdString& documentName, const StdString& code)
|
||||
V8ScriptHolder* V8ContextImpl::Compile(const V8DocumentInfo& documentInfo, const StdString& code)
|
||||
{
|
||||
BEGIN_CONTEXT_SCOPE
|
||||
BEGIN_EXECUTION_SCOPE
|
||||
FROM_MAYBE_TRY
|
||||
|
||||
v8::ScriptCompiler::Source source(FROM_MAYBE(CreateString(code)), v8::ScriptOrigin(FROM_MAYBE(CreateString(documentName))));
|
||||
v8::ScriptCompiler::Source source(FROM_MAYBE(CreateString(code)), CreateScriptOrigin(documentInfo));
|
||||
auto hScript = VERIFY_MAYBE(CreateUnboundScript(&source));
|
||||
if (hScript.IsEmpty())
|
||||
{
|
||||
|
@ -489,28 +497,31 @@ V8ScriptHolder* V8ContextImpl::Compile(const StdString& documentName, const StdS
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
V8ScriptHolder* V8ContextImpl::Compile(const StdString& documentName, const StdString& code, V8CacheType cacheType, std::vector<std::uint8_t>& cacheBytes)
|
||||
V8ScriptHolder* V8ContextImpl::Compile(const V8DocumentInfo& documentInfo, const StdString& code, V8CacheType cacheType, std::vector<std::uint8_t>& cacheBytes)
|
||||
{
|
||||
if (cacheType == V8CacheType::None)
|
||||
{
|
||||
cacheBytes.clear();
|
||||
return Compile(documentName, code);
|
||||
return Compile(documentInfo, code);
|
||||
}
|
||||
|
||||
BEGIN_CONTEXT_SCOPE
|
||||
BEGIN_EXECUTION_SCOPE
|
||||
FROM_MAYBE_TRY
|
||||
|
||||
v8::ScriptCompiler::Source source(FROM_MAYBE(CreateString(code)), v8::ScriptOrigin(FROM_MAYBE(CreateString(documentName))));
|
||||
auto hScript = VERIFY_MAYBE(CreateUnboundScript(&source, (cacheType == V8CacheType::Parser) ? v8::ScriptCompiler::kProduceParserCache : v8::ScriptCompiler::kProduceCodeCache));
|
||||
auto hCode = FROM_MAYBE(CreateString(code));
|
||||
|
||||
v8::ScriptCompiler::Source source(hCode, CreateScriptOrigin(documentInfo));
|
||||
auto hScript = VERIFY_MAYBE(CreateUnboundScript(&source));
|
||||
if (hScript.IsEmpty())
|
||||
{
|
||||
throw V8Exception(V8Exception::Type::General, m_Name, StdString(L"Script compilation failed; no additional information was provided by the V8 runtime"), false /*executionStarted*/);
|
||||
}
|
||||
|
||||
cacheBytes.clear();
|
||||
|
||||
auto pCachedData = source.GetCachedData();
|
||||
if (cacheType != V8CacheType::None)
|
||||
{
|
||||
auto pCachedData = v8::ScriptCompiler::CreateCodeCache(hScript);
|
||||
if (pCachedData != nullptr)
|
||||
{
|
||||
if ((pCachedData->length > 0) && (pCachedData->data != nullptr))
|
||||
|
@ -520,9 +531,10 @@ V8ScriptHolder* V8ContextImpl::Compile(const StdString& documentName, const StdS
|
|||
}
|
||||
|
||||
// Delete cached data explicitly via a custom exported method. Doing so avoids Debug-
|
||||
// Release heap mismatches caused by V8's inlining of v8::ScriptCompiler::~Source.
|
||||
// Release heap mismatches.
|
||||
|
||||
source.DeleteCachedData();
|
||||
pCachedData->Delete();
|
||||
}
|
||||
}
|
||||
|
||||
return new V8ScriptHolderImpl(GetWeakBinding(), ::PtrFromHandle(CreatePersistent(hScript)));
|
||||
|
@ -538,12 +550,12 @@ V8ScriptHolder* V8ContextImpl::Compile(const StdString& documentName, const StdS
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
V8ScriptHolder* V8ContextImpl::Compile(const StdString& documentName, const StdString& code, V8CacheType cacheType, const std::vector<std::uint8_t>& cacheBytes, bool& cacheAccepted)
|
||||
V8ScriptHolder* V8ContextImpl::Compile(const V8DocumentInfo& documentInfo, const StdString& code, V8CacheType cacheType, const std::vector<std::uint8_t>& cacheBytes, bool& cacheAccepted)
|
||||
{
|
||||
if ((cacheType == V8CacheType::None) || (cacheBytes.size() < 1))
|
||||
{
|
||||
cacheAccepted = false;
|
||||
return Compile(documentName, code);
|
||||
return Compile(documentInfo, code);
|
||||
}
|
||||
|
||||
BEGIN_CONTEXT_SCOPE
|
||||
|
@ -551,8 +563,9 @@ V8ScriptHolder* V8ContextImpl::Compile(const StdString& documentName, const StdS
|
|||
FROM_MAYBE_TRY
|
||||
|
||||
auto pCachedData = new v8::ScriptCompiler::CachedData(&cacheBytes[0], static_cast<int>(cacheBytes.size()), v8::ScriptCompiler::CachedData::BufferNotOwned);
|
||||
v8::ScriptCompiler::Source source(FROM_MAYBE(CreateString(code)), v8::ScriptOrigin(FROM_MAYBE(CreateString(documentName))), pCachedData);
|
||||
auto hScript = VERIFY_MAYBE(CreateUnboundScript(&source, (cacheType == V8CacheType::Parser) ? v8::ScriptCompiler::kConsumeParserCache : v8::ScriptCompiler::kConsumeCodeCache));
|
||||
v8::ScriptCompiler::Source source(FROM_MAYBE(CreateString(code)), CreateScriptOrigin(documentInfo), pCachedData);
|
||||
|
||||
auto hScript = VERIFY_MAYBE(CreateUnboundScript(&source, v8::ScriptCompiler::kConsumeCodeCache));
|
||||
if (hScript.IsEmpty())
|
||||
{
|
||||
throw V8Exception(V8Exception::Type::General, m_Name, StdString(L"Script compilation failed; no additional information was provided by the V8 runtime"), false /*executionStarted*/);
|
||||
|
@ -703,7 +716,7 @@ void V8ContextImpl::GetV8ObjectPropertyNames(void* pvObject, std::vector<StdStri
|
|||
{
|
||||
BEGIN_CONTEXT_SCOPE
|
||||
|
||||
GetV8ObjectPropertyNames(::HandleFromPtr<v8::Object>(pvObject), names, v8::ALL_PROPERTIES);
|
||||
GetV8ObjectPropertyNames(::HandleFromPtr<v8::Object>(pvObject), names, v8::ONLY_ENUMERABLE);
|
||||
|
||||
END_CONTEXT_SCOPE
|
||||
}
|
||||
|
@ -769,7 +782,7 @@ void V8ContextImpl::GetV8ObjectPropertyIndices(void* pvObject, std::vector<int>&
|
|||
{
|
||||
BEGIN_CONTEXT_SCOPE
|
||||
|
||||
GetV8ObjectPropertyIndices(::HandleFromPtr<v8::Object>(pvObject), indices, v8::ALL_PROPERTIES);
|
||||
GetV8ObjectPropertyIndices(::HandleFromPtr<v8::Object>(pvObject), indices, v8::ONLY_ENUMERABLE);
|
||||
|
||||
END_CONTEXT_SCOPE
|
||||
}
|
||||
|
@ -989,6 +1002,7 @@ void V8ContextImpl::Teardown()
|
|||
|
||||
Dispose(m_hHostIteratorTemplate);
|
||||
Dispose(m_hHostDelegateTemplate);
|
||||
Dispose(m_hHostInvocableTemplate);
|
||||
Dispose(m_hHostObjectTemplate);
|
||||
Dispose(m_hTerminationException);
|
||||
Dispose(m_hInternalUseOnly);
|
||||
|
@ -2151,7 +2165,15 @@ v8::Local<v8::Value> V8ContextImpl::ImportValue(const V8Value& value)
|
|||
}
|
||||
|
||||
v8::Local<v8::Object> hObject;
|
||||
if (HostObjectHelpers::IsDelegate(pHolder->GetObject()))
|
||||
|
||||
auto invocability = HostObjectHelpers::GetInvocability(pHolder->GetObject());
|
||||
if (invocability == HostObjectHelpers::V8Invocability::None)
|
||||
{
|
||||
BEGIN_PULSE_VALUE_SCOPE(&m_AllowHostObjectConstructorCall, true)
|
||||
hObject = FROM_MAYBE(m_hHostObjectTemplate->InstanceTemplate()->NewInstance(m_hContext));
|
||||
END_PULSE_VALUE_SCOPE
|
||||
}
|
||||
else if (invocability == HostObjectHelpers::V8Invocability::Delegate)
|
||||
{
|
||||
BEGIN_PULSE_VALUE_SCOPE(&m_AllowHostObjectConstructorCall, true)
|
||||
hObject = FROM_MAYBE(m_hHostDelegateTemplate->InstanceTemplate()->NewInstance(m_hContext));
|
||||
|
@ -2160,7 +2182,7 @@ v8::Local<v8::Value> V8ContextImpl::ImportValue(const V8Value& value)
|
|||
else
|
||||
{
|
||||
BEGIN_PULSE_VALUE_SCOPE(&m_AllowHostObjectConstructorCall, true)
|
||||
hObject = FROM_MAYBE(m_hHostObjectTemplate->InstanceTemplate()->NewInstance(m_hContext));
|
||||
hObject = FROM_MAYBE(m_hHostInvocableTemplate->InstanceTemplate()->NewInstance(m_hContext));
|
||||
END_PULSE_VALUE_SCOPE
|
||||
}
|
||||
|
||||
|
@ -2306,6 +2328,28 @@ void V8ContextImpl::ImportValues(const std::vector<V8Value>& values, std::vector
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
v8::ScriptOrigin V8ContextImpl::CreateScriptOrigin(const V8DocumentInfo& documentInfo)
|
||||
{
|
||||
FROM_MAYBE_TRY
|
||||
|
||||
return v8::ScriptOrigin(
|
||||
FROM_MAYBE(CreateString(documentInfo.ResourceName)),
|
||||
v8::Local<v8::Integer>(),
|
||||
v8::Local<v8::Integer>(),
|
||||
v8::Local<v8::Boolean>(),
|
||||
v8::Local<v8::Integer>(),
|
||||
(documentInfo.SourceMapUrl.GetLength() > 0) ? FROM_MAYBE(CreateString(documentInfo.SourceMapUrl)) : v8::Local<v8::String>()
|
||||
);
|
||||
|
||||
FROM_MAYBE_CATCH
|
||||
|
||||
throw;
|
||||
|
||||
FROM_MAYBE_END
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void V8ContextImpl::Verify(const V8IsolateImpl::ExecutionScope& isolateExecutionScope, const v8::TryCatch& tryCatch)
|
||||
{
|
||||
if (tryCatch.HasCaught())
|
||||
|
|
|
@ -40,11 +40,11 @@ public:
|
|||
virtual void SetGlobalProperty(const StdString& name, const V8Value& value, bool globalMembers) override;
|
||||
|
||||
virtual void AwaitDebuggerAndPause() override;
|
||||
virtual V8Value Execute(const StdString& documentName, const StdString& code, bool evaluate, bool discard) override;
|
||||
virtual V8Value Execute(const V8DocumentInfo& documentInfo, const StdString& code, bool evaluate) override;
|
||||
|
||||
virtual V8ScriptHolder* Compile(const StdString& documentName, const StdString& code) override;
|
||||
virtual V8ScriptHolder* Compile(const StdString& documentName, const StdString& code, V8CacheType cacheType, std::vector<std::uint8_t>& cacheBytes) override;
|
||||
virtual V8ScriptHolder* Compile(const StdString& documentName, const StdString& code, V8CacheType cacheType, const std::vector<std::uint8_t>& cacheBytes, bool& cacheAccepted) override;
|
||||
virtual V8ScriptHolder* Compile(const V8DocumentInfo& documentInfo, const StdString& code) override;
|
||||
virtual V8ScriptHolder* Compile(const V8DocumentInfo& documentInfo, const StdString& code, V8CacheType cacheType, std::vector<std::uint8_t>& cacheBytes) override;
|
||||
virtual V8ScriptHolder* Compile(const V8DocumentInfo& documentInfo, const StdString& code, V8CacheType cacheType, const std::vector<std::uint8_t>& cacheBytes, bool& cacheAccepted) override;
|
||||
virtual bool CanExecute(V8ScriptHolder* pHolder) override;
|
||||
virtual V8Value Execute(V8ScriptHolder* pHolder, bool evaluate) override;
|
||||
|
||||
|
@ -269,6 +269,11 @@ private:
|
|||
m_spIsolateImpl->LowMemoryNotification();
|
||||
}
|
||||
|
||||
v8::Local<v8::String> GetTypeOf(v8::Local<v8::Value> hValue)
|
||||
{
|
||||
return m_spIsolateImpl->GetTypeOf(hValue);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
T Verify(const V8IsolateImpl::ExecutionScope& isolateExecutionScope, const v8::TryCatch& tryCatch, T result)
|
||||
{
|
||||
|
@ -328,6 +333,7 @@ private:
|
|||
V8Value ExportValue(v8::Local<v8::Value> hValue);
|
||||
void ImportValues(const std::vector<V8Value>& values, std::vector<v8::Local<v8::Value>>& importedValues);
|
||||
|
||||
v8::ScriptOrigin CreateScriptOrigin(const V8DocumentInfo& documentInfo);
|
||||
void Verify(const V8IsolateImpl::ExecutionScope& isolateExecutionScope, const v8::TryCatch& tryCatch);
|
||||
void VerifyNotOutOfMemory();
|
||||
void ThrowScriptException(const HostException& exception);
|
||||
|
@ -348,6 +354,7 @@ private:
|
|||
Persistent<v8::Object> m_hAccessToken;
|
||||
Persistent<v8::String> m_hInternalUseOnly;
|
||||
Persistent<v8::FunctionTemplate> m_hHostObjectTemplate;
|
||||
Persistent<v8::FunctionTemplate> m_hHostInvocableTemplate;
|
||||
Persistent<v8::FunctionTemplate> m_hHostDelegateTemplate;
|
||||
Persistent<v8::FunctionTemplate> m_hHostIteratorTemplate;
|
||||
Persistent<v8::Value> m_hTerminationException;
|
||||
|
|
|
@ -141,11 +141,11 @@ namespace V8 {
|
|||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
Object^ V8ContextProxyImpl::Execute(String^ gcDocumentName, String^ gcCode, Boolean evaluate, Boolean discard)
|
||||
Object^ V8ContextProxyImpl::Execute(DocumentInfo documentInfo, String^ gcCode, Boolean evaluate)
|
||||
{
|
||||
try
|
||||
{
|
||||
return ExportValue(GetContext()->Execute(StdString(gcDocumentName), StdString(gcCode), evaluate, discard));
|
||||
return ExportValue(GetContext()->Execute(V8DocumentInfo(documentInfo), StdString(gcCode), evaluate));
|
||||
}
|
||||
catch (const V8Exception& exception)
|
||||
{
|
||||
|
@ -155,11 +155,11 @@ namespace V8 {
|
|||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
V8Script^ V8ContextProxyImpl::Compile(String^ gcDocumentName, String^ gcCode)
|
||||
V8Script^ V8ContextProxyImpl::Compile(DocumentInfo documentInfo, String^ gcCode)
|
||||
{
|
||||
try
|
||||
{
|
||||
return gcnew V8ScriptImpl(gcDocumentName, GetContext()->Compile(StdString(gcDocumentName), StdString(gcCode)));
|
||||
return gcnew V8ScriptImpl(documentInfo, GetContext()->Compile(V8DocumentInfo(documentInfo), StdString(gcCode)));
|
||||
}
|
||||
catch (const V8Exception& exception)
|
||||
{
|
||||
|
@ -169,19 +169,22 @@ namespace V8 {
|
|||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
V8Script^ V8ContextProxyImpl::Compile(String^ gcDocumentName, String^ gcCode, V8CacheKind cacheKind, [Out] array<Byte>^% gcCacheBytes)
|
||||
V8Script^ V8ContextProxyImpl::Compile(DocumentInfo documentInfo, String^ gcCode, V8CacheKind cacheKind, [Out] array<Byte>^% gcCacheBytes)
|
||||
{
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:4947) /* 'Microsoft::ClearScript::V8::V8CacheKind::Parser': marked as obsolete */
|
||||
|
||||
if (cacheKind == V8CacheKind::None)
|
||||
{
|
||||
gcCacheBytes = nullptr;
|
||||
return Compile(gcDocumentName, gcCode);
|
||||
return Compile(documentInfo, gcCode);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
std::vector<std::uint8_t> cacheBytes;
|
||||
auto cacheType = (cacheKind == V8CacheKind::Parser) ? V8CacheType::Parser : V8CacheType::Code;
|
||||
auto gcScript = gcnew V8ScriptImpl(gcDocumentName, GetContext()->Compile(StdString(gcDocumentName), StdString(gcCode), cacheType, cacheBytes));
|
||||
auto gcScript = gcnew V8ScriptImpl(documentInfo, GetContext()->Compile(V8DocumentInfo(documentInfo), StdString(gcCode), cacheType, cacheBytes));
|
||||
|
||||
auto length = static_cast<int>(cacheBytes.size());
|
||||
if (length < 1)
|
||||
|
@ -200,16 +203,21 @@ namespace V8 {
|
|||
{
|
||||
exception.ThrowScriptEngineException();
|
||||
}
|
||||
|
||||
#pragma warning(pop)
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
V8Script^ V8ContextProxyImpl::Compile(String^ gcDocumentName, String^ gcCode, V8CacheKind cacheKind, array<Byte>^ gcCacheBytes, [Out] Boolean% cacheAccepted)
|
||||
V8Script^ V8ContextProxyImpl::Compile(DocumentInfo documentInfo, String^ gcCode, V8CacheKind cacheKind, array<Byte>^ gcCacheBytes, [Out] Boolean% cacheAccepted)
|
||||
{
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:4947) /* 'Microsoft::ClearScript::V8::V8CacheKind::Parser': marked as obsolete */
|
||||
|
||||
if ((cacheKind == V8CacheKind::None) || (gcCacheBytes == nullptr) || (gcCacheBytes->Length < 1))
|
||||
{
|
||||
cacheAccepted = false;
|
||||
return Compile(gcDocumentName, gcCode);
|
||||
return Compile(documentInfo, gcCode);
|
||||
}
|
||||
|
||||
try
|
||||
|
@ -220,7 +228,7 @@ namespace V8 {
|
|||
|
||||
bool tempCacheAccepted;
|
||||
auto cacheType = (cacheKind == V8CacheKind::Parser) ? V8CacheType::Parser : V8CacheType::Code;
|
||||
auto gcScript = gcnew V8ScriptImpl(gcDocumentName, GetContext()->Compile(StdString(gcDocumentName), StdString(gcCode), cacheType, cacheBytes, tempCacheAccepted));
|
||||
auto gcScript = gcnew V8ScriptImpl(documentInfo, GetContext()->Compile(V8DocumentInfo(documentInfo), StdString(gcCode), cacheType, cacheBytes, tempCacheAccepted));
|
||||
|
||||
cacheAccepted = tempCacheAccepted;
|
||||
return gcScript;
|
||||
|
@ -229,6 +237,8 @@ namespace V8 {
|
|||
{
|
||||
exception.ThrowScriptEngineException();
|
||||
}
|
||||
|
||||
#pragma warning(pop)
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
|
|
@ -39,10 +39,10 @@ namespace V8 {
|
|||
virtual Object^ GetRootItem() override;
|
||||
virtual void AddGlobalItem(String^ gcName, Object^ gcItem, Boolean globalMembers) override;
|
||||
virtual void AwaitDebuggerAndPause() override;
|
||||
virtual Object^ Execute(String^ gcDocumentName, String^ gcCode, Boolean evaluate, Boolean discard) override;
|
||||
virtual V8Script^ Compile(String^ gcDocumentName, String^ gcCode) override;
|
||||
virtual V8Script^ Compile(String^ gcDocumentName, String^ gcCode, V8CacheKind cacheKind, [Out] array<Byte>^% gcCacheBytes) override;
|
||||
virtual V8Script^ Compile(String^ gcDocumentName, String^ gcCode, V8CacheKind cacheKind, array<Byte>^ gcCacheBytes, [Out] Boolean% cacheAccepted) override;
|
||||
virtual Object^ Execute(DocumentInfo documentInfo, String^ gcCode, Boolean evaluate) override;
|
||||
virtual V8Script^ Compile(DocumentInfo documentInfo, String^ gcCode) override;
|
||||
virtual V8Script^ Compile(DocumentInfo documentInfo, String^ gcCode, V8CacheKind cacheKind, [Out] array<Byte>^% gcCacheBytes) override;
|
||||
virtual V8Script^ Compile(DocumentInfo documentInfo, String^ gcCode, V8CacheKind cacheKind, array<Byte>^ gcCacheBytes, [Out] Boolean% cacheAccepted) override;
|
||||
virtual Object^ Execute(V8Script^ gcScript, Boolean evaluate) override;
|
||||
virtual void Interrupt() override;
|
||||
virtual V8RuntimeHeapInfo^ GetRuntimeHeapInfo() override;
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
#pragma once
|
||||
|
||||
struct V8DocumentInfo
|
||||
{
|
||||
StdString ResourceName;
|
||||
StdString SourceMapUrl;
|
||||
|
||||
#ifdef _M_CEE
|
||||
|
||||
explicit V8DocumentInfo(DocumentInfo documentInfo):
|
||||
ResourceName(MiscHelpers::GetUrlOrPath(documentInfo.Uri, documentInfo.UniqueName)),
|
||||
SourceMapUrl(MiscHelpers::GetUrlOrPath(documentInfo.SourceMapUri, String::Empty))
|
||||
{
|
||||
}
|
||||
|
||||
#endif // _M_CEE
|
||||
|
||||
};
|
|
@ -3,9 +3,6 @@
|
|||
|
||||
#include "ClearScriptV8Managed.h"
|
||||
|
||||
using namespace Microsoft::ClearScript;
|
||||
using namespace Microsoft::ClearScript::V8;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// V8Exception implementation
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
|
@ -30,9 +30,9 @@ public:
|
|||
virtual void SetMaxStackUsage(size_t value) = 0;
|
||||
|
||||
virtual void AwaitDebuggerAndPause() = 0;
|
||||
virtual V8ScriptHolder* Compile(const StdString& documentName, const StdString& code) = 0;
|
||||
virtual V8ScriptHolder* Compile(const StdString& documentName, const StdString& code, V8CacheType cacheType, std::vector<std::uint8_t>& cacheBytes) = 0;
|
||||
virtual V8ScriptHolder* Compile(const StdString& documentName, const StdString& code, V8CacheType cacheType, const std::vector<std::uint8_t>& cacheBytes, bool& cacheAccepted) = 0;
|
||||
virtual V8ScriptHolder* Compile(const V8DocumentInfo& documentInfo, const StdString& code) = 0;
|
||||
virtual V8ScriptHolder* Compile(const V8DocumentInfo& documentInfo, const StdString& code, V8CacheType cacheType, std::vector<std::uint8_t>& cacheBytes) = 0;
|
||||
virtual V8ScriptHolder* Compile(const V8DocumentInfo& documentInfo, const StdString& code, V8CacheType cacheType, const std::vector<std::uint8_t>& cacheBytes, bool& cacheAccepted) = 0;
|
||||
virtual void GetHeapInfo(V8IsolateHeapInfo& heapInfo) = 0;
|
||||
virtual void CollectGarbage(bool exhaustive) = 0;
|
||||
|
||||
|
|
|
@ -3,23 +3,6 @@
|
|||
|
||||
#include "ClearScriptV8Native.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// SharedPtrTraits<v8::Task>
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
template<>
|
||||
class SharedPtrTraits<v8::Task>
|
||||
{
|
||||
PROHIBIT_CONSTRUCT(SharedPtrTraits)
|
||||
|
||||
public:
|
||||
|
||||
static void Destroy(v8::Task* pTarget)
|
||||
{
|
||||
pTarget->Delete();
|
||||
}
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// V8Platform
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -31,12 +14,12 @@ public:
|
|||
static V8Platform& GetInstance();
|
||||
static void EnsureInstalled();
|
||||
|
||||
virtual size_t NumberOfAvailableBackgroundThreads() override;
|
||||
virtual void CallOnBackgroundThread(v8::Task* pTask, ExpectedRuntime runtime) override;
|
||||
virtual int NumberOfWorkerThreads() override;
|
||||
virtual std::shared_ptr<v8::TaskRunner> GetForegroundTaskRunner(v8::Isolate* pIsolate) override;
|
||||
virtual void CallOnWorkerThread(std::unique_ptr<v8::Task> spTask) override;
|
||||
virtual void CallDelayedOnWorkerThread(std::unique_ptr<v8::Task> spTask, double delayInSeconds) override;
|
||||
virtual void CallOnForegroundThread(v8::Isolate* pIsolate, v8::Task* pTask) override;
|
||||
virtual void CallDelayedOnForegroundThread(v8::Isolate* pIsolate, v8::Task* pTask, double delayInSeconds) override;
|
||||
virtual void CallIdleOnForegroundThread(v8::Isolate* pIsolate, v8::IdleTask* pTask) override;
|
||||
virtual bool IdleTasksEnabled(v8::Isolate* pIsolate) override;
|
||||
virtual double MonotonicallyIncreasingTime() override;
|
||||
virtual double CurrentClockTimeMillis() override;
|
||||
virtual v8::TracingController* GetTracingController() override;
|
||||
|
@ -70,24 +53,41 @@ void V8Platform::EnsureInstalled()
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
size_t V8Platform::NumberOfAvailableBackgroundThreads()
|
||||
int V8Platform::NumberOfWorkerThreads()
|
||||
{
|
||||
return HighResolutionClock::GetHardwareConcurrency();
|
||||
return static_cast<int>(HighResolutionClock::GetHardwareConcurrency());
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void V8Platform::CallOnBackgroundThread(v8::Task* pTask, ExpectedRuntime /*runtime*/)
|
||||
std::shared_ptr<v8::TaskRunner> V8Platform::GetForegroundTaskRunner(v8::Isolate* pIsolate)
|
||||
{
|
||||
return static_cast<V8IsolateImpl*>(pIsolate->GetData(0))->GetForegroundTaskRunner();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void V8Platform::CallOnWorkerThread(std::unique_ptr<v8::Task> spTask)
|
||||
{
|
||||
auto pIsolate = v8::Isolate::GetCurrent();
|
||||
if (pIsolate == nullptr)
|
||||
{
|
||||
pTask->Run();
|
||||
pTask->Delete();
|
||||
spTask->Run();
|
||||
}
|
||||
else
|
||||
{
|
||||
static_cast<V8IsolateImpl*>(pIsolate->GetData(0))->RunTaskAsync(pTask);
|
||||
static_cast<V8IsolateImpl*>(pIsolate->GetData(0))->RunTaskAsync(spTask.release());
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void V8Platform::CallDelayedOnWorkerThread(std::unique_ptr<v8::Task> spTask, double delayInSeconds)
|
||||
{
|
||||
auto pIsolate = v8::Isolate::GetCurrent();
|
||||
if (pIsolate != nullptr)
|
||||
{
|
||||
static_cast<V8IsolateImpl*>(pIsolate->GetData(0))->RunTaskDelayed(spTask.release(), delayInSeconds);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -107,21 +107,6 @@ void V8Platform::CallDelayedOnForegroundThread(v8::Isolate* pIsolate, v8::Task*
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void V8Platform::CallIdleOnForegroundThread(v8::Isolate* /*pIsolate*/, v8::IdleTask* /*pTask*/)
|
||||
{
|
||||
// unexpected call to unsupported method
|
||||
std::terminate();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
bool V8Platform::IdleTasksEnabled(v8::Isolate* /*pIsolate*/)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
double V8Platform::MonotonicallyIncreasingTime()
|
||||
{
|
||||
return HighResolutionClock::GetRelativeSeconds();
|
||||
|
@ -152,6 +137,78 @@ V8Platform::V8Platform()
|
|||
V8Platform V8Platform::ms_Instance;
|
||||
OnceFlag V8Platform::ms_InstallationFlag;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// V8ForegroundTaskRunner
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class V8ForegroundTaskRunner: public v8::TaskRunner
|
||||
{
|
||||
PROHIBIT_COPY(V8ForegroundTaskRunner)
|
||||
|
||||
public:
|
||||
|
||||
V8ForegroundTaskRunner(V8IsolateImpl* pIsolateImpl);
|
||||
|
||||
virtual void PostTask(std::unique_ptr<v8::Task> spTask) override;
|
||||
virtual void PostDelayedTask(std::unique_ptr<v8::Task> spTask, double delayInSeconds) override;
|
||||
virtual void PostIdleTask(std::unique_ptr<v8::IdleTask> spTask) override;
|
||||
virtual bool IdleTasksEnabled() override;
|
||||
|
||||
private:
|
||||
|
||||
V8IsolateImpl* m_pIsolateImpl;
|
||||
WeakRef<V8Isolate> m_wrIsolate;
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
V8ForegroundTaskRunner::V8ForegroundTaskRunner(V8IsolateImpl* pIsolateImpl):
|
||||
m_pIsolateImpl(pIsolateImpl),
|
||||
m_wrIsolate(pIsolateImpl->CreateWeakRef())
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void V8ForegroundTaskRunner::PostTask(std::unique_ptr<v8::Task> spTask)
|
||||
{
|
||||
auto spIsolate = m_wrIsolate.GetTarget();
|
||||
if (spIsolate.IsEmpty())
|
||||
{
|
||||
spTask->Run();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pIsolateImpl->RunTaskWithLockAsync(spTask.release());
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void V8ForegroundTaskRunner::PostDelayedTask(std::unique_ptr<v8::Task> spTask, double delayInSeconds)
|
||||
{
|
||||
auto spIsolate = m_wrIsolate.GetTarget();
|
||||
if (!spIsolate.IsEmpty())
|
||||
{
|
||||
m_pIsolateImpl->RunTaskWithLockDelayed(spTask.release(), delayInSeconds);
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void V8ForegroundTaskRunner::PostIdleTask(std::unique_ptr<v8::IdleTask> spTask)
|
||||
{
|
||||
// unexpected call to unsupported method
|
||||
std::terminate();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
bool V8ForegroundTaskRunner::IdleTasksEnabled()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// V8ArrayBufferAllocator
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -465,36 +522,36 @@ void V8IsolateImpl::AwaitDebuggerAndPause()
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
V8ScriptHolder* V8IsolateImpl::Compile(const StdString& documentName, const StdString& code)
|
||||
V8ScriptHolder* V8IsolateImpl::Compile(const V8DocumentInfo& documentInfo, const StdString& code)
|
||||
{
|
||||
BEGIN_ISOLATE_SCOPE
|
||||
|
||||
SharedPtr<V8ContextImpl> spContextImpl((m_ContextPtrs.size() > 0) ? m_ContextPtrs.front() : new V8ContextImpl(this));
|
||||
return spContextImpl->Compile(documentName, code);
|
||||
return spContextImpl->Compile(documentInfo, code);
|
||||
|
||||
END_ISOLATE_SCOPE
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
V8ScriptHolder* V8IsolateImpl::Compile(const StdString& documentName, const StdString& code, V8CacheType cacheType, std::vector<std::uint8_t>& cacheBytes)
|
||||
V8ScriptHolder* V8IsolateImpl::Compile(const V8DocumentInfo& documentInfo, const StdString& code, V8CacheType cacheType, std::vector<std::uint8_t>& cacheBytes)
|
||||
{
|
||||
BEGIN_ISOLATE_SCOPE
|
||||
|
||||
SharedPtr<V8ContextImpl> spContextImpl((m_ContextPtrs.size() > 0) ? m_ContextPtrs.front() : new V8ContextImpl(this));
|
||||
return spContextImpl->Compile(documentName, code, cacheType, cacheBytes);
|
||||
return spContextImpl->Compile(documentInfo, code, cacheType, cacheBytes);
|
||||
|
||||
END_ISOLATE_SCOPE
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
V8ScriptHolder* V8IsolateImpl::Compile(const StdString& documentName, const StdString& code, V8CacheType cacheType, const std::vector<std::uint8_t>& cacheBytes, bool& cacheAccepted)
|
||||
V8ScriptHolder* V8IsolateImpl::Compile(const V8DocumentInfo& documentInfo, const StdString& code, V8CacheType cacheType, const std::vector<std::uint8_t>& cacheBytes, bool& cacheAccepted)
|
||||
{
|
||||
BEGIN_ISOLATE_SCOPE
|
||||
|
||||
SharedPtr<V8ContextImpl> spContextImpl((m_ContextPtrs.size() > 0) ? m_ContextPtrs.front() : new V8ContextImpl(this));
|
||||
return spContextImpl->Compile(documentName, code, cacheType, cacheBytes, cacheAccepted);
|
||||
return spContextImpl->Compile(documentInfo, code, cacheType, cacheBytes, cacheAccepted);
|
||||
|
||||
END_ISOLATE_SCOPE
|
||||
}
|
||||
|
@ -657,11 +714,11 @@ void V8IsolateImpl::RunTaskAsync(v8::Task* pTask)
|
|||
if (m_Released)
|
||||
{
|
||||
pTask->Run();
|
||||
pTask->Delete();
|
||||
delete pTask;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::shared_ptr<v8::Task> spTask(pTask, [] (v8::Task* pTask) { pTask->Delete(); });
|
||||
std::shared_ptr<v8::Task> spTask(pTask);
|
||||
std::weak_ptr<v8::Task> wpTask(spTask);
|
||||
|
||||
BEGIN_MUTEX_SCOPE(m_DataMutex)
|
||||
|
@ -680,7 +737,8 @@ void V8IsolateImpl::RunTaskAsync(v8::Task* pTask)
|
|||
spTask->Run();
|
||||
|
||||
BEGIN_MUTEX_SCOPE(m_DataMutex)
|
||||
m_AsyncTasks.erase(std::remove(m_AsyncTasks.begin(), m_AsyncTasks.end(), spTask), m_AsyncTasks.end());
|
||||
auto it = std::remove(m_AsyncTasks.begin(), m_AsyncTasks.end(), spTask);
|
||||
m_AsyncTasks.erase(it, m_AsyncTasks.end());
|
||||
END_MUTEX_SCOPE
|
||||
}
|
||||
}
|
||||
|
@ -690,34 +748,15 @@ void V8IsolateImpl::RunTaskAsync(v8::Task* pTask)
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void V8IsolateImpl::RunTaskWithLockAsync(v8::Task* pTask)
|
||||
void V8IsolateImpl::RunTaskDelayed(v8::Task* pTask, double delayInSeconds)
|
||||
{
|
||||
if (m_Released)
|
||||
{
|
||||
pTask->Run();
|
||||
pTask->Delete();
|
||||
delete pTask;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::shared_ptr<v8::Task> spTask(pTask, [] (v8::Task* pTask) { pTask->Delete(); });
|
||||
CallWithLockAsync([spTask] (V8IsolateImpl* /*pIsolateImpl*/)
|
||||
{
|
||||
spTask->Run();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void V8IsolateImpl::RunTaskWithLockDelayed(v8::Task* pTask, double delayInSeconds)
|
||||
{
|
||||
if (m_Released)
|
||||
{
|
||||
pTask->Delete();
|
||||
}
|
||||
else
|
||||
{
|
||||
std::shared_ptr<v8::Task> spTask(pTask, [] (v8::Task* pTask) { pTask->Delete(); });
|
||||
std::shared_ptr<v8::Task> spTask(pTask);
|
||||
|
||||
auto wrIsolate = CreateWeakRef();
|
||||
SharedPtr<Timer> spTimer(new Timer(static_cast<int>(delayInSeconds * 1000), -1, [this, wrIsolate, spTask] (Timer* pTimer) mutable
|
||||
|
@ -726,11 +765,8 @@ void V8IsolateImpl::RunTaskWithLockDelayed(v8::Task* pTask, double delayInSecond
|
|||
{
|
||||
auto spIsolate = wrIsolate.GetTarget();
|
||||
if (!spIsolate.IsEmpty())
|
||||
{
|
||||
CallWithLockNoWait([spTask] (V8IsolateImpl* /*pIsolateImpl*/)
|
||||
{
|
||||
spTask->Run();
|
||||
});
|
||||
|
||||
// Release the timer's strong task reference. Doing so avoids a deadlock when
|
||||
// spIsolate's implicit destruction below triggers immediate isolate teardown.
|
||||
|
@ -740,7 +776,8 @@ void V8IsolateImpl::RunTaskWithLockDelayed(v8::Task* pTask, double delayInSecond
|
|||
// the timer has fired; discard it
|
||||
|
||||
BEGIN_MUTEX_SCOPE(m_DataMutex)
|
||||
m_TaskTimers.erase(std::remove(m_TaskTimers.begin(), m_TaskTimers.end(), pTimer), m_TaskTimers.end());
|
||||
auto it = std::remove(m_TaskTimers.begin(), m_TaskTimers.end(), pTimer);
|
||||
m_TaskTimers.erase(it, m_TaskTimers.end());
|
||||
END_MUTEX_SCOPE
|
||||
}
|
||||
else
|
||||
|
@ -772,6 +809,105 @@ void V8IsolateImpl::RunTaskWithLockDelayed(v8::Task* pTask, double delayInSecond
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void V8IsolateImpl::RunTaskWithLockAsync(v8::Task* pTask)
|
||||
{
|
||||
if (m_Released)
|
||||
{
|
||||
pTask->Run();
|
||||
delete pTask;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::shared_ptr<v8::Task> spTask(pTask);
|
||||
CallWithLockAsync([spTask] (V8IsolateImpl* /*pIsolateImpl*/)
|
||||
{
|
||||
spTask->Run();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void V8IsolateImpl::RunTaskWithLockDelayed(v8::Task* pTask, double delayInSeconds)
|
||||
{
|
||||
if (m_Released)
|
||||
{
|
||||
delete pTask;
|
||||
}
|
||||
else
|
||||
{
|
||||
std::shared_ptr<v8::Task> spTask(pTask);
|
||||
|
||||
auto wrIsolate = CreateWeakRef();
|
||||
SharedPtr<Timer> spTimer(new Timer(static_cast<int>(delayInSeconds * 1000), -1, [this, wrIsolate, spTask] (Timer* pTimer) mutable
|
||||
{
|
||||
if (spTask)
|
||||
{
|
||||
auto spIsolate = wrIsolate.GetTarget();
|
||||
if (!spIsolate.IsEmpty())
|
||||
{
|
||||
CallWithLockNoWait([spTask] (V8IsolateImpl* /*pIsolateImpl*/)
|
||||
{
|
||||
spTask->Run();
|
||||
});
|
||||
|
||||
// Release the timer's strong task reference. Doing so avoids a deadlock when
|
||||
// spIsolate's implicit destruction below triggers immediate isolate teardown.
|
||||
|
||||
spTask.reset();
|
||||
|
||||
// the timer has fired; discard it
|
||||
|
||||
BEGIN_MUTEX_SCOPE(m_DataMutex)
|
||||
auto it = std::remove(m_TaskTimers.begin(), m_TaskTimers.end(), pTimer);
|
||||
m_TaskTimers.erase(it, m_TaskTimers.end());
|
||||
END_MUTEX_SCOPE
|
||||
}
|
||||
else
|
||||
{
|
||||
// Release the timer's strong task reference. Doing so avoids a deadlock if the
|
||||
// isolate is awaiting task completion on the managed finalization thread.
|
||||
|
||||
spTask.reset();
|
||||
}
|
||||
}
|
||||
}));
|
||||
|
||||
// hold on to the timer to ensure callback execution
|
||||
|
||||
BEGIN_MUTEX_SCOPE(m_DataMutex)
|
||||
m_TaskTimers.push_back(spTimer);
|
||||
END_MUTEX_SCOPE
|
||||
|
||||
// Release the local task reference explicitly. Doing so avoids a deadlock if the callback is
|
||||
// executed synchronously. That shouldn't happen given the current timer implementation.
|
||||
|
||||
spTask.reset();
|
||||
|
||||
// now it's safe to start the timer
|
||||
|
||||
spTimer->Start();
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
std::shared_ptr<v8::TaskRunner> V8IsolateImpl::GetForegroundTaskRunner()
|
||||
{
|
||||
BEGIN_MUTEX_SCOPE(m_DataMutex)
|
||||
|
||||
if (!m_spForegroundTaskRunner)
|
||||
{
|
||||
m_spForegroundTaskRunner = std::make_shared<V8ForegroundTaskRunner>(this);
|
||||
}
|
||||
|
||||
return m_spForegroundTaskRunner;
|
||||
|
||||
END_MUTEX_SCOPE
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void V8IsolateImpl::CallWithLockNoWait(std::function<void(V8IsolateImpl*)>&& callback)
|
||||
{
|
||||
if (m_Mutex.TryLock())
|
||||
|
|
|
@ -327,6 +327,11 @@ public:
|
|||
return v8::Locker::IsLocked(m_pIsolate);
|
||||
}
|
||||
|
||||
v8::Local<v8::String> GetTypeOf(v8::Local<v8::Value> hValue)
|
||||
{
|
||||
return !hValue.IsEmpty() ? hValue->TypeOf(m_pIsolate) : GetUndefined()->TypeOf(m_pIsolate);
|
||||
}
|
||||
|
||||
bool IsOutOfMemory() const
|
||||
{
|
||||
return m_IsOutOfMemory;
|
||||
|
@ -347,9 +352,9 @@ public:
|
|||
virtual void SetMaxStackUsage(size_t value) override;
|
||||
|
||||
virtual void AwaitDebuggerAndPause() override;
|
||||
virtual V8ScriptHolder* Compile(const StdString& documentName, const StdString& code) override;
|
||||
virtual V8ScriptHolder* Compile(const StdString& documentName, const StdString& code, V8CacheType cacheType, std::vector<std::uint8_t>& cacheBytes) override;
|
||||
virtual V8ScriptHolder* Compile(const StdString& documentName, const StdString& code, V8CacheType cacheType, const std::vector<std::uint8_t>& cacheBytes, bool& cacheAccepted) override;
|
||||
virtual V8ScriptHolder* Compile(const V8DocumentInfo& documentInfo, const StdString& code) override;
|
||||
virtual V8ScriptHolder* Compile(const V8DocumentInfo& documentInfo, const StdString& code, V8CacheType cacheType, std::vector<std::uint8_t>& cacheBytes) override;
|
||||
virtual V8ScriptHolder* Compile(const V8DocumentInfo& documentInfo, const StdString& code, V8CacheType cacheType, const std::vector<std::uint8_t>& cacheBytes, bool& cacheAccepted) override;
|
||||
virtual void GetHeapInfo(V8IsolateHeapInfo& heapInfo) override;
|
||||
virtual void CollectGarbage(bool exhaustive) override;
|
||||
|
||||
|
@ -370,8 +375,10 @@ public:
|
|||
void ReleaseV8Script(void* pvScript);
|
||||
|
||||
void RunTaskAsync(v8::Task* pTask);
|
||||
void RunTaskDelayed(v8::Task* pTask, double delayInSeconds);
|
||||
void RunTaskWithLockAsync(v8::Task* pTask);
|
||||
void RunTaskWithLockDelayed(v8::Task* pTask, double delayInSeconds);
|
||||
std::shared_ptr<v8::TaskRunner> GetForegroundTaskRunner();
|
||||
|
||||
void CallWithLockNoWait(std::function<void(V8IsolateImpl*)>&& callback);
|
||||
void DECLSPEC_NORETURN ThrowOutOfMemoryException();
|
||||
|
@ -407,6 +414,7 @@ private:
|
|||
RecursiveMutex m_Mutex;
|
||||
std::list<V8ContextImpl*> m_ContextPtrs;
|
||||
SimpleMutex m_DataMutex;
|
||||
std::shared_ptr<v8::TaskRunner> m_spForegroundTaskRunner;
|
||||
std::vector<std::shared_ptr<v8::Task>> m_AsyncTasks;
|
||||
std::queue<std::function<void(V8IsolateImpl*)>> m_CallWithLockQueue;
|
||||
std::condition_variable m_CallWithLockQueueChanged;
|
||||
|
|
|
@ -96,11 +96,11 @@ namespace V8 {
|
|||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
V8Script^ V8IsolateProxyImpl::Compile(String^ gcDocumentName, String^ gcCode)
|
||||
V8Script^ V8IsolateProxyImpl::Compile(DocumentInfo documentInfo, String^ gcCode)
|
||||
{
|
||||
try
|
||||
{
|
||||
return gcnew V8ScriptImpl(gcDocumentName, GetIsolate()->Compile(StdString(gcDocumentName), StdString(gcCode)));
|
||||
return gcnew V8ScriptImpl(documentInfo, GetIsolate()->Compile(V8DocumentInfo(documentInfo), StdString(gcCode)));
|
||||
}
|
||||
catch (const V8Exception& exception)
|
||||
{
|
||||
|
@ -110,19 +110,22 @@ namespace V8 {
|
|||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
V8Script^ V8IsolateProxyImpl::Compile(String^ gcDocumentName, String^ gcCode, V8CacheKind cacheKind, [Out] array<Byte>^% gcCacheBytes)
|
||||
V8Script^ V8IsolateProxyImpl::Compile(DocumentInfo documentInfo, String^ gcCode, V8CacheKind cacheKind, [Out] array<Byte>^% gcCacheBytes)
|
||||
{
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:4947) /* 'Microsoft::ClearScript::V8::V8CacheKind::Parser': marked as obsolete */
|
||||
|
||||
if (cacheKind == V8CacheKind::None)
|
||||
{
|
||||
gcCacheBytes = nullptr;
|
||||
return Compile(gcDocumentName, gcCode);
|
||||
return Compile(documentInfo, gcCode);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
std::vector<std::uint8_t> cacheBytes;
|
||||
auto cacheType = (cacheKind == V8CacheKind::Parser) ? V8CacheType::Parser : V8CacheType::Code;
|
||||
auto gcScript = gcnew V8ScriptImpl(gcDocumentName, GetIsolate()->Compile(StdString(gcDocumentName), StdString(gcCode), cacheType, cacheBytes));
|
||||
auto gcScript = gcnew V8ScriptImpl(documentInfo, GetIsolate()->Compile(V8DocumentInfo(documentInfo), StdString(gcCode), cacheType, cacheBytes));
|
||||
|
||||
auto length = static_cast<int>(cacheBytes.size());
|
||||
if (length < 1)
|
||||
|
@ -141,16 +144,21 @@ namespace V8 {
|
|||
{
|
||||
exception.ThrowScriptEngineException();
|
||||
}
|
||||
|
||||
#pragma warning(pop)
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
V8Script^ V8IsolateProxyImpl::Compile(String^ gcDocumentName, String^ gcCode, V8CacheKind cacheKind, array<Byte>^ gcCacheBytes, [Out] Boolean% cacheAccepted)
|
||||
V8Script^ V8IsolateProxyImpl::Compile(DocumentInfo documentInfo, String^ gcCode, V8CacheKind cacheKind, array<Byte>^ gcCacheBytes, [Out] Boolean% cacheAccepted)
|
||||
{
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:4947) /* 'Microsoft::ClearScript::V8::V8CacheKind::Parser': marked as obsolete */
|
||||
|
||||
if ((cacheKind == V8CacheKind::None) || (gcCacheBytes == nullptr) || (gcCacheBytes->Length < 1))
|
||||
{
|
||||
cacheAccepted = false;
|
||||
return Compile(gcDocumentName, gcCode);
|
||||
return Compile(documentInfo, gcCode);
|
||||
}
|
||||
|
||||
try
|
||||
|
@ -161,7 +169,7 @@ namespace V8 {
|
|||
|
||||
bool tempCacheAccepted;
|
||||
auto cacheType = (cacheKind == V8CacheKind::Parser) ? V8CacheType::Parser : V8CacheType::Code;
|
||||
auto gcScript = gcnew V8ScriptImpl(gcDocumentName, GetIsolate()->Compile(StdString(gcDocumentName), StdString(gcCode), cacheType, cacheBytes, tempCacheAccepted));
|
||||
auto gcScript = gcnew V8ScriptImpl(documentInfo, GetIsolate()->Compile(V8DocumentInfo(documentInfo), StdString(gcCode), cacheType, cacheBytes, tempCacheAccepted));
|
||||
|
||||
cacheAccepted = tempCacheAccepted;
|
||||
return gcScript;
|
||||
|
@ -170,6 +178,8 @@ namespace V8 {
|
|||
{
|
||||
exception.ThrowScriptEngineException();
|
||||
}
|
||||
|
||||
#pragma warning(pop)
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
|
|
|
@ -36,9 +36,9 @@ namespace V8 {
|
|||
}
|
||||
|
||||
virtual void AwaitDebuggerAndPause() override;
|
||||
virtual V8Script^ Compile(String^ gcDocumentName, String^ gcCode) override;
|
||||
virtual V8Script^ Compile(String^ gcDocumentName, String^ gcCode, V8CacheKind cacheKind, [Out] array<Byte>^% gcCacheBytes) override;
|
||||
virtual V8Script^ Compile(String^ gcDocumentName, String^ gcCode, V8CacheKind cacheKind, array<Byte>^ gcCacheBytes, [Out] Boolean% cacheAccepted) override;
|
||||
virtual V8Script^ Compile(DocumentInfo documentInfo, String^ gcCode) override;
|
||||
virtual V8Script^ Compile(DocumentInfo documentInfo, String^ gcCode, V8CacheKind cacheKind, [Out] array<Byte>^% gcCacheBytes) override;
|
||||
virtual V8Script^ Compile(DocumentInfo documentInfo, String^ gcCode, V8CacheKind cacheKind, array<Byte>^ gcCacheBytes, [Out] Boolean% cacheAccepted) override;
|
||||
virtual V8RuntimeHeapInfo^ GetHeapInfo() override;
|
||||
virtual void CollectGarbage(bool exhaustive) override;
|
||||
|
||||
|
|
|
@ -11,8 +11,8 @@ namespace V8 {
|
|||
// V8ScriptImpl implementation
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
V8ScriptImpl::V8ScriptImpl(String^ gcDocumentName, V8ScriptHolder* pHolder):
|
||||
V8Script(gcDocumentName),
|
||||
V8ScriptImpl::V8ScriptImpl(ClearScript::DocumentInfo documentInfo, V8ScriptHolder* pHolder):
|
||||
V8Script(documentInfo),
|
||||
m_gcLock(gcnew Object),
|
||||
m_pspHolder(new SharedPtr<V8ScriptHolder>(pHolder))
|
||||
{
|
||||
|
|
|
@ -15,7 +15,7 @@ namespace V8 {
|
|||
{
|
||||
public:
|
||||
|
||||
V8ScriptImpl(String^ gcDocumentName, V8ScriptHolder* pHolder);
|
||||
V8ScriptImpl(ClearScript::DocumentInfo documentInfo, V8ScriptHolder* pHolder);
|
||||
|
||||
SharedPtr<V8ScriptHolder> GetHolder();
|
||||
|
||||
|
|
|
@ -1,81 +1,122 @@
|
|||
diff --git a/gypfiles/standalone.gypi b/gypfiles/standalone.gypi
|
||||
index ec47f1c0ab..90bebbc901 100644
|
||||
--- a/gypfiles/standalone.gypi
|
||||
+++ b/gypfiles/standalone.gypi
|
||||
@@ -949,9 +949,10 @@
|
||||
'EnableFunctionLevelLinking': 'true',
|
||||
'RuntimeTypeInfo': 'false',
|
||||
'WarningLevel': '3',
|
||||
- 'WarnAsError': 'true',
|
||||
+ 'WarnAsError': 'false',
|
||||
'DebugInformationFormat': '3',
|
||||
'Detect64BitPortabilityProblems': 'false',
|
||||
+ 'AdditionalOptions': ['/bigobj'],
|
||||
'conditions': [
|
||||
[ 'msvs_multi_core_compile', {
|
||||
'AdditionalOptions': ['/MP'],
|
||||
diff --git a/include/v8-platform.h b/include/v8-platform.h
|
||||
index 2bb14df93e..e30effff7a 100644
|
||||
--- a/include/v8-platform.h
|
||||
+++ b/include/v8-platform.h
|
||||
@@ -22,6 +22,7 @@ class Task {
|
||||
virtual ~Task() = default;
|
||||
diff --git a/BUILD.gn b/BUILD.gn
|
||||
index 456a318c1c..2e8918cfc6 100644
|
||||
--- a/BUILD.gn
|
||||
+++ b/BUILD.gn
|
||||
@@ -152,6 +152,12 @@ declare_args() {
|
||||
v8_enable_minor_mc = true
|
||||
}
|
||||
|
||||
virtual void Run() = 0;
|
||||
+ virtual void Delete();
|
||||
};
|
||||
+if (v8_current_cpu == "x86") {
|
||||
+ clearscript_v8_platform = "ia32"
|
||||
+} else {
|
||||
+ clearscript_v8_platform = v8_current_cpu
|
||||
+}
|
||||
+
|
||||
# Derived defaults.
|
||||
if (v8_enable_verify_heap == "") {
|
||||
v8_enable_verify_heap = v8_enable_debugging_features
|
||||
@@ -2782,6 +2788,7 @@ v8_source_set("v8_base") {
|
||||
}
|
||||
|
||||
/**
|
||||
v8_component("v8_libbase") {
|
||||
+ output_name = "v8-base-${clearscript_v8_platform}"
|
||||
sources = [
|
||||
"src/base/adapters.h",
|
||||
"src/base/atomic-utils.h",
|
||||
@@ -2957,6 +2964,7 @@ v8_component("v8_libbase") {
|
||||
}
|
||||
|
||||
v8_component("v8_libplatform") {
|
||||
+ output_name = "v8-platform-${clearscript_v8_platform}"
|
||||
sources = [
|
||||
"//base/trace_event/common/trace_event_common.h",
|
||||
"include/libplatform/libplatform-export.h",
|
||||
@@ -3220,6 +3228,7 @@ group("v8_fuzzers") {
|
||||
|
||||
if (is_component_build) {
|
||||
v8_component("v8") {
|
||||
+ output_name = "v8-${clearscript_v8_platform}"
|
||||
sources = [
|
||||
"src/v8dll-main.cc",
|
||||
]
|
||||
diff --git a/include/v8.h b/include/v8.h
|
||||
index acb3efbc71..00817b1774 100644
|
||||
index b68d9fbbfc..eee58ddada 100644
|
||||
--- a/include/v8.h
|
||||
+++ b/include/v8.h
|
||||
@@ -1305,6 +1305,7 @@ class V8_EXPORT ScriptCompiler {
|
||||
// caller. The CachedData object is alive as long as the Source object is
|
||||
// alive.
|
||||
V8_INLINE const CachedData* GetCachedData() const;
|
||||
+ V8_EXPORT void DeleteCachedData();
|
||||
|
||||
V8_INLINE const ScriptOriginOptions& GetResourceOptions() const;
|
||||
@@ -1393,6 +1393,7 @@ class V8_EXPORT ScriptCompiler {
|
||||
// (with delete[]) when the CachedData object is destroyed.
|
||||
CachedData(const uint8_t* data, int length,
|
||||
BufferPolicy buffer_policy = BufferNotOwned);
|
||||
+ void Delete();
|
||||
~CachedData();
|
||||
// TODO(marja): Async compilation; add constructors which take a callback
|
||||
// which will be called when V8 no longer needs the data.
|
||||
diff --git a/src/api-natives.cc b/src/api-natives.cc
|
||||
index 1b6df15d7a..def0bceebf 100644
|
||||
--- a/src/api-natives.cc
|
||||
+++ b/src/api-natives.cc
|
||||
@@ -729,6 +729,7 @@ Handle<JSFunction> ApiNatives::CreateApiFunction(
|
||||
// Mark instance as callable in the map.
|
||||
if (!obj->instance_call_handler()->IsUndefined(isolate)) {
|
||||
map->set_is_callable(true);
|
||||
+ map->set_is_constructor(true);
|
||||
}
|
||||
|
||||
if (immutable_proto) map->set_is_immutable_proto(true);
|
||||
diff --git a/src/api.cc b/src/api.cc
|
||||
index 147cc397f2..370c67337d 100644
|
||||
index 89bcb2e4fa..a294727cb8 100644
|
||||
--- a/src/api.cc
|
||||
+++ b/src/api.cc
|
||||
@@ -2047,6 +2047,13 @@ void ObjectTemplate::SetImmutableProto() {
|
||||
// --- S c r i p t s ---
|
||||
@@ -2057,6 +2057,11 @@ ScriptCompiler::CachedData::CachedData(const uint8_t* data_, int length_,
|
||||
buffer_policy(buffer_policy_) {}
|
||||
|
||||
|
||||
+void ScriptCompiler::Source::DeleteCachedData()
|
||||
+{
|
||||
+ delete cached_data;
|
||||
+ cached_data = nullptr;
|
||||
+void ScriptCompiler::CachedData::Delete() {
|
||||
+ delete this;
|
||||
+}
|
||||
+
|
||||
+
|
||||
// Internally, UnboundScript is a SharedFunctionInfo, and Script is a
|
||||
// JSFunction.
|
||||
ScriptCompiler::CachedData::~CachedData() {
|
||||
if (buffer_policy == BufferOwned) {
|
||||
delete[] data;
|
||||
diff --git a/src/code-stub-assembler.cc b/src/code-stub-assembler.cc
|
||||
index 9a51017899..d3a17b306d 100644
|
||||
--- a/src/code-stub-assembler.cc
|
||||
+++ b/src/code-stub-assembler.cc
|
||||
@@ -10853,6 +10853,11 @@ Node* CodeStubAssembler::Typeof(Node* value) {
|
||||
|
||||
diff --git a/src/cancelable-task.cc b/src/cancelable-task.cc
|
||||
index 7c9cc9cb93..8dfc2542a4 100644
|
||||
--- a/src/cancelable-task.cc
|
||||
+++ b/src/cancelable-task.cc
|
||||
@@ -7,6 +7,10 @@
|
||||
#include "src/base/platform/platform.h"
|
||||
#include "src/isolate.h"
|
||||
GotoIf(InstanceTypeEqual(instance_type, ODDBALL_TYPE), &if_oddball);
|
||||
|
||||
+ Label resume_default(this);
|
||||
+ GotoIfNot(Word32And(LoadMapBitField(map), Int32Constant(Map::HasNamedInterceptorBit::kMask)), &resume_default);
|
||||
+ Branch(Word32And(LoadMapBitField3(map), Int32Constant(Map::IsImmutablePrototypeBit::kMask)), &return_function, &return_object);
|
||||
+ BIND(&resume_default);
|
||||
+
|
||||
+void v8::Task::Delete() { delete this; }
|
||||
+
|
||||
+
|
||||
namespace v8 {
|
||||
namespace internal {
|
||||
|
||||
Node* callable_or_undetectable_mask = Word32And(
|
||||
LoadMapBitField(map),
|
||||
Int32Constant(Map::IsCallableBit::kMask | Map::IsUndetectableBit::kMask));
|
||||
diff --git a/src/objects.cc b/src/objects.cc
|
||||
index 80442d5bd8..5167977de2 100644
|
||||
--- a/src/objects.cc
|
||||
+++ b/src/objects.cc
|
||||
@@ -709,6 +709,12 @@ Handle<String> Object::TypeOf(Isolate* isolate, Handle<Object> object) {
|
||||
if (object->IsString()) return isolate->factory()->string_string();
|
||||
if (object->IsSymbol()) return isolate->factory()->symbol_string();
|
||||
if (object->IsBigInt()) return isolate->factory()->bigint_string();
|
||||
+ if (object->IsJSObject()) {
|
||||
+ Handle<JSObject> obj = Handle<JSObject>::cast(object);
|
||||
+ if (obj->HasNamedInterceptor()) {
|
||||
+ return obj->map()->is_immutable_proto() ? isolate->factory()->function_string() : isolate->factory()->object_string();
|
||||
+ }
|
||||
+ }
|
||||
if (object->IsCallable()) return isolate->factory()->function_string();
|
||||
return isolate->factory()->object_string();
|
||||
}
|
||||
diff --git a/src/v8.cc b/src/v8.cc
|
||||
index a6d97e8ff1..1b715d3402 100644
|
||||
index 8d34dba912..937c925ce9 100644
|
||||
--- a/src/v8.cc
|
||||
+++ b/src/v8.cc
|
||||
@@ -93,7 +93,6 @@ void V8::InitializeOncePerProcess() {
|
||||
@@ -90,7 +90,6 @@ void V8::InitializeOncePerProcess() {
|
||||
|
||||
|
||||
void V8::InitializePlatform(v8::Platform* platform) {
|
||||
|
@ -83,28 +124,8 @@ index a6d97e8ff1..1b715d3402 100644
|
|||
CHECK(platform);
|
||||
platform_ = platform;
|
||||
v8::base::SetPrintStackTrace(platform_->GetStackTracePrinter());
|
||||
diff --git a/src/v8.gyp b/src/v8.gyp
|
||||
index 218b173af2..c6c58319c5 100644
|
||||
--- a/src/v8.gyp
|
||||
+++ b/src/v8.gyp
|
||||
@@ -41,6 +41,7 @@
|
||||
'targets': [
|
||||
{
|
||||
'target_name': 'v8',
|
||||
+ 'product_name': 'v8-' + '<(v8_target_arch)',
|
||||
'dependencies_traverse': 1,
|
||||
'dependencies': ['v8_maybe_snapshot', 'v8_dump_build_config#target'],
|
||||
'conditions': [
|
||||
@@ -1870,6 +1871,7 @@
|
||||
},
|
||||
{
|
||||
'target_name': 'v8_libbase',
|
||||
+ 'product_name': 'v8-base-' + '<(v8_target_arch)',
|
||||
'type': '<(component)',
|
||||
'variables': {
|
||||
'optimize': 'max',
|
||||
diff --git a/src/v8dll-main.cc b/src/v8dll-main.cc
|
||||
index 6250b3e341..268bcc76eb 100644
|
||||
index 6250b3e341..be3854a352 100644
|
||||
--- a/src/v8dll-main.cc
|
||||
+++ b/src/v8dll-main.cc
|
||||
@@ -10,6 +10,11 @@
|
||||
|
@ -113,7 +134,7 @@ index 6250b3e341..268bcc76eb 100644
|
|||
|
||||
+#include "include/v8-inspector.h"
|
||||
+PVOID forceExports[] = {
|
||||
+ v8_inspector::V8Inspector::create
|
||||
+ reinterpret_cast<PVOID>(v8_inspector::V8Inspector::create)
|
||||
+};
|
||||
+
|
||||
extern "C" {
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT license.
|
||||
|
||||
using System;
|
||||
|
||||
namespace Microsoft.ClearScript.V8
|
||||
{
|
||||
/// <summary>
|
||||
|
@ -19,6 +21,7 @@ namespace Microsoft.ClearScript.V8
|
|||
/// Selects parser caching. Parser cache data is smaller and less expensive to generate
|
||||
/// than code cache data, but it is less effective at accelerating recompilation.
|
||||
/// </summary>
|
||||
[Obsolete("V8 no longer supports parser caching. This option is now equivalent to Code.")]
|
||||
Parser,
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -26,13 +26,13 @@ namespace Microsoft.ClearScript.V8
|
|||
|
||||
public abstract void AwaitDebuggerAndPause();
|
||||
|
||||
public abstract object Execute(string documentName, string code, bool evaluate, bool discard);
|
||||
public abstract object Execute(DocumentInfo documentInfo, string code, bool evaluate);
|
||||
|
||||
public abstract V8Script Compile(string documentName, string code);
|
||||
public abstract V8Script Compile(DocumentInfo documentInfo, string code);
|
||||
|
||||
public abstract V8Script Compile(string documentName, string code, V8CacheKind cacheKind, out byte[] cacheBytes);
|
||||
public abstract V8Script Compile(DocumentInfo documentInfo, string code, V8CacheKind cacheKind, out byte[] cacheBytes);
|
||||
|
||||
public abstract V8Script Compile(string documentName, string code, V8CacheKind cacheKind, byte[] cacheBytes, out bool cacheAccepted);
|
||||
public abstract V8Script Compile(DocumentInfo documentInfo, string code, V8CacheKind cacheKind, byte[] cacheBytes, out bool cacheAccepted);
|
||||
|
||||
public abstract object Execute(V8Script script, bool evaluate);
|
||||
|
||||
|
|
|
@ -20,11 +20,11 @@ namespace Microsoft.ClearScript.V8
|
|||
|
||||
public abstract void AwaitDebuggerAndPause();
|
||||
|
||||
public abstract V8Script Compile(string documentName, string code);
|
||||
public abstract V8Script Compile(DocumentInfo documentInfo, string code);
|
||||
|
||||
public abstract V8Script Compile(string documentName, string code, V8CacheKind cacheKind, out byte[] cacheBytes);
|
||||
public abstract V8Script Compile(DocumentInfo documentInfo, string code, V8CacheKind cacheKind, out byte[] cacheBytes);
|
||||
|
||||
public abstract V8Script Compile(string documentName, string code, V8CacheKind cacheKind, byte[] cacheBytes, out bool cacheAccepted);
|
||||
public abstract V8Script Compile(DocumentInfo documentInfo, string code, V8CacheKind cacheKind, byte[] cacheBytes, out bool cacheAccepted);
|
||||
|
||||
public abstract V8RuntimeHeapInfo GetHeapInfo();
|
||||
|
||||
|
|
|
@ -129,7 +129,7 @@ namespace Microsoft.ClearScript.V8
|
|||
|
||||
private static IEnumerable<string> GetDirPaths()
|
||||
{
|
||||
// The assembly location may be empty if the the host preloaded the assembly
|
||||
// The assembly location may be empty if the host preloaded the assembly
|
||||
// from custom storage. Support for this scenario was requested on CodePlex.
|
||||
|
||||
var location = typeof(V8Proxy).Assembly.Location;
|
||||
|
|
|
@ -162,26 +162,20 @@ namespace Microsoft.ClearScript.V8
|
|||
return ((IDynamic)obj).InvokeMethod(name, args);
|
||||
}
|
||||
|
||||
public static unsafe bool HostObjectIsDelegate(void* pObject)
|
||||
public static unsafe Invocability GetHostObjectInvocability(void* pObject)
|
||||
{
|
||||
return HostObjectIsDelegate(GetHostObject(pObject));
|
||||
return GetHostObjectInvocability(GetHostObject(pObject));
|
||||
}
|
||||
|
||||
public static bool HostObjectIsDelegate(object obj)
|
||||
public static Invocability GetHostObjectInvocability(object obj)
|
||||
{
|
||||
var hostItem = obj as HostItem;
|
||||
if (hostItem == null)
|
||||
{
|
||||
return false;
|
||||
return Invocability.None;
|
||||
}
|
||||
|
||||
var hostTarget = hostItem.Target;
|
||||
if ((hostTarget is HostType) || (hostTarget is HostMethod))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return hostTarget.Flags.HasFlag(HostTargetFlags.AllowInstanceMembers) && typeof(Delegate).IsAssignableFrom(hostTarget.Type);
|
||||
return hostItem.Invocability;
|
||||
}
|
||||
|
||||
public static unsafe object GetEnumeratorForHostObject(void* pObject)
|
||||
|
|
|
@ -391,10 +391,21 @@ namespace Microsoft.ClearScript.V8
|
|||
/// <param name="code">The script code to compile.</param>
|
||||
/// <returns>A compiled script that can be executed by multiple V8 script engine instances.</returns>
|
||||
public V8Script Compile(string documentName, string code)
|
||||
{
|
||||
return Compile(new DocumentInfo(documentName), code);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a compiled script with the specified document information.
|
||||
/// </summary>
|
||||
/// <param name="documentInfo">A structure containing information about the script document.</param>
|
||||
/// <param name="code">The script code to compile.</param>
|
||||
/// <returns>A compiled script that can be executed by multiple V8 script engine instances.</returns>
|
||||
public V8Script Compile(DocumentInfo documentInfo, string code)
|
||||
{
|
||||
VerifyNotDisposed();
|
||||
var uniqueName = name + ":" + documentNameManager.GetUniqueName(documentName, "Script Document");
|
||||
return proxy.Compile(uniqueName, FormatCode ? MiscHelpers.FormatCode(code) : code);
|
||||
documentInfo.UniqueName = name + ":" + documentNameManager.GetUniqueName(documentInfo.Name, DocumentInfo.DefaultName);
|
||||
return proxy.Compile(documentInfo, FormatCode ? MiscHelpers.FormatCode(code) : code);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -430,10 +441,29 @@ namespace Microsoft.ClearScript.V8
|
|||
/// </remarks>
|
||||
/// <seealso cref="Compile(string, string, V8CacheKind, byte[], out bool)"/>
|
||||
public V8Script Compile(string documentName, string code, V8CacheKind cacheKind, out byte[] cacheBytes)
|
||||
{
|
||||
return Compile(new DocumentInfo(documentName), code, cacheKind, out cacheBytes);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a compiled script with the specified document information, generating cache data for accelerated recompilation.
|
||||
/// </summary>
|
||||
/// <param name="documentInfo">A structure containing information about the script document.</param>
|
||||
/// <param name="code">The script code to compile.</param>
|
||||
/// <param name="cacheKind">The kind of cache data to be generated.</param>
|
||||
/// <param name="cacheBytes">Cache data for accelerated recompilation.</param>
|
||||
/// <returns>A compiled script that can be executed by multiple V8 script engine instances.</returns>
|
||||
/// <remarks>
|
||||
/// The generated cache data can be stored externally and is usable in other V8 runtimes
|
||||
/// and application processes. V8 runtimes with debugging enabled cannot generate cache
|
||||
/// data.
|
||||
/// </remarks>
|
||||
/// <seealso cref="Compile(DocumentInfo, string, V8CacheKind, byte[], out bool)"/>
|
||||
public V8Script Compile(DocumentInfo documentInfo, string code, V8CacheKind cacheKind, out byte[] cacheBytes)
|
||||
{
|
||||
VerifyNotDisposed();
|
||||
var uniqueName = name + ":" + documentNameManager.GetUniqueName(documentName, "Script Document");
|
||||
return proxy.Compile(uniqueName, FormatCode ? MiscHelpers.FormatCode(code) : code, cacheKind, out cacheBytes);
|
||||
documentInfo.UniqueName = name + ":" + documentNameManager.GetUniqueName(documentInfo.Name, DocumentInfo.DefaultName);
|
||||
return proxy.Compile(documentInfo, FormatCode ? MiscHelpers.FormatCode(code) : code, cacheKind, out cacheBytes);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -469,10 +499,29 @@ namespace Microsoft.ClearScript.V8
|
|||
/// </remarks>
|
||||
/// <seealso cref="Compile(string, string, V8CacheKind, out byte[])"/>
|
||||
public V8Script Compile(string documentName, string code, V8CacheKind cacheKind, byte[] cacheBytes, out bool cacheAccepted)
|
||||
{
|
||||
return Compile(new DocumentInfo(documentName), code, cacheKind, cacheBytes, out cacheAccepted);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a compiled script with the specified document information, consuming previously generated cache data.
|
||||
/// </summary>
|
||||
/// <param name="documentInfo">A structure containing information about the script document.</param>
|
||||
/// <param name="code">The script code to compile.</param>
|
||||
/// <param name="cacheKind">The kind of cache data to be consumed.</param>
|
||||
/// <param name="cacheBytes">Cache data for accelerated compilation.</param>
|
||||
/// <param name="cacheAccepted"><c>True</c> if <paramref name="cacheBytes"/> was accepted, <c>false</c> otherwise.</param>
|
||||
/// <returns>A compiled script that can be executed by multiple V8 script engine instances.</returns>
|
||||
/// <remarks>
|
||||
/// To be accepted, the cache data must have been generated for identical script code by
|
||||
/// the same V8 build. V8 runtimes with debugging enabled cannot consume cache data.
|
||||
/// </remarks>
|
||||
/// <seealso cref="Compile(DocumentInfo, string, V8CacheKind, out byte[])"/>
|
||||
public V8Script Compile(DocumentInfo documentInfo, string code, V8CacheKind cacheKind, byte[] cacheBytes, out bool cacheAccepted)
|
||||
{
|
||||
VerifyNotDisposed();
|
||||
var uniqueName = name + ":" + documentNameManager.GetUniqueName(documentName, "Script Document");
|
||||
return proxy.Compile(uniqueName, FormatCode ? MiscHelpers.FormatCode(code) : code, cacheKind, cacheBytes, out cacheAccepted);
|
||||
documentInfo.UniqueName = name + ":" + documentNameManager.GetUniqueName(documentInfo.Name, DocumentInfo.DefaultName);
|
||||
return proxy.Compile(documentInfo, FormatCode ? MiscHelpers.FormatCode(code) : code, cacheKind, cacheBytes, out cacheAccepted);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -11,19 +11,28 @@ namespace Microsoft.ClearScript.V8
|
|||
/// </summary>
|
||||
public abstract class V8Script : IDisposable
|
||||
{
|
||||
private readonly string name;
|
||||
private readonly DocumentInfo documentInfo;
|
||||
|
||||
internal V8Script(string name)
|
||||
internal V8Script(DocumentInfo documentInfo)
|
||||
{
|
||||
this.name = name;
|
||||
this.documentInfo = documentInfo;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the document name associated with the compiled script.
|
||||
/// </summary>
|
||||
[Obsolete("Use DocumentInfo instead.")]
|
||||
public string Name
|
||||
{
|
||||
get { return name; }
|
||||
get { return documentInfo.UniqueName; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the document information associated with the compiled script.
|
||||
/// </summary>
|
||||
public DocumentInfo DocumentInfo
|
||||
{
|
||||
get { return documentInfo; }
|
||||
}
|
||||
|
||||
#region IDisposable implementation (abstract)
|
||||
|
|
|
@ -444,13 +444,24 @@ namespace Microsoft.ClearScript.V8
|
|||
/// <param name="code">The script code to compile.</param>
|
||||
/// <returns>A compiled script that can be executed multiple times without recompilation.</returns>
|
||||
public V8Script Compile(string documentName, string code)
|
||||
{
|
||||
return Compile(new DocumentInfo(documentName), code);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a compiled script with the specified document information.
|
||||
/// </summary>
|
||||
/// <param name="documentInfo">A structure containing information about the script document.</param>
|
||||
/// <param name="code">The script code to compile.</param>
|
||||
/// <returns>A compiled script that can be executed multiple times without recompilation.</returns>
|
||||
public V8Script Compile(DocumentInfo documentInfo, string code)
|
||||
{
|
||||
VerifyNotDisposed();
|
||||
|
||||
return ScriptInvoke(() =>
|
||||
{
|
||||
var uniqueName = documentNameManager.GetUniqueName(documentName, "Script Document");
|
||||
return proxy.Compile(uniqueName, FormatCode ? MiscHelpers.FormatCode(code) : code);
|
||||
documentInfo.UniqueName = documentNameManager.GetUniqueName(documentInfo.Name, DocumentInfo.DefaultName);
|
||||
return proxy.Compile(documentInfo, FormatCode ? MiscHelpers.FormatCode(code) : code);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -487,6 +498,25 @@ namespace Microsoft.ClearScript.V8
|
|||
/// </remarks>
|
||||
/// <seealso cref="Compile(string, string, V8CacheKind, byte[], out bool)"/>
|
||||
public V8Script Compile(string documentName, string code, V8CacheKind cacheKind, out byte[] cacheBytes)
|
||||
{
|
||||
return Compile(new DocumentInfo(documentName), code, cacheKind, out cacheBytes);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a compiled script with the specified document information, generating cache data for accelerated recompilation.
|
||||
/// </summary>
|
||||
/// <param name="documentInfo">A structure containing information about the script document.</param>
|
||||
/// <param name="code">The script code to compile.</param>
|
||||
/// <param name="cacheKind">The kind of cache data to be generated.</param>
|
||||
/// <param name="cacheBytes">Cache data for accelerated recompilation.</param>
|
||||
/// <returns>A compiled script that can be executed multiple times without recompilation.</returns>
|
||||
/// <remarks>
|
||||
/// The generated cache data can be stored externally and is usable in other V8 script
|
||||
/// engines and application processes. V8 script engines with debugging enabled cannot
|
||||
/// generate cache data.
|
||||
/// </remarks>
|
||||
/// <seealso cref="Compile(DocumentInfo, string, V8CacheKind, byte[], out bool)"/>
|
||||
public V8Script Compile(DocumentInfo documentInfo, string code, V8CacheKind cacheKind, out byte[] cacheBytes)
|
||||
{
|
||||
VerifyNotDisposed();
|
||||
|
||||
|
@ -494,8 +524,8 @@ namespace Microsoft.ClearScript.V8
|
|||
cacheBytes = ScriptInvoke(() =>
|
||||
{
|
||||
byte[] tempCacheBytes;
|
||||
var uniqueName = documentNameManager.GetUniqueName(documentName, "Script Document");
|
||||
tempScript = proxy.Compile(uniqueName, FormatCode ? MiscHelpers.FormatCode(code) : code, cacheKind, out tempCacheBytes);
|
||||
documentInfo.UniqueName = documentNameManager.GetUniqueName(documentInfo.Name, DocumentInfo.DefaultName);
|
||||
tempScript = proxy.Compile(documentInfo, FormatCode ? MiscHelpers.FormatCode(code) : code, cacheKind, out tempCacheBytes);
|
||||
return tempCacheBytes;
|
||||
});
|
||||
|
||||
|
@ -535,6 +565,25 @@ namespace Microsoft.ClearScript.V8
|
|||
/// </remarks>
|
||||
/// <seealso cref="Compile(string, string, V8CacheKind, out byte[])"/>
|
||||
public V8Script Compile(string documentName, string code, V8CacheKind cacheKind, byte[] cacheBytes, out bool cacheAccepted)
|
||||
{
|
||||
return Compile(new DocumentInfo(documentName), code, cacheKind, cacheBytes, out cacheAccepted);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a compiled script with an associated document name, consuming previously generated cache data.
|
||||
/// </summary>
|
||||
/// <param name="documentInfo">A structure containing information about the script document.</param>
|
||||
/// <param name="code">The script code to compile.</param>
|
||||
/// <param name="cacheKind">The kind of cache data to be consumed.</param>
|
||||
/// <param name="cacheBytes">Cache data for accelerated compilation.</param>
|
||||
/// <param name="cacheAccepted"><c>True</c> if <paramref name="cacheBytes"/> was accepted, <c>false</c> otherwise.</param>
|
||||
/// <returns>A compiled script that can be executed multiple times without recompilation.</returns>
|
||||
/// <remarks>
|
||||
/// To be accepted, the cache data must have been generated for identical script code by
|
||||
/// the same V8 build. V8 script engines with debugging enabled cannot consume cache data.
|
||||
/// </remarks>
|
||||
/// <seealso cref="Compile(DocumentInfo, string, V8CacheKind, out byte[])"/>
|
||||
public V8Script Compile(DocumentInfo documentInfo, string code, V8CacheKind cacheKind, byte[] cacheBytes, out bool cacheAccepted)
|
||||
{
|
||||
VerifyNotDisposed();
|
||||
|
||||
|
@ -542,8 +591,8 @@ namespace Microsoft.ClearScript.V8
|
|||
cacheAccepted = ScriptInvoke(() =>
|
||||
{
|
||||
bool tempCacheAccepted;
|
||||
var uniqueName = documentNameManager.GetUniqueName(documentName, "Script Document");
|
||||
tempScript = proxy.Compile(uniqueName, FormatCode ? MiscHelpers.FormatCode(code) : code, cacheKind, cacheBytes, out tempCacheAccepted);
|
||||
documentInfo.UniqueName = documentNameManager.GetUniqueName(documentInfo.Name, DocumentInfo.DefaultName);
|
||||
tempScript = proxy.Compile(documentInfo, FormatCode ? MiscHelpers.FormatCode(code) : code, cacheKind, cacheBytes, out tempCacheAccepted);
|
||||
return tempCacheAccepted;
|
||||
});
|
||||
|
||||
|
@ -896,20 +945,20 @@ namespace Microsoft.ClearScript.V8
|
|||
return V8ScriptItem.Wrap(this, obj);
|
||||
}
|
||||
|
||||
internal override object Execute(string documentName, string code, bool evaluate, bool discard)
|
||||
internal override object Execute(DocumentInfo documentInfo, string code, bool evaluate)
|
||||
{
|
||||
VerifyNotDisposed();
|
||||
|
||||
return ScriptInvoke(() =>
|
||||
{
|
||||
var uniqueName = documentNameManager.GetUniqueName(documentName, "Script Document");
|
||||
if (discard)
|
||||
documentInfo.UniqueName = documentNameManager.GetUniqueName(documentInfo.Name, DocumentInfo.DefaultName);
|
||||
if (documentInfo.Flags.GetValueOrDefault().HasFlag(DocumentFlags.IsTransient))
|
||||
{
|
||||
uniqueName += " [temp]";
|
||||
documentInfo.UniqueName += " [temp]";
|
||||
}
|
||||
else if (documentNames != null)
|
||||
{
|
||||
documentNames.Add(uniqueName);
|
||||
documentNames.Add(documentInfo.UniqueName);
|
||||
}
|
||||
|
||||
if (inContinuationTimerScope || (ContinuationCallback == null))
|
||||
|
@ -919,7 +968,7 @@ namespace Microsoft.ClearScript.V8
|
|||
proxy.AwaitDebuggerAndPause();
|
||||
}
|
||||
|
||||
return proxy.Execute(uniqueName, FormatCode ? MiscHelpers.FormatCode(code) : code, evaluate, discard);
|
||||
return proxy.Execute(documentInfo, FormatCode ? MiscHelpers.FormatCode(code) : code, evaluate);
|
||||
}
|
||||
|
||||
var state = new Timer[] { null };
|
||||
|
@ -935,7 +984,7 @@ namespace Microsoft.ClearScript.V8
|
|||
proxy.AwaitDebuggerAndPause();
|
||||
}
|
||||
|
||||
return proxy.Execute(uniqueName, FormatCode ? MiscHelpers.FormatCode(code) : code, evaluate, discard);
|
||||
return proxy.Execute(documentInfo, FormatCode ? MiscHelpers.FormatCode(code) : code, evaluate);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
|
|
@ -78,7 +78,9 @@ namespace Microsoft.ClearScript.Windows
|
|||
AppNode,
|
||||
Title,
|
||||
FileTail,
|
||||
URL
|
||||
URL,
|
||||
UniqueTitle,
|
||||
SourceMapURL
|
||||
}
|
||||
|
||||
internal enum BreakpointState
|
||||
|
@ -644,7 +646,8 @@ namespace Microsoft.ClearScript.Windows
|
|||
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
||||
internal interface IDebugDocumentInfo
|
||||
{
|
||||
void GetName(
|
||||
[PreserveSig]
|
||||
uint GetName(
|
||||
[In] DocumentNameType type,
|
||||
[Out] [MarshalAs(UnmanagedType.BStr)] out string name
|
||||
);
|
||||
|
@ -661,7 +664,8 @@ namespace Microsoft.ClearScript.Windows
|
|||
{
|
||||
#region IDebugDocumentInfo methods
|
||||
|
||||
void GetName(
|
||||
[PreserveSig]
|
||||
uint GetName(
|
||||
[In] DocumentNameType type,
|
||||
[Out] [MarshalAs(UnmanagedType.BStr)] out string name
|
||||
);
|
||||
|
@ -682,7 +686,8 @@ namespace Microsoft.ClearScript.Windows
|
|||
{
|
||||
#region IDebugDocumentInfo methods
|
||||
|
||||
void GetName(
|
||||
[PreserveSig]
|
||||
uint GetName(
|
||||
[In] DocumentNameType type,
|
||||
[Out] [MarshalAs(UnmanagedType.BStr)] out string name
|
||||
);
|
||||
|
@ -701,7 +706,8 @@ namespace Microsoft.ClearScript.Windows
|
|||
{
|
||||
#region IDebugDocumentInfo methods
|
||||
|
||||
void GetName(
|
||||
[PreserveSig]
|
||||
uint GetName(
|
||||
[In] DocumentNameType type,
|
||||
[Out] [MarshalAs(UnmanagedType.BStr)] out string name
|
||||
);
|
||||
|
@ -764,7 +770,8 @@ namespace Microsoft.ClearScript.Windows
|
|||
{
|
||||
#region IDebugDocumentInfo methods
|
||||
|
||||
void GetName(
|
||||
[PreserveSig]
|
||||
uint GetName(
|
||||
[In] DocumentNameType type,
|
||||
[Out] [MarshalAs(UnmanagedType.BStr)] out string name
|
||||
);
|
||||
|
|
|
@ -339,7 +339,7 @@ namespace Microsoft.ClearScript.Windows
|
|||
if (trimmedCommand.StartsWith("eval ", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
var expression = MiscHelpers.FormatInvariant("EngineInternal.getCommandResult({0})", trimmedCommand.Substring(5));
|
||||
return GetCommandResultString(Evaluate("Expression", true, expression, false));
|
||||
return GetCommandResultString(Evaluate(new DocumentInfo("Expression") { Flags = DocumentFlags.IsTransient }, expression, false));
|
||||
}
|
||||
|
||||
Execute("Command", true, trimmedCommand);
|
||||
|
|
|
@ -18,17 +18,17 @@ namespace Microsoft.ClearScript.Windows
|
|||
{
|
||||
private readonly WindowsScriptEngine engine;
|
||||
private readonly UIntPtr sourceContext;
|
||||
private readonly string name;
|
||||
private readonly DocumentInfo documentInfo;
|
||||
private readonly string code;
|
||||
|
||||
private string[] codeLines;
|
||||
private IDebugApplicationNode node;
|
||||
|
||||
public DebugDocument(WindowsScriptEngine engine, UIntPtr sourceContext, string name, string code, bool transient)
|
||||
public DebugDocument(WindowsScriptEngine engine, UIntPtr sourceContext, DocumentInfo documentInfo, string code)
|
||||
{
|
||||
this.engine = engine;
|
||||
this.sourceContext = sourceContext;
|
||||
this.name = name + (transient ? " [temp]" : "");
|
||||
this.documentInfo = documentInfo;
|
||||
this.code = code;
|
||||
Initialize();
|
||||
}
|
||||
|
@ -57,21 +57,62 @@ namespace Microsoft.ClearScript.Windows
|
|||
node = null;
|
||||
}
|
||||
|
||||
private string GetFileName()
|
||||
{
|
||||
return Path.HasExtension(documentInfo.Name) ? documentInfo.Name : Path.ChangeExtension(documentInfo.Name, engine.FileNameExtension);
|
||||
}
|
||||
|
||||
private string GetUrl()
|
||||
{
|
||||
if (documentInfo.Uri != null)
|
||||
{
|
||||
return documentInfo.Uri.IsAbsoluteUri ? documentInfo.Uri.AbsoluteUri : documentInfo.Uri.ToString();
|
||||
}
|
||||
|
||||
return MiscHelpers.FormatInvariant("{0}/{1}", engine.Name, GetFileName());
|
||||
}
|
||||
|
||||
private bool TryGetSourceMapUrl(out string sourceMapUrl)
|
||||
{
|
||||
if (documentInfo.SourceMapUri != null)
|
||||
{
|
||||
sourceMapUrl = documentInfo.SourceMapUri.IsAbsoluteUri ? documentInfo.SourceMapUri.AbsoluteUri : documentInfo.SourceMapUri.ToString();
|
||||
return true;
|
||||
}
|
||||
|
||||
sourceMapUrl = null;
|
||||
return false;
|
||||
}
|
||||
|
||||
#region IDebugDocumentInfo implementation
|
||||
|
||||
public void GetName(DocumentNameType type, out string documentName)
|
||||
public uint GetName(DocumentNameType type, out string documentName)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case DocumentNameType.URL:
|
||||
var fullName = Path.HasExtension(name) ? name : Path.ChangeExtension(name, engine.FileNameExtension);
|
||||
documentName = MiscHelpers.FormatInvariant("{0}/{1}", engine.Name, fullName);
|
||||
break;
|
||||
case DocumentNameType.AppNode:
|
||||
case DocumentNameType.Title:
|
||||
documentName = documentInfo.Name;
|
||||
return RawCOMHelpers.HResult.S_OK;
|
||||
|
||||
default:
|
||||
documentName = name;
|
||||
break;
|
||||
case DocumentNameType.FileTail:
|
||||
documentName = GetFileName();
|
||||
return RawCOMHelpers.HResult.S_OK;
|
||||
|
||||
case DocumentNameType.URL:
|
||||
documentName = GetUrl();
|
||||
return RawCOMHelpers.HResult.S_OK;
|
||||
|
||||
case DocumentNameType.UniqueTitle:
|
||||
documentName = documentInfo.UniqueName;
|
||||
return RawCOMHelpers.HResult.S_OK;
|
||||
|
||||
case DocumentNameType.SourceMapURL:
|
||||
return TryGetSourceMapUrl(out documentName) ? RawCOMHelpers.HResult.S_OK : RawCOMHelpers.HResult.E_FAIL.ToUnsigned();
|
||||
}
|
||||
|
||||
documentName = null;
|
||||
return RawCOMHelpers.HResult.E_FAIL.ToUnsigned();
|
||||
}
|
||||
|
||||
public void GetDocumentClassId(out Guid clsid)
|
||||
|
|
|
@ -99,7 +99,7 @@ namespace Microsoft.ClearScript.Windows
|
|||
if (engine.debugDocumentMap.TryGetValue(new UIntPtr(sourceContext), out document))
|
||||
{
|
||||
string documentName;
|
||||
document.GetName(DocumentNameType.Title, out documentName);
|
||||
document.GetName(DocumentNameType.UniqueTitle, out documentName);
|
||||
|
||||
int position;
|
||||
if (lineNumber > 0)
|
||||
|
|
|
@ -149,12 +149,12 @@ namespace Microsoft.ClearScript.Windows
|
|||
return scriptDispatch;
|
||||
}
|
||||
|
||||
private void Parse(string documentName, string code, ScriptTextFlags flags, IntPtr pVarResult, out EXCEPINFO excepInfo, bool discard)
|
||||
private void Parse(DocumentInfo documentInfo, string code, ScriptTextFlags flags, IntPtr pVarResult, out EXCEPINFO excepInfo)
|
||||
{
|
||||
var formattedCode = FormatCode ? MiscHelpers.FormatCode(code) : code;
|
||||
|
||||
DebugDocument debugDocument;
|
||||
var sourceContext = CreateDebugDocument(documentName, formattedCode, discard, out debugDocument);
|
||||
var sourceContext = CreateDebugDocument(documentInfo, formattedCode, out debugDocument);
|
||||
if (sourceContext != UIntPtr.Zero)
|
||||
{
|
||||
flags |= ScriptTextFlags.HostManagesSource;
|
||||
|
@ -166,7 +166,7 @@ namespace Microsoft.ClearScript.Windows
|
|||
}
|
||||
finally
|
||||
{
|
||||
if (discard && (sourceContext != UIntPtr.Zero))
|
||||
if (documentInfo.Flags.GetValueOrDefault().HasFlag(DocumentFlags.IsTransient) && (sourceContext != UIntPtr.Zero))
|
||||
{
|
||||
debugDocumentMap.Remove(sourceContext);
|
||||
debugDocument.Close();
|
||||
|
@ -174,7 +174,7 @@ namespace Microsoft.ClearScript.Windows
|
|||
}
|
||||
}
|
||||
|
||||
private UIntPtr CreateDebugDocument(string name, string code, bool transient, out DebugDocument document)
|
||||
private UIntPtr CreateDebugDocument(DocumentInfo documentInfo, string code, out DebugDocument document)
|
||||
{
|
||||
UIntPtr sourceContext;
|
||||
if (!sourceManagement)
|
||||
|
@ -185,8 +185,9 @@ namespace Microsoft.ClearScript.Windows
|
|||
else
|
||||
{
|
||||
sourceContext = new UIntPtr(nextSourceContext++);
|
||||
var uniqueName = debugDocumentNameManager.GetUniqueName(name, "Script Document");
|
||||
document = new DebugDocument(this, sourceContext, uniqueName, code, transient);
|
||||
documentInfo.UniqueName = debugDocumentNameManager.GetUniqueName(documentInfo.Name, DocumentInfo.DefaultName);
|
||||
documentInfo.UniqueName += documentInfo.Flags.GetValueOrDefault().HasFlag(DocumentFlags.IsTransient) ? " [temp]" : "";
|
||||
document = new DebugDocument(this, sourceContext, documentInfo, code);
|
||||
debugDocumentMap[sourceContext] = document;
|
||||
}
|
||||
|
||||
|
@ -232,7 +233,7 @@ namespace Microsoft.ClearScript.Windows
|
|||
var documentText = (IDebugDocumentText)document;
|
||||
|
||||
string documentName;
|
||||
document.GetName(DocumentNameType.Title, out documentName);
|
||||
document.GetName(DocumentNameType.UniqueTitle, out documentName);
|
||||
|
||||
uint position;
|
||||
uint length;
|
||||
|
@ -593,7 +594,7 @@ namespace Microsoft.ClearScript.Windows
|
|||
return WindowsScriptItem.Wrap(this, obj);
|
||||
}
|
||||
|
||||
internal override object Execute(string documentName, string code, bool evaluate, bool discard)
|
||||
internal override object Execute(DocumentInfo documentInfo, string code, bool evaluate)
|
||||
{
|
||||
VerifyNotDisposed();
|
||||
|
||||
|
@ -603,14 +604,14 @@ namespace Microsoft.ClearScript.Windows
|
|||
if (!evaluate)
|
||||
{
|
||||
const ScriptTextFlags flags = ScriptTextFlags.IsVisible;
|
||||
Parse(documentName, code, flags, IntPtr.Zero, out excepInfo, discard);
|
||||
Parse(documentInfo, code, flags, IntPtr.Zero, out excepInfo);
|
||||
return null;
|
||||
}
|
||||
|
||||
using (var resultVariantBlock = new CoTaskMemVariantBlock())
|
||||
{
|
||||
const ScriptTextFlags flags = ScriptTextFlags.IsExpression;
|
||||
Parse(documentName, code, flags, resultVariantBlock.Addr, out excepInfo, discard);
|
||||
Parse(documentInfo, code, flags, resultVariantBlock.Addr, out excepInfo);
|
||||
return Marshal.GetObjectForNativeVariant(resultVariantBlock.Addr);
|
||||
}
|
||||
});
|
||||
|
@ -790,7 +791,7 @@ namespace Microsoft.ClearScript.Windows
|
|||
return debugDocumentMap.Values.Select(debugDocument =>
|
||||
{
|
||||
string name;
|
||||
debugDocument.GetName(DocumentNameType.Title, out name);
|
||||
debugDocument.GetName(DocumentNameType.UniqueTitle, out name);
|
||||
return name;
|
||||
});
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@ namespace Microsoft.ClearScript.Windows
|
|||
/// converted to script arrays and marshaled as variants of type <c>VT_ARRAY</c>. In
|
||||
/// VBScript these objects are the native array type. JScript code can use the
|
||||
/// <see href="http://msdn.microsoft.com/en-us/library/y39d47w8(v=vs.84).aspx">VBArray</see>
|
||||
/// object to to access them.
|
||||
/// object to access them.
|
||||
/// </summary>
|
||||
MarshalArraysByValue = 0x00000040,
|
||||
|
||||
|
|
|
@ -202,7 +202,7 @@ namespace Microsoft.ClearScript.Windows
|
|||
return new ScriptMethod(this, name);
|
||||
}
|
||||
|
||||
return Nonexistent.Value;
|
||||
return Undefined.Value;
|
||||
}
|
||||
}), false);
|
||||
|
||||
|
|
Двоичные данные
ClearScript/doc/Build.docx
Двоичные данные
ClearScript/doc/Build.docx
Двоичный файл не отображается.
Двоичные данные
ClearScript/doc/Reference.chm
Двоичные данные
ClearScript/doc/Reference.chm
Двоичный файл не отображается.
|
@ -29,7 +29,7 @@
|
|||
<ErrorReport>prompt</ErrorReport>
|
||||
<DebugType>full</DebugType>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<Prefer32Bit>true</Prefer32Bit>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<LangVersion>5</LangVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
|
||||
|
@ -42,7 +42,7 @@
|
|||
<DebugType>pdbonly</DebugType>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<Prefer32Bit>true</Prefer32Bit>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<LangVersion>5</LangVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
|
|
|
@ -11,5 +11,5 @@ using System.Runtime.InteropServices;
|
|||
[assembly: AssemblyCopyright("(c) Microsoft Corporation")]
|
||||
|
||||
[assembly: ComVisible(false)]
|
||||
[assembly: AssemblyVersion("5.5.2.0")]
|
||||
[assembly: AssemblyFileVersion("5.5.2.0")]
|
||||
[assembly: AssemblyVersion("5.5.3.0")]
|
||||
[assembly: AssemblyFileVersion("5.5.3.0")]
|
||||
|
|
|
@ -34,7 +34,7 @@ namespace Microsoft.ClearScript.Test
|
|||
var filePath = Path.Combine(Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName), fileName);
|
||||
if (File.Exists(filePath))
|
||||
{
|
||||
engine.Execute(fileName, File.ReadAllText(filePath));
|
||||
engine.Execute(new DocumentInfo(new Uri(filePath)), File.ReadAllText(filePath));
|
||||
}
|
||||
|
||||
// ReSharper restore AssignNullToNotNullAttribute
|
||||
|
|
|
@ -11,5 +11,5 @@ using System.Runtime.InteropServices;
|
|||
[assembly: AssemblyCopyright("(c) Microsoft Corporation")]
|
||||
|
||||
[assembly: ComVisible(false)]
|
||||
[assembly: AssemblyVersion("5.5.2.0")]
|
||||
[assembly: AssemblyFileVersion("5.5.2.0")]
|
||||
[assembly: AssemblyVersion("5.5.3.0")]
|
||||
[assembly: AssemblyFileVersion("5.5.3.0")]
|
||||
|
|
|
@ -17,6 +17,7 @@ using Microsoft.ClearScript.Util;
|
|||
using Microsoft.ClearScript.Windows;
|
||||
using Microsoft.CSharp.RuntimeBinder;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using Newtonsoft.Json;
|
||||
using UIAutomationClient;
|
||||
|
||||
namespace Microsoft.ClearScript.Test
|
||||
|
@ -294,11 +295,16 @@ namespace Microsoft.ClearScript.Test
|
|||
{
|
||||
// ReSharper disable RedundantAssignment
|
||||
|
||||
WeakReference wr = null;
|
||||
|
||||
new Action(() =>
|
||||
{
|
||||
var x = new object();
|
||||
var wr = new WeakReference(x);
|
||||
wr = new WeakReference(x);
|
||||
|
||||
VariantClearTestHelper(x);
|
||||
x = null;
|
||||
})();
|
||||
|
||||
GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
|
||||
GC.WaitForPendingFinalizers();
|
||||
|
@ -658,23 +664,29 @@ namespace Microsoft.ClearScript.Test
|
|||
[TestMethod, TestCategory("BugFix")]
|
||||
public void BugFix_V8CachedObjectLeak()
|
||||
{
|
||||
object x = null;
|
||||
WeakReference wr = null;
|
||||
|
||||
new Action(() =>
|
||||
{
|
||||
// ReSharper disable RedundantAssignment
|
||||
|
||||
object x = null;
|
||||
|
||||
using (var tempEngine = new V8ScriptEngine())
|
||||
{
|
||||
tempEngine.AddHostType("Action", typeof(Action));
|
||||
x = tempEngine.Evaluate("action = new Action(function () {})");
|
||||
wr = new WeakReference(tempEngine);
|
||||
}
|
||||
})();
|
||||
|
||||
Assert.IsInstanceOfType(x, typeof(Action));
|
||||
TestUtil.AssertException<ObjectDisposedException>((Action)x);
|
||||
|
||||
x = null;
|
||||
|
||||
// ReSharper restore RedundantAssignment
|
||||
})();
|
||||
|
||||
GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
|
||||
GC.WaitForPendingFinalizers();
|
||||
Assert.IsFalse(wr.IsAlive);
|
||||
|
@ -1120,6 +1132,7 @@ namespace Microsoft.ClearScript.Test
|
|||
{
|
||||
const int maxNewSpaceSize = 16;
|
||||
const int maxOldSpaceSize = 512;
|
||||
const double tolerance = .05;
|
||||
|
||||
var constraints = new V8RuntimeConstraints
|
||||
{
|
||||
|
@ -1130,7 +1143,10 @@ namespace Microsoft.ClearScript.Test
|
|||
using (var tempEngine = new V8ScriptEngine(constraints))
|
||||
{
|
||||
Assert.AreEqual(Math.PI, tempEngine.Evaluate("Math.PI"));
|
||||
Assert.AreEqual(Convert.ToUInt64(maxNewSpaceSize * 2 + maxOldSpaceSize), tempEngine.GetRuntimeHeapInfo().HeapSizeLimit / (1024 * 1024));
|
||||
var expected = Convert.ToDouble(maxNewSpaceSize * 2 + maxOldSpaceSize);
|
||||
var actual = Convert.ToDouble(tempEngine.GetRuntimeHeapInfo().HeapSizeLimit / (1024 * 1024));
|
||||
var ratio = actual / expected;
|
||||
Assert.IsTrue((ratio >= 1 - tolerance) && (ratio <= 1 + tolerance));
|
||||
}
|
||||
|
||||
constraints = new V8RuntimeConstraints
|
||||
|
@ -1142,7 +1158,10 @@ namespace Microsoft.ClearScript.Test
|
|||
using (var tempEngine = new V8ScriptEngine(constraints))
|
||||
{
|
||||
Assert.AreEqual(Math.E, tempEngine.Evaluate("Math.E"));
|
||||
Assert.AreEqual(Convert.ToUInt64(maxNewSpaceSize * 2 + maxOldSpaceSize), tempEngine.GetRuntimeHeapInfo().HeapSizeLimit / (1024 * 1024));
|
||||
var expected = Convert.ToDouble(maxNewSpaceSize * 2 + maxOldSpaceSize);
|
||||
var actual = Convert.ToDouble(tempEngine.GetRuntimeHeapInfo().HeapSizeLimit / (1024 * 1024));
|
||||
var ratio = actual / expected;
|
||||
Assert.IsTrue((ratio >= 1 - tolerance) && (ratio <= 1 + tolerance));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1735,7 +1754,7 @@ namespace Microsoft.ClearScript.Test
|
|||
public void BugFix_ScriptObjectInHostVariable()
|
||||
{
|
||||
engine.Script.host = new HostFunctions();
|
||||
Assert.IsTrue(engine.Evaluate(null, true, "host.newVar({})", false).ToString().StartsWith("[HostVariable:", StringComparison.Ordinal));
|
||||
Assert.IsTrue(engine.Evaluate(new DocumentInfo("Expresion") { Flags = DocumentFlags.IsTransient }, "host.newVar({})", false).ToString().StartsWith("[HostVariable:", StringComparison.Ordinal));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("BugFix")]
|
||||
|
@ -2219,7 +2238,7 @@ namespace Microsoft.ClearScript.Test
|
|||
{
|
||||
var value = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;
|
||||
var scriptValue = Convert.ToDouble(engine.Evaluate("Date.now()"));
|
||||
Assert.IsTrue(Math.Abs(scriptValue - value) < 5.0);
|
||||
Assert.IsTrue(Math.Abs(scriptValue - value) < 25.0);
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("BugFix")]
|
||||
|
@ -2293,6 +2312,51 @@ namespace Microsoft.ClearScript.Test
|
|||
");
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("BugFix")]
|
||||
public void BugFix_NonexistentPropertyAccess_VB()
|
||||
{
|
||||
TestUtil.InvokeVBTestSub(@"
|
||||
Using engine As New V8ScriptEngine
|
||||
engine.Script.dump = Sub(obj As Object, message As Object, stack As Object)
|
||||
Assert.AreEqual(message, obj.message)
|
||||
Assert.AreEqual(stack, obj.stack)
|
||||
End Sub
|
||||
engine.Execute(
|
||||
""message = 'hello';"" & _
|
||||
""stack = 'world';"" & _
|
||||
""dump({ message: message, stack: stack }, message, stack);"" & _
|
||||
""dump({ message: message }, message, undefined);""
|
||||
)
|
||||
End Using
|
||||
");
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("BugFix")]
|
||||
public void BugFix_NonexistentPropertyAccess_JScript_VB()
|
||||
{
|
||||
TestUtil.InvokeVBTestSub(@"
|
||||
Using engine As New JScriptEngine
|
||||
engine.Script.dump = Sub(obj As Object, message As Object, stack As Object)
|
||||
Assert.AreEqual(message, obj.message)
|
||||
Assert.AreEqual(stack, obj.stack)
|
||||
End Sub
|
||||
engine.Execute(
|
||||
""message = 'hello';"" & _
|
||||
""stack = 'world';"" & _
|
||||
""dump({ message: message, stack: stack }, message, stack);"" & _
|
||||
""dump({ message: message }, message, undefined);""
|
||||
)
|
||||
End Using
|
||||
");
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("BugFix")]
|
||||
public void BugFix_JsonDotNetSerialization()
|
||||
{
|
||||
var obj = engine.Evaluate("({foo:123,bar:'baz'})");
|
||||
Assert.AreEqual("{\"foo\":123,\"bar\":\"baz\"}", JsonConvert.SerializeObject(obj));
|
||||
}
|
||||
|
||||
// ReSharper restore InconsistentNaming
|
||||
|
||||
#endregion
|
||||
|
|
|
@ -45,6 +45,9 @@
|
|||
<ItemGroup>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
|
||||
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
|
@ -82,6 +85,7 @@
|
|||
<Compile Include="JScriptEngineTest.cs" />
|
||||
<Compile Include="ScriptAccessTest.cs" />
|
||||
<Compile Include="Misc.cs" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\AssemblyInfo.tt">
|
||||
<Generator>TextTemplatingFileGenerator</Generator>
|
||||
<LastGenOutput>AssemblyInfo.cs</LastGenOutput>
|
||||
|
|
|
@ -47,7 +47,7 @@ namespace Microsoft.ClearScript.Test
|
|||
|
||||
public override bool TryInvoke(InvokeBinder binder, object[] args, out object result)
|
||||
{
|
||||
if (!DisableInvocation && args.Length > 0)
|
||||
if (!DisableInvocation && (args.Length > 0))
|
||||
{
|
||||
result = string.Join(",", args);
|
||||
return true;
|
||||
|
|
|
@ -245,6 +245,48 @@ namespace Microsoft.ClearScript.Test
|
|||
Assert.IsTrue(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("JScriptEngine")]
|
||||
public void JScriptEngine_Evaluate_DocumentInfo_WithDocumentName()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Evaluate(new DocumentInfo(documentName), "Math.E * Math.PI"));
|
||||
Assert.IsFalse(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("JScriptEngine")]
|
||||
public void JScriptEngine_Evaluate_DocumentInfo_WithDocumentUri()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
var documentUri = new Uri(@"c:\foo\bar\baz\" + documentName);
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Evaluate(new DocumentInfo(documentUri) { Flags = DocumentFlags.None }, "Math.E * Math.PI"));
|
||||
Assert.IsTrue(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("JScriptEngine")]
|
||||
public void JScriptEngine_Evaluate_DocumentInfo_WithDocumentUri_Relative()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
var documentUri = new Uri(documentName, UriKind.Relative);
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Evaluate(new DocumentInfo(documentUri) { Flags = DocumentFlags.None }, "Math.E * Math.PI"));
|
||||
Assert.IsTrue(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("JScriptEngine")]
|
||||
public void JScriptEngine_Evaluate_DocumentInfo_DiscardDocument()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Evaluate(new DocumentInfo(documentName) { Flags = DocumentFlags.IsTransient }, "Math.E * Math.PI"));
|
||||
Assert.IsFalse(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("JScriptEngine")]
|
||||
public void JScriptEngine_Evaluate_DocumentInfo_RetainDocument()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Evaluate(new DocumentInfo(documentName) { Flags = DocumentFlags.None }, "Math.E * Math.PI"));
|
||||
Assert.IsTrue(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("JScriptEngine")]
|
||||
public void JScriptEngine_Execute()
|
||||
{
|
||||
|
@ -279,6 +321,53 @@ namespace Microsoft.ClearScript.Test
|
|||
Assert.IsTrue(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("JScriptEngine")]
|
||||
public void JScriptEngine_Execute_DocumentInfo_WithDocumentName()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
engine.Execute(new DocumentInfo(documentName), "epi = Math.E * Math.PI");
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Script.epi);
|
||||
Assert.IsTrue(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("JScriptEngine")]
|
||||
public void JScriptEngine_Execute_DocumentInfo_WithDocumentUri()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
var documentUri = new Uri(@"c:\foo\bar\baz\" + documentName);
|
||||
engine.Execute(new DocumentInfo(documentUri), "epi = Math.E * Math.PI");
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Script.epi);
|
||||
Assert.IsTrue(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("JScriptEngine")]
|
||||
public void JScriptEngine_Execute_DocumentInfo_WithDocumentUri_Relative()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
var documentUri = new Uri(documentName, UriKind.Relative);
|
||||
engine.Execute(new DocumentInfo(documentUri), "epi = Math.E * Math.PI");
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Script.epi);
|
||||
Assert.IsTrue(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("JScriptEngine")]
|
||||
public void JScriptEngine_Execute_DocumentInfo_DiscardDocument()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
engine.Execute(new DocumentInfo(documentName) { Flags = DocumentFlags.IsTransient }, "epi = Math.E * Math.PI");
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Script.epi);
|
||||
Assert.IsFalse(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("JScriptEngine")]
|
||||
public void JScriptEngine_Execute_DocumentInfo_RetainDocument()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
engine.Execute(new DocumentInfo(documentName) { Flags = DocumentFlags.None }, "epi = Math.E * Math.PI");
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Script.epi);
|
||||
Assert.IsTrue(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("JScriptEngine")]
|
||||
public void JScriptEngine_ExecuteCommand_EngineConvert()
|
||||
{
|
||||
|
@ -934,6 +1023,14 @@ namespace Microsoft.ClearScript.Test
|
|||
Assert.AreEqual("bar+baz+qux", engine.Evaluate("host.toStaticType(testObject).SomeMethod('foo', 'bar', 'baz', 'qux')"));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("JScriptEngine")]
|
||||
public void JScriptEngine_DynamicHostObject_StaticType_Invoke()
|
||||
{
|
||||
engine.Script.testObject = new DynamicTestObject();
|
||||
engine.Script.host = new HostFunctions();
|
||||
TestUtil.AssertException<NotSupportedException>(() => engine.Evaluate("host.toStaticType(testObject)('foo', 'bar', 'baz', 'qux')"));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("JScriptEngine")]
|
||||
public void JScriptEngine_DynamicHostObject_Property()
|
||||
{
|
||||
|
@ -2121,6 +2218,41 @@ namespace Microsoft.ClearScript.Test
|
|||
Assert.AreSame(engine, obj.Engine);
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("JScriptEngine")]
|
||||
public void JScriptEngine_ArrayInvocability()
|
||||
{
|
||||
engine.Script.foo = Enumerable.Range(123, 5).ToArray();
|
||||
Assert.AreEqual(124, engine.Evaluate("foo(1)"));
|
||||
Assert.AreEqual(456, engine.Evaluate("foo(1) = 456"));
|
||||
|
||||
engine.Script.foo = new IConvertible[] { "bar" };
|
||||
Assert.AreEqual("bar", engine.Evaluate("foo(0)"));
|
||||
Assert.AreEqual("baz", engine.Evaluate("foo(0) = 'baz'"));
|
||||
|
||||
engine.Script.bar = new List<string>();
|
||||
TestUtil.AssertException<RuntimeBinderException>(() => engine.Execute("bar.Add(foo(0))"));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("JScriptEngine")]
|
||||
public void JScriptEngine_PropertyBagInvocability()
|
||||
{
|
||||
engine.Script.lib = new HostTypeCollection("mscorlib", "System", "System.Core");
|
||||
Assert.IsInstanceOfType(engine.Evaluate("lib('System')"), typeof(PropertyBag));
|
||||
Assert.IsInstanceOfType(engine.Evaluate("lib.System('Collections')"), typeof(PropertyBag));
|
||||
Assert.IsInstanceOfType(engine.Evaluate("lib('Bogus')"), typeof(Undefined));
|
||||
Assert.IsInstanceOfType(engine.Evaluate("lib.System('Heinous')"), typeof(Undefined));
|
||||
TestUtil.AssertException<UnauthorizedAccessException>(() => engine.Execute("lib('Bogus') = 123"));
|
||||
TestUtil.AssertException<UnauthorizedAccessException>(() => engine.Execute("lib.System('Heinous') = 456"));
|
||||
|
||||
engine.Script.foo = new PropertyBag { { "Null", null } };
|
||||
Assert.IsNull(engine.Evaluate("foo.Null"));
|
||||
TestUtil.AssertException<InvalidOperationException>(() => engine.Evaluate("foo.Null(123)"));
|
||||
engine.Execute("foo(null) = 123");
|
||||
Assert.AreEqual(123, Convert.ToInt32(engine.Evaluate("foo(null)")));
|
||||
engine.Execute("foo(undefined) = 456");
|
||||
Assert.AreEqual(456, Convert.ToInt32(engine.Evaluate("foo(undefined)")));
|
||||
}
|
||||
|
||||
// ReSharper restore InconsistentNaming
|
||||
|
||||
#endregion
|
||||
|
|
|
@ -11,5 +11,5 @@ using System.Runtime.InteropServices;
|
|||
[assembly: AssemblyCopyright("(c) Microsoft Corporation")]
|
||||
|
||||
[assembly: ComVisible(false)]
|
||||
[assembly: AssemblyVersion("5.5.2.0")]
|
||||
[assembly: AssemblyFileVersion("5.5.2.0")]
|
||||
[assembly: AssemblyVersion("5.5.3.0")]
|
||||
[assembly: AssemblyFileVersion("5.5.3.0")]
|
||||
|
|
|
@ -267,6 +267,53 @@ namespace Microsoft.ClearScript.Test
|
|||
Assert.IsTrue(engine.GetDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_Evaluate_DocumentInfo_WithDocumentName()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
engine.EnableDocumentNameTracking();
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Evaluate(new DocumentInfo(documentName), "Math.E * Math.PI"));
|
||||
Assert.IsFalse(engine.GetDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_Evaluate_DocumentInfo_WithDocumentUri()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
var documentUri = new Uri(@"c:\foo\bar\baz\" + documentName);
|
||||
engine.EnableDocumentNameTracking();
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Evaluate(new DocumentInfo(documentUri) { Flags = DocumentFlags.None }, "Math.E * Math.PI"));
|
||||
Assert.IsTrue(engine.GetDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_Evaluate_DocumentInfo_WithDocumentUri_Relative()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
var documentUri = new Uri(documentName, UriKind.Relative);
|
||||
engine.EnableDocumentNameTracking();
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Evaluate(new DocumentInfo(documentUri) { Flags = DocumentFlags.None }, "Math.E * Math.PI"));
|
||||
Assert.IsTrue(engine.GetDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_Evaluate_DocumentInfo_DiscardDocument()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
engine.EnableDocumentNameTracking();
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Evaluate(new DocumentInfo(documentName) { Flags = DocumentFlags.IsTransient }, "Math.E * Math.PI"));
|
||||
Assert.IsFalse(engine.GetDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_Evaluate_DocumentInfo_RetainDocument()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
engine.EnableDocumentNameTracking();
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Evaluate(new DocumentInfo(documentName) { Flags = DocumentFlags.None }, "Math.E * Math.PI"));
|
||||
Assert.IsTrue(engine.GetDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_Execute()
|
||||
{
|
||||
|
@ -304,6 +351,58 @@ namespace Microsoft.ClearScript.Test
|
|||
Assert.IsTrue(engine.GetDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_Execute_DocumentInfo_WithDocumentName()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
engine.EnableDocumentNameTracking();
|
||||
engine.Execute(new DocumentInfo(documentName), "epi = Math.E * Math.PI");
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Script.epi);
|
||||
Assert.IsTrue(engine.GetDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_Execute_DocumentInfo_WithDocumentUri()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
var documentUri = new Uri(@"c:\foo\bar\baz\" + documentName);
|
||||
engine.EnableDocumentNameTracking();
|
||||
engine.Execute(new DocumentInfo(documentUri), "epi = Math.E * Math.PI");
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Script.epi);
|
||||
Assert.IsTrue(engine.GetDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_Execute_DocumentInfo_WithDocumentUri_Relative()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
var documentUri = new Uri(documentName, UriKind.Relative);
|
||||
engine.EnableDocumentNameTracking();
|
||||
engine.Execute(new DocumentInfo(documentUri), "epi = Math.E * Math.PI");
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Script.epi);
|
||||
Assert.IsTrue(engine.GetDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_Execute_DocumentInfo_DiscardDocument()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
engine.EnableDocumentNameTracking();
|
||||
engine.Execute(new DocumentInfo(documentName) { Flags = DocumentFlags.IsTransient }, "epi = Math.E * Math.PI");
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Script.epi);
|
||||
Assert.IsFalse(engine.GetDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_Execute_DocumentInfo_RetainDocument()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
engine.EnableDocumentNameTracking();
|
||||
engine.Execute(new DocumentInfo(documentName) { Flags = DocumentFlags.None }, "epi = Math.E * Math.PI");
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Script.epi);
|
||||
Assert.IsTrue(engine.GetDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_Execute_CompiledScript()
|
||||
{
|
||||
|
@ -661,12 +760,17 @@ namespace Microsoft.ClearScript.Test
|
|||
{
|
||||
// ReSharper disable RedundantAssignment
|
||||
|
||||
WeakReference wr = null;
|
||||
|
||||
new Action(() =>
|
||||
{
|
||||
var x = new object();
|
||||
var wr = new WeakReference(x);
|
||||
wr = new WeakReference(x);
|
||||
engine.Script.x = x;
|
||||
|
||||
x = null;
|
||||
engine.Script.x = null;
|
||||
})();
|
||||
|
||||
GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
|
||||
GC.WaitForPendingFinalizers();
|
||||
|
@ -892,6 +996,8 @@ namespace Microsoft.ClearScript.Test
|
|||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_General_ParserCache()
|
||||
{
|
||||
#pragma warning disable CS0618 // Type or member is obsolete (V8CacheKind.Parser)
|
||||
|
||||
engine.Dispose();
|
||||
engine = new V8ScriptEngine(); // default engine enables debugging, which disables caching
|
||||
|
||||
|
@ -904,7 +1010,7 @@ namespace Microsoft.ClearScript.Test
|
|||
}
|
||||
|
||||
Assert.IsNotNull(cacheBytes);
|
||||
Assert.IsTrue((cacheBytes.Length > 50) && (cacheBytes.Length < 2000)); // typical size is ~100
|
||||
Assert.IsTrue(cacheBytes.Length > 2000); // typical size is ~4K
|
||||
|
||||
bool cacheAccepted;
|
||||
using (var script = engine.Compile(generalScript, V8CacheKind.Parser, cacheBytes, out cacheAccepted))
|
||||
|
@ -928,11 +1034,15 @@ namespace Microsoft.ClearScript.Test
|
|||
Assert.AreEqual(MiscHelpers.FormatCode(generalScriptOutput), console.ToString().Replace("\r\n", "\n"));
|
||||
}
|
||||
}
|
||||
|
||||
#pragma warning restore CS0618 // Type or member is obsolete (V8CacheKind.Parser)
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_General_ParserCache_BadData()
|
||||
{
|
||||
#pragma warning disable CS0618 // Type or member is obsolete (V8CacheKind.Parser)
|
||||
|
||||
engine.Dispose();
|
||||
engine = new V8ScriptEngine(); // default engine enables debugging, which disables caching
|
||||
|
||||
|
@ -945,7 +1055,7 @@ namespace Microsoft.ClearScript.Test
|
|||
}
|
||||
|
||||
Assert.IsNotNull(cacheBytes);
|
||||
Assert.IsTrue((cacheBytes.Length > 50) && (cacheBytes.Length < 2000)); // typical size is ~100
|
||||
Assert.IsTrue(cacheBytes.Length > 2000); // typical size is ~4K
|
||||
|
||||
cacheBytes = cacheBytes.Take(cacheBytes.Length - 1).ToArray();
|
||||
|
||||
|
@ -971,11 +1081,15 @@ namespace Microsoft.ClearScript.Test
|
|||
Assert.AreEqual(MiscHelpers.FormatCode(generalScriptOutput), console.ToString().Replace("\r\n", "\n"));
|
||||
}
|
||||
}
|
||||
|
||||
#pragma warning restore CS0618 // Type or member is obsolete (V8CacheKind.Parser)
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_General_ParserCache_DebuggingEnabled()
|
||||
{
|
||||
#pragma warning disable CS0618 // Type or member is obsolete (V8CacheKind.Parser)
|
||||
|
||||
byte[] cacheBytes;
|
||||
using (var tempEngine = new V8ScriptEngine())
|
||||
{
|
||||
|
@ -985,7 +1099,7 @@ namespace Microsoft.ClearScript.Test
|
|||
}
|
||||
|
||||
Assert.IsNotNull(cacheBytes);
|
||||
Assert.IsTrue((cacheBytes.Length > 50) && (cacheBytes.Length < 2000)); // typical size is ~100
|
||||
Assert.IsTrue(cacheBytes.Length > 2000); // typical size is ~4K
|
||||
|
||||
bool cacheAccepted;
|
||||
using (var script = engine.Compile(generalScript, V8CacheKind.Parser, cacheBytes, out cacheAccepted))
|
||||
|
@ -1009,6 +1123,8 @@ namespace Microsoft.ClearScript.Test
|
|||
Assert.AreEqual(MiscHelpers.FormatCode(generalScriptOutput), console.ToString().Replace("\r\n", "\n"));
|
||||
}
|
||||
}
|
||||
|
||||
#pragma warning restore CS0618 // Type or member is obsolete (V8CacheKind.Parser)
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
|
@ -1608,6 +1724,14 @@ namespace Microsoft.ClearScript.Test
|
|||
Assert.AreEqual("bar+baz+qux", engine.Evaluate("host.toStaticType(testObject).SomeMethod('foo', 'bar', 'baz', 'qux')"));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_DynamicHostObject_StaticType_Invoke()
|
||||
{
|
||||
engine.Script.testObject = new DynamicTestObject();
|
||||
engine.Script.host = new HostFunctions();
|
||||
TestUtil.AssertException<ScriptEngineException>(() => engine.Evaluate("host.toStaticType(testObject)('foo', 'bar', 'baz', 'qux')"));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_DynamicHostObject_Property()
|
||||
{
|
||||
|
@ -1691,6 +1815,15 @@ namespace Microsoft.ClearScript.Test
|
|||
Assert.IsTrue((bool)engine.Evaluate("delete testObject['foo']"));
|
||||
Assert.IsInstanceOfType(engine.Evaluate("testObject['foo']"), typeof(Undefined));
|
||||
Assert.IsInstanceOfType(engine.Evaluate("host.getElement(testObject, 'foo')"), typeof(Undefined));
|
||||
|
||||
Assert.IsInstanceOfType(engine.Evaluate("testObject('foo', 'bar', 'baz')"), typeof(Undefined));
|
||||
Assert.IsInstanceOfType(engine.Evaluate("host.getElement(testObject, 'foo', 'bar', 'baz')"), typeof(Undefined));
|
||||
Assert.AreEqual("qux", engine.Evaluate("host.setElement(testObject, 'qux', 'foo', 'bar', 'baz')"));
|
||||
Assert.AreEqual("qux", engine.Evaluate("testObject('foo', 'bar', 'baz')"));
|
||||
Assert.AreEqual("qux", engine.Evaluate("host.getElement(testObject, 'foo', 'bar', 'baz')"));
|
||||
Assert.IsInstanceOfType(engine.Evaluate("host.setElement(testObject, undefined, 'foo', 'bar', 'baz')"), typeof(Undefined));
|
||||
Assert.IsInstanceOfType(engine.Evaluate("testObject('foo', 'bar', 'baz')"), typeof(Undefined));
|
||||
Assert.IsInstanceOfType(engine.Evaluate("host.getElement(testObject, 'foo', 'bar', 'baz')"), typeof(Undefined));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
|
@ -2708,6 +2841,71 @@ namespace Microsoft.ClearScript.Test
|
|||
Assert.IsTrue(Math.Abs(((DateTime)utcNowObj - utcEpoch).TotalMilliseconds - Convert.ToDouble(engine.Evaluate("now.valueOf()"))) <= 1.0);
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_typeof()
|
||||
{
|
||||
engine.Script.foo = new Random();
|
||||
Assert.AreEqual("object", engine.Evaluate("typeof foo"));
|
||||
Assert.AreEqual("function", engine.Evaluate("typeof foo.ToString"));
|
||||
|
||||
engine.Script.foo = Enumerable.Range(0, 5).ToArray();
|
||||
Assert.AreEqual("object", engine.Evaluate("typeof foo"));
|
||||
|
||||
engine.Script.foo = new ArrayList();
|
||||
Assert.AreEqual("object", engine.Evaluate("typeof foo"));
|
||||
|
||||
engine.Script.foo = new BitArray(100);
|
||||
Assert.AreEqual("object", engine.Evaluate("typeof foo"));
|
||||
|
||||
engine.Script.foo = new Hashtable();
|
||||
Assert.AreEqual("object", engine.Evaluate("typeof foo"));
|
||||
|
||||
engine.Script.foo = new Queue();
|
||||
Assert.AreEqual("object", engine.Evaluate("typeof foo"));
|
||||
|
||||
engine.Script.foo = new SortedList();
|
||||
Assert.AreEqual("object", engine.Evaluate("typeof foo"));
|
||||
|
||||
engine.Script.foo = new Stack();
|
||||
Assert.AreEqual("object", engine.Evaluate("typeof foo"));
|
||||
|
||||
engine.Script.foo = new List<string>();
|
||||
Assert.AreEqual("object", engine.Evaluate("typeof foo"));
|
||||
Assert.AreEqual("function", engine.Evaluate("typeof foo.Item"));
|
||||
|
||||
engine.Script.foo = new ExpandoObject();
|
||||
engine.Script.host = new HostFunctions();
|
||||
Assert.AreEqual("object", engine.Evaluate("typeof foo"));
|
||||
Assert.AreEqual("object", engine.Evaluate("typeof host.toStaticType(foo)"));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_ArrayInvocability()
|
||||
{
|
||||
engine.Script.foo = Enumerable.Range(123, 5).ToArray();
|
||||
Assert.AreEqual(124, engine.Evaluate("foo(1)"));
|
||||
|
||||
engine.Script.foo = new IConvertible[] { "bar" };
|
||||
Assert.AreEqual("bar", engine.Evaluate("foo(0)"));
|
||||
|
||||
engine.Script.bar = new List<string>();
|
||||
TestUtil.AssertException<RuntimeBinderException>(() => engine.Execute("bar.Add(foo(0))"));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("V8ScriptEngine")]
|
||||
public void V8ScriptEngine_PropertyBagInvocability()
|
||||
{
|
||||
engine.Script.lib = new HostTypeCollection("mscorlib", "System", "System.Core");
|
||||
Assert.IsInstanceOfType(engine.Evaluate("lib('System')"), typeof(PropertyBag));
|
||||
Assert.IsInstanceOfType(engine.Evaluate("lib.System('Collections')"), typeof(PropertyBag));
|
||||
Assert.IsInstanceOfType(engine.Evaluate("lib('Bogus')"), typeof(Undefined));
|
||||
Assert.IsInstanceOfType(engine.Evaluate("lib.System('Heinous')"), typeof(Undefined));
|
||||
|
||||
engine.Script.foo = new PropertyBag { { "Null", null } };
|
||||
Assert.IsNull(engine.Evaluate("foo.Null"));
|
||||
TestUtil.AssertException<InvalidOperationException>(() => engine.Evaluate("foo.Null(123)"));
|
||||
}
|
||||
|
||||
// ReSharper restore InconsistentNaming
|
||||
|
||||
#endregion
|
||||
|
|
|
@ -273,6 +273,48 @@ namespace Microsoft.ClearScript.Test
|
|||
Assert.IsTrue(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("VBScriptEngine")]
|
||||
public void VBScriptEngine_Evaluate_DocumentInfo_WithDocumentName()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Evaluate(new DocumentInfo(documentName), "e * pi"));
|
||||
Assert.IsFalse(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("VBScriptEngine")]
|
||||
public void VBScriptEngine_Evaluate_DocumentInfo_WithDocumentUri()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
var documentUri = new Uri(@"c:\foo\bar\baz\" + documentName);
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Evaluate(new DocumentInfo(documentUri) { Flags = DocumentFlags.None }, "e * pi"));
|
||||
Assert.IsTrue(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("VBScriptEngine")]
|
||||
public void VBScriptEngine_Evaluate_DocumentInfo_WithDocumentUri_Relative()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
var documentUri = new Uri(documentName, UriKind.Relative);
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Evaluate(new DocumentInfo(documentUri) { Flags = DocumentFlags.None }, "e * pi"));
|
||||
Assert.IsTrue(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("VBScriptEngine")]
|
||||
public void VBScriptEngine_Evaluate_DocumentInfo_DiscardDocument()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Evaluate(new DocumentInfo(documentName) { Flags = DocumentFlags.IsTransient }, "e * pi"));
|
||||
Assert.IsFalse(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("VBScriptEngine")]
|
||||
public void VBScriptEngine_Evaluate_DocumentInfo_RetainDocument()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Evaluate(new DocumentInfo(documentName) { Flags = DocumentFlags.None }, "e * pi"));
|
||||
Assert.IsTrue(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("VBScriptEngine")]
|
||||
public void VBScriptEngine_Execute()
|
||||
{
|
||||
|
@ -307,6 +349,53 @@ namespace Microsoft.ClearScript.Test
|
|||
Assert.IsTrue(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("VBScriptEngine")]
|
||||
public void VBScriptEngine_Execute_DocumentInfo_WithDocumentName()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
engine.Execute(new DocumentInfo(documentName), "epi = e * pi");
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Script.epi);
|
||||
Assert.IsTrue(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("VBScriptEngine")]
|
||||
public void VBScriptEngine_Execute_DocumentInfo_WithDocumentUri()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
var documentUri = new Uri(@"c:\foo\bar\baz\" + documentName);
|
||||
engine.Execute(new DocumentInfo(documentUri), "epi = e * pi");
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Script.epi);
|
||||
Assert.IsTrue(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("VBScriptEngine")]
|
||||
public void VBScriptEngine_Execute_DocumentInfo_WithDocumentUri_Relative()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
var documentUri = new Uri(documentName, UriKind.Relative);
|
||||
engine.Execute(new DocumentInfo(documentUri), "epi = e * pi");
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Script.epi);
|
||||
Assert.IsTrue(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("VBScriptEngine")]
|
||||
public void VBScriptEngine_Execute_DocumentInfo_DiscardDocument()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
engine.Execute(new DocumentInfo(documentName) { Flags = DocumentFlags.IsTransient }, "epi = e * pi");
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Script.epi);
|
||||
Assert.IsFalse(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("VBScriptEngine")]
|
||||
public void VBScriptEngine_Execute_DocumentInfo_RetainDocument()
|
||||
{
|
||||
const string documentName = "DoTheMath";
|
||||
engine.Execute(new DocumentInfo(documentName) { Flags = DocumentFlags.None }, "epi = e * pi");
|
||||
Assert.AreEqual(Math.E * Math.PI, engine.Script.epi);
|
||||
Assert.IsTrue(engine.GetDebugDocumentNames().Any(name => name.StartsWith(documentName, StringComparison.Ordinal)));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("VBScriptEngine")]
|
||||
public void VBScriptEngine_ExecuteCommand_EngineConvert()
|
||||
{
|
||||
|
@ -848,6 +937,14 @@ namespace Microsoft.ClearScript.Test
|
|||
Assert.AreEqual("bar+baz+qux", engine.Evaluate("host.toStaticType(testObject).SomeMethod(\"foo\", \"bar\", \"baz\", \"qux\")"));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("VBScriptEngine")]
|
||||
public void VBScriptEngine_DynamicHostObject_StaticType_Invoke()
|
||||
{
|
||||
engine.Script.testObject = new DynamicTestObject();
|
||||
engine.Script.host = new HostFunctions();
|
||||
TestUtil.AssertException<NotSupportedException>(() => engine.Evaluate("host.toStaticType(testObject)(\"foo\", \"bar\", \"baz\", \"qux\")"));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("VBScriptEngine")]
|
||||
public void VBScriptEngine_DynamicHostObject_Property()
|
||||
{
|
||||
|
@ -2289,6 +2386,43 @@ namespace Microsoft.ClearScript.Test
|
|||
Assert.AreSame(engine, obj.Engine);
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("VBScriptEngine")]
|
||||
public void VBScriptEngine_ArrayInvocability()
|
||||
{
|
||||
engine.Script.foo = Enumerable.Range(123, 5).ToArray();
|
||||
Assert.AreEqual(124, engine.Evaluate("foo(1)"));
|
||||
engine.Execute("foo(1) = 456");
|
||||
Assert.AreEqual(456, engine.Evaluate("foo(1)"));
|
||||
|
||||
engine.Script.foo = new IConvertible[] { "bar" };
|
||||
Assert.AreEqual("bar", engine.Evaluate("foo(0)"));
|
||||
engine.Execute("foo(0) = \"baz\"");
|
||||
Assert.AreEqual("baz", engine.Evaluate("foo(0)"));
|
||||
|
||||
engine.Script.bar = new List<string>();
|
||||
TestUtil.AssertException<RuntimeBinderException>(() => engine.Execute("bar.Add(foo(0))"));
|
||||
}
|
||||
|
||||
[TestMethod, TestCategory("VBScriptEngine")]
|
||||
public void VBScriptEngine_PropertyBagInvocability()
|
||||
{
|
||||
engine.Script.lib = new HostTypeCollection("mscorlib", "System", "System.Core");
|
||||
Assert.IsInstanceOfType(engine.Evaluate("lib(\"System\")"), typeof(PropertyBag));
|
||||
Assert.IsInstanceOfType(engine.Evaluate("lib.System(\"Collections\")"), typeof(PropertyBag));
|
||||
Assert.IsInstanceOfType(engine.Evaluate("lib(\"Bogus\")"), typeof(Undefined));
|
||||
Assert.IsInstanceOfType(engine.Evaluate("lib.System(\"Heinous\")"), typeof(Undefined));
|
||||
TestUtil.AssertException<UnauthorizedAccessException>(() => engine.Execute("lib(\"Bogus\") = 123"));
|
||||
TestUtil.AssertException<UnauthorizedAccessException>(() => engine.Execute("lib.System(\"Heinous\") = 456"));
|
||||
|
||||
engine.Script.foo = new PropertyBag { { "Null", null } };
|
||||
Assert.IsNull(engine.Evaluate("foo.Null"));
|
||||
TestUtil.AssertException<InvalidOperationException>(() => engine.Evaluate("foo.Null(123)"));
|
||||
engine.Execute("foo(null) = 123");
|
||||
Assert.AreEqual(123, Convert.ToInt32(engine.Evaluate("foo(null)")));
|
||||
engine.Execute("foo(empty) = 456");
|
||||
Assert.AreEqual(456, Convert.ToInt32(engine.Evaluate("foo(empty)")));
|
||||
}
|
||||
|
||||
// ReSharper restore InconsistentNaming
|
||||
|
||||
#endregion
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net45" />
|
||||
</packages>
|
|
@ -3,7 +3,7 @@ ClearScript is a library that makes it easy to add scripting to your .NET applic
|
|||
|
||||
# Features
|
||||
* Simple usage; create a script engine, add your objects and/or types, run scripts
|
||||
* Support for several script engines: [Google's V8](https://developers.google.com/v8/), [Microsoft's JScript](http://msdn.microsoft.com/en-us/library/hbxc2t98(v=vs.84).aspx) and [VBScript](http://msdn.microsoft.com/en-us/library/t0aew7h6(v=vs.84).aspx)
|
||||
* Support for several script engines: [Google's V8](https://developers.google.com/v8/), [Microsoft's JScript](https://msdn.microsoft.com/en-us/library/hbxc2t98.aspx) and [VBScript](http://msdn.microsoft.com/en-us/library/t0aew7h6.aspx)
|
||||
* Exposed resources require no modification, decoration, or special coding of any kind
|
||||
* Scripts get simple access to most of the features of exposed objects and types:
|
||||
* Methods, properties, fields, events
|
||||
|
|
177
V8Update.cmd
177
V8Update.cmd
|
@ -5,21 +5,14 @@ setlocal
|
|||
:: process arguments
|
||||
::-----------------------------------------------------------------------------
|
||||
|
||||
set v8testedrev=6.5.254.41
|
||||
|
||||
set gyprev=d61a9397e668fa9843c4aa7da9e79460fe590bfb
|
||||
set clangrev=27088876ff821e8a1518383576a43662a3255d56
|
||||
set traceeventcommonrev=0e9a47d74970bee1bbfc063c47215406f8918699
|
||||
set gtestrev=6f8a66431cb592dad629028a50b3dd418a408c87
|
||||
set gmockrev=0421b6f358139f02e102c9c332ce19a33faf75be
|
||||
set jinja2rev=d34383206fa42d52faa10bb9931d6d538f3a57e0
|
||||
set markupsaferev=8f45f5cfa0009d2a70589bcda0349b8cb2b72783
|
||||
set v8testedrev=6.8.275.28
|
||||
|
||||
:ProcessArgs
|
||||
|
||||
set download=true
|
||||
set mode=Release
|
||||
set isdebug=false
|
||||
set isofficial=true
|
||||
|
||||
:ProcessArg
|
||||
if "%1"=="" goto ProcessArgsDone
|
||||
|
@ -50,10 +43,12 @@ goto NextArg
|
|||
:SetDebugMode
|
||||
set mode=Debug
|
||||
set isdebug=true
|
||||
set isofficial=false
|
||||
goto NextArg
|
||||
:SetReleaseMode
|
||||
set mode=Release
|
||||
set isdebug=false
|
||||
set isofficial=true
|
||||
goto NextArg
|
||||
|
||||
:SetV8Rev
|
||||
|
@ -83,7 +78,6 @@ echo Error: This script requires a Visual Studio 2017 Developer Command Prompt.
|
|||
echo Browse to http://www.visualstudio.com for more information.
|
||||
goto Exit
|
||||
:UseMSVS2017
|
||||
set GYP_MSVS_VERSION=2017
|
||||
:CheckMSVSDone
|
||||
|
||||
::-----------------------------------------------------------------------------
|
||||
|
@ -96,6 +90,8 @@ echo Build mode: %mode%
|
|||
cd ClearScript\v8\v8
|
||||
if errorlevel 1 goto Exit
|
||||
|
||||
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
|
||||
|
||||
if /i "%download%"=="true" goto Download
|
||||
|
||||
if exist build\ goto SkipDownload
|
||||
|
@ -106,6 +102,7 @@ goto Download
|
|||
|
||||
:SkipDownload
|
||||
cd build
|
||||
path %cd%\DepotTools;%path%
|
||||
goto Build
|
||||
|
||||
::-----------------------------------------------------------------------------
|
||||
|
@ -148,98 +145,40 @@ if errorlevel 1 goto Error
|
|||
|
||||
cd build
|
||||
|
||||
:DownloadV8
|
||||
echo Downloading V8 ...
|
||||
git clone -n -q https://chromium.googlesource.com/v8/v8.git
|
||||
:DownloadDepotTools
|
||||
echo Downloading Depot Tools ...
|
||||
powershell -Command "(New-Object Net.WebClient).DownloadFile('https://storage.googleapis.com/chrome-infra/depot_tools.zip', 'DepotTools.zip')"
|
||||
if errorlevel 1 goto Error
|
||||
cd v8
|
||||
git checkout -q "%v8rev%"
|
||||
:DownloadDepotToolsDone
|
||||
|
||||
:ExpandDepotTools
|
||||
echo Expanding Depot Tools ...
|
||||
powershell -Command "Add-Type -AssemblyName System.IO.Compression.FileSystem; [IO.Compression.ZipFile]::ExtractToDirectory('DepotTools.zip', 'DepotTools')"
|
||||
if errorlevel 1 goto Error
|
||||
cd ..
|
||||
:DownloadV8Done
|
||||
:ExpandDepotToolsDone
|
||||
|
||||
path %cd%\DepotTools;%path%
|
||||
|
||||
:SyncClient
|
||||
echo Downloading V8 and dependencies ...
|
||||
call gclient config https://chromium.googlesource.com/v8/v8 >config.log
|
||||
if errorlevel 1 goto Error
|
||||
call gclient sync -r %v8rev% >sync.log
|
||||
if errorlevel 1 goto Error
|
||||
:SyncClientDone
|
||||
|
||||
cd v8
|
||||
|
||||
:PatchV8
|
||||
echo Patching V8 ...
|
||||
git config user.name ClearScript
|
||||
call git config user.name ClearScript
|
||||
if errorlevel 1 goto Error
|
||||
git config user.email "ClearScript@microsoft.com"
|
||||
call git config user.email "ClearScript@microsoft.com"
|
||||
if errorlevel 1 goto Error
|
||||
git apply --ignore-whitespace ..\..\V8Patch.txt 2>applyPatch.log
|
||||
call git apply --ignore-whitespace ..\..\V8Patch.txt 2>applyPatch.log
|
||||
if errorlevel 1 goto Error
|
||||
:PatchV8Done
|
||||
|
||||
:DownloadGYP
|
||||
echo Downloading GYP ...
|
||||
git clone -n -q https://chromium.googlesource.com/external/gyp.git tools/gyp
|
||||
if errorlevel 1 goto Error
|
||||
cd tools\gyp
|
||||
git checkout -q "%gyprev%"
|
||||
if errorlevel 1 goto Error
|
||||
cd ..\..
|
||||
:DownloadGYPDone
|
||||
|
||||
:DownloadClang
|
||||
echo Downloading Clang ...
|
||||
git clone -n -q https://chromium.googlesource.com/chromium/src/tools/clang.git tools/clang
|
||||
if errorlevel 1 goto Error
|
||||
cd tools\clang
|
||||
git checkout -q "%clangrev%"
|
||||
if errorlevel 1 goto Error
|
||||
cd ..\..
|
||||
:DownloadClangDone
|
||||
|
||||
:DownloadTraceEventCommon
|
||||
echo Downloading TraceEventCommon ...
|
||||
git clone -n -q https://chromium.googlesource.com/chromium/src/base/trace_event/common.git base/trace_event/common
|
||||
if errorlevel 1 goto Error
|
||||
cd base\trace_event\common
|
||||
git checkout -q "%traceeventcommonrev%"
|
||||
if errorlevel 1 goto Error
|
||||
cd ..\..\..
|
||||
:DownloadTraceEventCommonDone
|
||||
|
||||
:DownloadGTest
|
||||
echo Downloading GTest ...
|
||||
git clone -n -q https://chromium.googlesource.com/external/github.com/google/googletest.git testing/gtest
|
||||
if errorlevel 1 goto Error
|
||||
cd testing\gtest
|
||||
git checkout -q "%gtestrev%"
|
||||
if errorlevel 1 goto Error
|
||||
cd ..\..
|
||||
:DownloadGTestDone
|
||||
|
||||
:DownloadGMock
|
||||
echo Downloading GMock ...
|
||||
git clone -n -q https://chromium.googlesource.com/external/googlemock.git testing/gmock
|
||||
if errorlevel 1 goto Error
|
||||
cd testing\gmock
|
||||
git checkout -q "%gmockrev%"
|
||||
if errorlevel 1 goto Error
|
||||
cd ..\..
|
||||
:DownloadGMockDone
|
||||
|
||||
:DownloadJinja2
|
||||
echo Downloading Jinja2 ...
|
||||
git clone -n -q https://chromium.googlesource.com/chromium/src/third_party/markupsafe.git third_party/markupsafe
|
||||
if errorlevel 1 goto Error
|
||||
cd third_party\markupsafe
|
||||
git checkout -q "%markupsaferev%"
|
||||
if errorlevel 1 goto Error
|
||||
cd ..\..
|
||||
:DownloadJinja2Done
|
||||
|
||||
:DownloadMarkupSafe
|
||||
echo Downloading MarkupSafe ...
|
||||
git clone -n -q https://chromium.googlesource.com/chromium/src/third_party/jinja2.git third_party/jinja2
|
||||
if errorlevel 1 goto Error
|
||||
cd third_party\jinja2
|
||||
git checkout -q "%jinja2rev%"
|
||||
if errorlevel 1 goto Error
|
||||
cd ..\..
|
||||
:DownloadMarkupSafeDone
|
||||
|
||||
cd ..
|
||||
|
||||
:DownloadDone
|
||||
|
@ -250,46 +189,34 @@ cd ..
|
|||
|
||||
:Build
|
||||
|
||||
set GYP_CHROMIUM_NO_ACTION=0
|
||||
set DEPOT_TOOLS_WIN_TOOLCHAIN=0
|
||||
set GYP_GENERATORS=msvs
|
||||
|
||||
:CreatePatchFile
|
||||
echo Creating patch file ...
|
||||
cd v8
|
||||
git diff --ignore-space-change --ignore-space-at-eol >V8Patch.txt 2>createPatch.log
|
||||
call git diff --ignore-space-change --ignore-space-at-eol >V8Patch.txt 2>createPatch.log
|
||||
if errorlevel 1 goto Error
|
||||
cd ..
|
||||
:CreatePatchFileDone
|
||||
|
||||
:Copy32Bit
|
||||
echo Building 32-bit V8 ...
|
||||
if exist v8-ia32\ goto Copy32BitDone
|
||||
robocopy v8 v8-ia32 /mir /xd .git >nul
|
||||
if errorlevel 8 goto Error
|
||||
:Copy32BitDone
|
||||
|
||||
:Build32Bit
|
||||
cd v8-ia32
|
||||
python gypfiles\gyp_v8 -Dtarget_arch=ia32 -Dcomponent=shared_library -Dis_debug=%isdebug% -Dv8_use_snapshot=true -Dv8_use_external_startup_data=0 -Dv8_enable_i18n_support=0 >gyp.log
|
||||
echo Building 32-bit V8 ...
|
||||
cd v8
|
||||
call "%VSINSTALLDIR%\VC\Auxiliary\Build\vcvarsall" x86 >nul
|
||||
if errorlevel 1 goto Error
|
||||
msbuild /p:Configuration=%mode% /p:Platform=Win32 /t:v8 src\v8.sln >build.log
|
||||
call gn gen out\ia32\%mode% --args="fatal_linker_warnings=false is_component_build=true is_debug=%isdebug% is_official_build=%isofficial% target_cpu=\"x86\" v8_enable_i18n_support=false v8_target_cpu=\"x86\" v8_use_external_startup_data=false v8_use_snapshot=true enable_precompiled_headers=false" >gn.log
|
||||
if errorlevel 1 goto Error
|
||||
ninja -C out\ia32\%mode% v8-ia32.dll >build-ia32.log
|
||||
if errorlevel 1 goto Error
|
||||
cd ..
|
||||
:Build32BitDone
|
||||
|
||||
:Copy64Bit
|
||||
echo Building 64-bit V8 ...
|
||||
if exist v8-x64\ goto Copy64BitDone
|
||||
robocopy v8 v8-x64 /mir /xd .git >nul
|
||||
if errorlevel 8 goto Error
|
||||
:Copy64BitDone
|
||||
|
||||
:Build64Bit
|
||||
cd v8-x64
|
||||
python gypfiles\gyp_v8 -Dtarget_arch=x64 -Dcomponent=shared_library -Dis_debug=%isdebug% -Dv8_use_snapshot=true -Dv8_use_external_startup_data=0 -Dv8_enable_i18n_support=0 >gyp.log
|
||||
echo Building 64-bit V8 ...
|
||||
cd v8
|
||||
call "%VSINSTALLDIR%\VC\Auxiliary\Build\vcvarsall" x64 >nul
|
||||
if errorlevel 1 goto Error
|
||||
msbuild /p:Configuration=%mode% /p:Platform=x64 /t:v8 src\v8.sln >build.log
|
||||
call gn gen out\x64\%mode% --args="fatal_linker_warnings=false is_component_build=true is_debug=%isdebug% is_official_build=%isofficial% target_cpu=\"x64\" v8_enable_i18n_support=false v8_target_cpu=\"x64\" v8_use_external_startup_data=false v8_use_snapshot=true enable_precompiled_headers=false" >gn.log
|
||||
if errorlevel 1 goto Error
|
||||
ninja -C out\x64\%mode% v8-x64.dll >build-x64.log
|
||||
if errorlevel 1 goto Error
|
||||
cd ..
|
||||
:Build64BitDone
|
||||
|
@ -316,25 +243,25 @@ if errorlevel 1 goto Error
|
|||
|
||||
:ImportLibs
|
||||
echo Importing V8 libraries ...
|
||||
copy build\v8-ia32\src\%mode%\v8-base-ia32.dll lib\ >nul
|
||||
copy build\v8\out\ia32\%mode%\v8-base-ia32.dll lib\ >nul
|
||||
if errorlevel 1 goto Error
|
||||
copy build\v8-ia32\src\%mode%\v8-base-ia32.pdb lib\ >nul
|
||||
copy build\v8\out\ia32\%mode%\v8-base-ia32.dll.pdb lib\ >nul
|
||||
if errorlevel 1 goto Error
|
||||
copy build\v8-ia32\src\%mode%\v8-ia32.dll lib\ >nul
|
||||
copy build\v8\out\ia32\%mode%\v8-ia32.dll lib\ >nul
|
||||
if errorlevel 1 goto Error
|
||||
copy build\v8-ia32\src\%mode%\v8-ia32.pdb lib\ >nul
|
||||
copy build\v8\out\ia32\%mode%\v8-ia32.dll.pdb lib\ >nul
|
||||
if errorlevel 1 goto Error
|
||||
copy build\v8-ia32\src\%mode%\lib\v8-ia32.lib lib\ >nul
|
||||
copy build\v8\out\ia32\%mode%\v8-ia32.dll.lib lib\ >nul
|
||||
if errorlevel 1 goto Error
|
||||
copy build\v8-x64\src\%mode%\v8-base-x64.dll lib\ >nul
|
||||
copy build\v8\out\x64\%mode%\v8-base-x64.dll lib\ >nul
|
||||
if errorlevel 1 goto Error
|
||||
copy build\v8-x64\src\%mode%\v8-base-x64.pdb lib\ >nul
|
||||
copy build\v8\out\x64\%mode%\v8-base-x64.dll.pdb lib\ >nul
|
||||
if errorlevel 1 goto Error
|
||||
copy build\v8-x64\src\%mode%\v8-x64.dll lib\ >nul
|
||||
copy build\v8\out\x64\%mode%\v8-x64.dll lib\ >nul
|
||||
if errorlevel 1 goto Error
|
||||
copy build\v8-x64\src\%mode%\v8-x64.pdb lib\ >nul
|
||||
copy build\v8\out\x64\%mode%\v8-x64.dll.pdb lib\ >nul
|
||||
if errorlevel 1 goto Error
|
||||
copy build\v8-x64\src\%mode%\lib\v8-x64.lib lib\ >nul
|
||||
copy build\v8\out\x64\%mode%\v8-x64.dll.lib lib\ >nul
|
||||
if errorlevel 1 goto Error
|
||||
:ImportLibsDone
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
<# var version = new Version(5, 5, 2, 0); #>
|
||||
<# var version = new Version(5, 5, 3, 0); #>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta http-equiv=Content-Type content="text/html; charset=UTF-8">
|
||||
|
@ -187,8 +187,8 @@ ul
|
|||
|
||||
<div style='border:none;border-bottom:solid #4F81BD 1.0pt;padding:0in 0in 4.0pt 0in'>
|
||||
|
||||
<p class=MsoTitle style='margin-top:0in'>Building, Integrating, and Deploying
|
||||
ClearScript</p>
|
||||
<p class=MsoTitle style='margin-top:0in'><a name="OLE_LINK9">Building,
|
||||
Integrating, and Deploying ClearScript</a></p>
|
||||
|
||||
</div>
|
||||
|
||||
|
@ -198,30 +198,51 @@ ClearScript</p>
|
|||
<p class=MsoNormal style='margin-left:.25in'>Welcome to ClearScript!</p>
|
||||
|
||||
<p class=MsoNormal style='margin-left:.25in'>ClearScript is a library that
|
||||
allows you to add scripting to your .NET applications. It supports <a
|
||||
href="https://msdn.microsoft.com/en-us/library/hbxc2t98(v=vs.84).aspx">JScript</a>
|
||||
and <a href="https://msdn.microsoft.com/en-us/library/t0aew7h6(v=vs.84).aspx">VBScript</a>
|
||||
out of the box and in theory can work with other <a
|
||||
href="http://msdn.microsoft.com/en-us/library/bb871518.aspx">Windows Script</a>
|
||||
allows you to add scripting to your .NET applications. It supports <span
|
||||
class=MsoHyperlink><a
|
||||
href="https://msdn.microsoft.com/en-us/library/hbxc2t98(v=vs.84).aspx">JScript</a></span>
|
||||
and <span class=MsoHyperlink><a
|
||||
href="https://msdn.microsoft.com/en-us/library/t0aew7h6(v=vs.84).aspx">VBScript</a></span>
|
||||
out of the box and in theory can work with other <span class=MsoHyperlink><a
|
||||
href="http://msdn.microsoft.com/en-us/library/bb871518.aspx">Windows Script</a></span>
|
||||
engines.</p>
|
||||
|
||||
<p class=MsoNormal style='margin-left:.25in'>ClearScript 5 adds support for the
|
||||
<a href="https://developers.google.com/v8/">V8</a> high-performance open-source
|
||||
JavaScript engine. It allows you to use V8 with the same managed API and host
|
||||
integration features as JScript and VBScript. V8 provides better performance,
|
||||
however, and is more suitable for multi-threaded applications and asynchronous
|
||||
server-side scripting.</p>
|
||||
<span class=MsoHyperlink><a href="https://developers.google.com/v8/">V8</a></span>
|
||||
high-performance open-source JavaScript engine. It allows you to use V8 with
|
||||
the same managed API and host integration features as JScript and VBScript. V8
|
||||
provides better performance, however, and is more suitable for multi-threaded
|
||||
applications and asynchronous server-side scripting.</p>
|
||||
|
||||
<h1 style='margin-top:14.0pt;margin-right:0in;margin-bottom:0in;margin-left:
|
||||
.5in;margin-bottom:.0001pt;text-indent:-.5in'><span style='font:7.0pt "Times New Roman"'> </span>II.
|
||||
Building ClearScript</h1>
|
||||
|
||||
<p class=MsoNormal style='margin-left:.25in'><a name="OLE_LINK13"></a><a
|
||||
name="OLE_LINK20"></a><a name="OLE_LINK15"></a><a name="OLE_LINK19">The ClearScript
|
||||
source code </a><a name="OLE_LINK25">is hosted </a>in a <a
|
||||
href="http://www.git-scm.com/download/win">Git</a> repository. If you’re installing
|
||||
Git for the first time, select the options <b>Use Git from the Windows Command
|
||||
Prompt</b> and <b>Checkout Windows-style, commit Unix-style line endings</b>.
|
||||
If you already have Git installed, use <a
|
||||
href="https://git-scm.com/docs/git-config"><span style='font-size:10.0pt;
|
||||
line-height:115%;font-family:Consolas'>git-config</span></a> to ensure that the
|
||||
<b><span style='font-size:10.0pt;line-height:115%;font-family:Consolas'>core.autocrlf</span>
|
||||
</b>variable is set to <b><span style='font-size:10.0pt;line-height:115%;
|
||||
font-family:Consolas'>true</span></b>.</p>
|
||||
|
||||
<p class=MsoNormal style='margin-left:.25in'>Use <a
|
||||
href="https://git-scm.com/docs/git-clone"><span style='font-size:10.0pt;
|
||||
line-height:115%;font-family:Consolas'>git-clone</span></a> to download the <a
|
||||
href="https://github.com/Microsoft/ClearScript">ClearScript source code</a>
|
||||
into a convenient directory.</p>
|
||||
|
||||
<p class=MsoNormal style='margin-left:.25in'>The provided project and solution
|
||||
files support Visual Studio <a
|
||||
href="https://www.visualstudio.com/vs/older-downloads/">2015</a> and <a
|
||||
href="https://www.visualstudio.com/downloads/">2017</a>. They produce
|
||||
architecture-neutral managed libraries that target .NET Framework 4.5.
|
||||
ClearScript does not support older environments. The output directory is <b><span
|
||||
files support Visual Studio <span class=MsoHyperlink><a
|
||||
href="https://www.visualstudio.com/vs/older-downloads/">2015</a></span> and <span
|
||||
class=MsoHyperlink><a href="https://www.visualstudio.com/downloads/">2017</a></span>.
|
||||
They produce architecture-neutral managed libraries that target .NET Framework
|
||||
4.5. ClearScript does not support older environments. The output directory is <b><span
|
||||
style='font-size:10.0pt;line-height:115%;font-family:Consolas'>bin\[Debug|Release]</span></b>.</p>
|
||||
|
||||
<p class=MsoNormal style='margin-left:.25in'>There are two ways to build
|
||||
|
@ -238,59 +259,85 @@ style='font:7.0pt "Times New Roman"'> </span
|
|||
style='color:#00B050'>Note:</span></b> This procedure and the V8Update script
|
||||
are provided for your convenience. ClearScript does not include V8 source code,
|
||||
nor does it come with any third-party software required to download and build
|
||||
V8. Rights to V8 and its prerequisites are provided by their rights holders.</p>
|
||||
V8. Rights to V8 and its dependencies are provided by their respective rights
|
||||
holders.</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:.75in;text-indent:-.25in'>2.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span><b><span
|
||||
style='color:red'>Important:</span></b> Because of changes in V8 5.4, this procedure
|
||||
and the V8Update script now require a 64-bit operating system. Once built,
|
||||
ClearScript can still be deployed in a 32-bit environment.</p>
|
||||
style='color:red'>Important:</span></b> Ensure that the path to your
|
||||
ClearScript root directory does not contain spaces or non-ASCII characters.</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:.75in;text-indent:-.25in'>3.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span><b><span
|
||||
style='color:red'>Important:</span></b> Although ClearScript still supports Visual
|
||||
Studio 2015, V8 and the V8Update script now require Visual Studio 2017.</p>
|
||||
style='color:red'>Important:</span></b> The V8 build now requires Visual Studio
|
||||
2017 and a 64-bit operating system. Your Visual Studio installation must
|
||||
include the <b>.NET desktop development</b> and <b>Desktop development with C++</b>
|
||||
workloads. Once built, ClearScript can still be deployed in a 32-bit
|
||||
environment.</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:.75in;text-indent:-.25in'>4.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Install
|
||||
<a href="http://www.git-scm.com/download/win">Git</a>. Ensure that Git is added
|
||||
to your executable path by selecting the option <b>Use Git from the Windows
|
||||
Command Prompt</b>.</p>
|
||||
style='font:7.0pt "Times New Roman"'> </span><b><span
|
||||
style='color:#00B050'>Recommended:</span></b> To avoid V8 build issues, we
|
||||
recommend that you install the latest version of the <span class=MsoHyperlink><a
|
||||
href="https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk">Windows
|
||||
10 SDK</a></span> and uninstall all earlier versions.</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:.75in;text-indent:-.25in'>5.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Install
|
||||
the latest Python 2.x from <a href="http://www.python.org/downloads/">here</a>
|
||||
and add it to your executable path. V8's build process requires at least Python
|
||||
2.7 and does not support Python 3.x.</p>
|
||||
style='font:7.0pt "Times New Roman"'> </span><b><span
|
||||
style='color:red'>Important:</span></b> Your Windows SDK installation must
|
||||
include the <b>Debugging Tools for Windows</b> feature. Here’s how to add it to
|
||||
your installation:</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:1.25in;text-indent:-.25in'>a.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Launch
|
||||
Control Panel and click <b>Programs</b> → <b>Programs and Features</b>.</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:1.25in;text-indent:-.25in'>b.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Right-click
|
||||
your Windows SDK version and select <b>Change</b>.</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:1.25in;text-indent:-.25in'>c.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Click
|
||||
<b>Next</b>, check <b>Debugging</b> <b>Tools</b> <b>for</b> <b>Windows</b>, and
|
||||
click <b>Change</b>.</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:.75in;text-indent:-.25in'>6.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Unzip
|
||||
or clone the <a href="https://github.com/Microsoft/ClearScript">ClearScript
|
||||
source code</a> into a convenient directory. <b><span style='color:red'>Important:</span></b>
|
||||
Ensure that the path to your ClearScript root directory does not contain any
|
||||
non-ASCII characters.</p>
|
||||
style='font:7.0pt "Times New Roman"'> </span><b><span
|
||||
style='color:red'>Important:</span></b> The V8Update script downloads
|
||||
executables that Windows Defender may incorrectly identify as containers of
|
||||
malware. To prevent this from interfering with your build, ensure that
|
||||
real-time malware protection is turned off while the script is running:</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:1.25in;text-indent:-.25in'>a.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Launch
|
||||
Windows Defender Security Center.</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:1.25in;text-indent:-.25in'>b.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Navigate
|
||||
to <b>Virus & threat protection</b> → <b>Virus & threat protection
|
||||
settings</b>.</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:1.25in;text-indent:-.25in'>c.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Switch
|
||||
<b>Real-time protection</b> off.</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:.75in;text-indent:-.25in'>7.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Ensure
|
||||
that your Visual Studio installation includes C++ support.</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:.75in;text-indent:-.25in'>8.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Open
|
||||
a <a href="https://www.visualstudio.com/downloads/">Visual Studio 2017</a>
|
||||
developer command prompt and run the <b><span style='font-size:10.0pt;
|
||||
line-height:115%;font-family:Consolas'>V8Update</span></b> script from your
|
||||
ClearScript root directory:</p>
|
||||
a <span class=MsoHyperlink><a href="https://www.visualstudio.com/downloads/">Visual
|
||||
Studio 2017</a></span> developer command prompt and run the <b><span
|
||||
style='font-size:10.0pt;line-height:115%;font-family:Consolas'>V8Update</span></b>
|
||||
script from your ClearScript root directory:</p>
|
||||
|
||||
<p class=MsoNormal style='margin-top:10.0pt;margin-right:36.7pt;margin-bottom:
|
||||
14.0pt;margin-left:1.0in;background:#F2F2F2'><b><span style='font-size:10.0pt;
|
||||
line-height:115%;font-family:Consolas'>C:\ClearScript> V8Update [/N]
|
||||
[Debug|Release] [Latest|Tested|<Revision>]</span></b></p>
|
||||
line-height:115%;font-family:Consolas'>C:\ClearScript> V8Update [/N] [Debug|<a
|
||||
name="OLE_LINK16">Release</a>] [Latest|Tested|<Revision>]</span></b></p>
|
||||
|
||||
<p class=MsoNormal style='margin-left:.75in'>This script downloads the V8
|
||||
source code and its prerequisites, builds 32-bit and 64-bit V8 shared
|
||||
libraries, and imports the results into ClearScript. It requires approximately
|
||||
3GB of additional disk space and does not perform any permanent software
|
||||
installation on your machine.</p>
|
||||
source code and its dependencies, builds 32-bit and 64-bit V8 shared libraries,
|
||||
and imports the results into ClearScript. It requires approximately 6GB of
|
||||
additional disk space and does not perform any permanent software installation
|
||||
on your machine.</p>
|
||||
|
||||
<p class=MsoNormal style='margin-left:.75in'>The optional <b><span
|
||||
style='font-size:10.0pt;line-height:115%;font-family:Consolas'>/N</span></b>
|
||||
|
@ -311,8 +358,8 @@ builds a V8 revision that has been tested with the current version of
|
|||
ClearScript. If you'd like to use a specific revision instead, place the
|
||||
desired branch name, commit ID, or tag on the <b><span style='font-size:10.0pt;
|
||||
line-height:115%;font-family:Consolas'>V8Update</span></b> command line. Browse
|
||||
<a href="https://chromium.googlesource.com/v8/v8.git">here</a> to view V8's
|
||||
revision history.</p>
|
||||
<span class=MsoHyperlink><a href="https://chromium.googlesource.com/v8/v8.git">here</a></span>
|
||||
to view V8's revision history.</p>
|
||||
|
||||
<p class=MsoNormal style='margin-left:.25in'>You are now ready to build the full
|
||||
<b><span style='font-size:10.0pt;line-height:115%;font-family:Consolas'>ClearScript</span></b>
|
||||
|
@ -321,15 +368,21 @@ solution using Visual Studio 2015 or 2017.</p>
|
|||
<p class=MsoNormal style='margin-left:.25in'><b><span style='color:#00B050'>Note:</span></b>
|
||||
The first time you open the solution, Visual Studio may prompt you to upgrade
|
||||
one or more projects to the latest platform toolset or .NET Framework. We
|
||||
recommend that you select <b>Cancel</b> or <b>Don't Upgrade</b>.</p>
|
||||
recommend that you select <b>Cancel</b> or <b>Don't Upgrade</b>. If you
|
||||
encounter issues building ClearScript’s unmanaged projects (<b><span
|
||||
style='font-size:10.0pt;line-height:115%;font-family:Consolas'>ClearScriptV8-32</span></b>
|
||||
and <b><span style='font-size:10.0pt;line-height:115%;font-family:Consolas'>ClearScriptV8-64</span></b>),
|
||||
ensure that their <b>Windows SDK Version</b> properties are set to an installed
|
||||
version of the Windows SDK.</p>
|
||||
|
||||
<p class=MsoNormal style='margin-left:.25in'><b><span style='color:#00B050'>Optional:</span></b>
|
||||
The ClearScript repository includes the <a
|
||||
The ClearScript repository includes the <span class=MsoHyperlink><a
|
||||
href="https://microsoft.github.io/ClearScript/Reference/html/R_Project_Reference.htm">ClearScript
|
||||
Library Reference</a> in HTML and Compiled HTML (.CHM) formats. If you'd like
|
||||
to rebuild these files, use <a href="https://github.com/EWSoftware/SHFB">Sandcastle
|
||||
Help File Builder</a> with the provided project files (<b><span
|
||||
style='font-size:10.0pt;line-height:115%;font-family:Consolas'>ClearScript\doc\[Web]Reference.shfbproj</span></b>).</p>
|
||||
Library Reference</a></span> in HTML and Compiled HTML (.CHM) formats. If you'd
|
||||
like to rebuild these files, use <span class=MsoHyperlink><a
|
||||
href="https://github.com/EWSoftware/SHFB">Sandcastle Help File Builder</a></span>
|
||||
with the provided project files (<b><span style='font-size:10.0pt;line-height:
|
||||
115%;font-family:Consolas'>ClearScript\doc\[Web]Reference.shfbproj</span></b>).</p>
|
||||
|
||||
<h1 style='margin-top:14.0pt;margin-right:0in;margin-bottom:0in;margin-left:
|
||||
.5in;margin-bottom:.0001pt;text-indent:-.5in'>III. Building strong-named
|
||||
|
@ -358,7 +411,7 @@ the ClearScript solution in Visual Studio.</p>
|
|||
|
||||
<p class=MsoListParagraph style='margin-left:.75in;text-indent:-.25in'>4.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Click
|
||||
<b>Build</b> → <b>Transform All T4 Templates</b>.</p>
|
||||
<a name="OLE_LINK12"><b>Build</b> </a>→ <b>Transform All T4 Templates</b>.</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:.75in;text-indent:-.25in'>5.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Rebuild
|
||||
|
@ -425,13 +478,14 @@ name="OLE_LINK4"></a><a name="OLE_LINK3">4.<span style='font:7.0pt "Times New Ro
|
|||
not installed on your deployment machine, you must install 32-bit and 64-bit
|
||||
Visual C++ Redistributable packages:</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:1.0in'><a
|
||||
<p class=MsoListParagraph style='margin-left:1.0in'><span class=MsoHyperlink><a
|
||||
href="https://www.microsoft.com/en-us/download/details.aspx?id=48145">Visual
|
||||
C++ Redistributable for Visual Studio 2015</a></p>
|
||||
C++ Redistributable for Visual Studio 2015</a></span></p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:1.0in'>Visual C++ Redistributable
|
||||
for Visual Studio 2017 <a href="https://go.microsoft.com/fwlink/?LinkId=746572">[x64]</a>
|
||||
<a href="https://go.microsoft.com/fwlink/?LinkId=746571">[x86]</a></p>
|
||||
for Visual Studio 2017 <span class=MsoHyperlink><a
|
||||
href="https://go.microsoft.com/fwlink/?LinkId=746572">[x64]</a></span> <span
|
||||
class=MsoHyperlink><a href="https://go.microsoft.com/fwlink/?LinkId=746571">[x86]</a></span></p>
|
||||
|
||||
<h1 style='margin-top:14.0pt;margin-right:0in;margin-bottom:0in;margin-left:
|
||||
.5in;margin-bottom:.0001pt;text-indent:-.5in'><span style='font:7.0pt "Times New Roman"'>
|
||||
|
@ -444,16 +498,17 @@ to use the Visual Studio Code IDE:</p>
|
|||
|
||||
<p class=MsoListParagraph style='margin-left:.75in;text-indent:-.25in'>1.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Install
|
||||
and launch <a href="https://code.visualstudio.com/">Visual Studio Code</a>.</p>
|
||||
and launch <span class=MsoHyperlink><a href="https://code.visualstudio.com/">Visual
|
||||
Studio Code</a></span>.</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:.75in;text-indent:-.25in'>2.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Set
|
||||
up one or more ClearScript V8 debug configurations:</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:1.25in;text-indent:-.25in'>a.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Launch
|
||||
Visual Studio Code and click <b>File</b> → <b>Preferences </b>→<b> Settings
|
||||
</b>to open your User Settings file.</p>
|
||||
<p class=MsoListParagraph style='margin-left:1.25in;text-indent:-.25in'><a
|
||||
name="OLE_LINK18">a.<span style='font:7.0pt "Times New Roman"'>
|
||||
</span>Click <b>File</b> </a>→ <b>Preferences </b>→<b> Settings </b>to open
|
||||
your User Settings file.</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:1.25in;text-indent:-.25in'>b.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Add
|
||||
|
@ -557,19 +612,19 @@ line-height:115%;font-family:Consolas;color:#D4D4D4'>}</span></b></p>
|
|||
<p class=MsoListParagraph style='margin-left:1.25in;text-indent:-.25in'>c.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>You
|
||||
can specify additional configurations for different hosts, port numbers, and
|
||||
other options. See <a
|
||||
href="https://code.visualstudio.com/docs/nodejs/nodejs-debugging">here</a> for
|
||||
more information.</p>
|
||||
other options. See <span class=MsoHyperlink><a
|
||||
href="https://code.visualstudio.com/docs/nodejs/nodejs-debugging">here</a></span>
|
||||
for more information.</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:1.25in;text-indent:-.25in'>d.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Click
|
||||
<b>File</b> → <b>Save</b>.</p>
|
||||
<b>File</b> → <b>Save</b>.</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:.75in;text-indent:-.25in'>3.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Enable
|
||||
script debugging in your application by invoking the <a
|
||||
href="https://microsoft.github.io/ClearScript/Reference/html/T_Microsoft_ClearScript_V8_V8ScriptEngine.htm"><b><span
|
||||
style='font-size:10.0pt;line-height:115%;font-family:Consolas'>V8ScriptEngine</span></b></a>
|
||||
script debugging in your application by invoking the <span class=MsoHyperlink><b><span
|
||||
style='font-size:10.0pt;line-height:115%;font-family:Consolas'><a
|
||||
href="https://microsoft.github.io/ClearScript/Reference/html/T_Microsoft_ClearScript_V8_V8ScriptEngine.htm">V8ScriptEngine</a></span></b></span>
|
||||
constructor with <a name="OLE_LINK2"></a><a
|
||||
href="https://microsoft.github.io/ClearScript/Reference/html/T_Microsoft_ClearScript_V8_V8ScriptEngineFlags.htm"><b><span
|
||||
style='font-size:10.0pt;line-height:115%;font-family:Consolas'>V8ScriptEngineFlags.EnableDebugging</span></b></a>
|
||||
|
@ -582,9 +637,9 @@ you’d like to debug your application remotely, you must also do the following:
|
|||
|
||||
<p class=MsoListParagraph style='margin-left:1.25in;text-indent:-.25in'>a.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Construct
|
||||
your script engine with the additional flag <a
|
||||
href="https://microsoft.github.io/ClearScript/Reference/html/T_Microsoft_ClearScript_V8_V8ScriptEngineFlags.htm"><b><span
|
||||
style='font-size:10.0pt;line-height:115%;font-family:Consolas'>V8ScriptEngineFlags.EnableRemoteDebugging</span></b></a>.</p>
|
||||
your script engine with the additional flag <span class=MsoHyperlink><b><span
|
||||
style='font-size:10.0pt;line-height:115%;font-family:Consolas'><a
|
||||
href="https://microsoft.github.io/ClearScript/Reference/html/T_Microsoft_ClearScript_V8_V8ScriptEngineFlags.htm">V8ScriptEngineFlags.EnableRemoteDebugging</a></span></b></span>.</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:1.25in;text-indent:-.25in'>b.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span><b><span
|
||||
|
@ -597,7 +652,7 @@ the Visual Studio Code debugger to your application:</p>
|
|||
|
||||
<p class=MsoListParagraph style='margin-left:1.25in;text-indent:-.25in'><a
|
||||
name="OLE_LINK1">a.<span style='font:7.0pt "Times New Roman"'>
|
||||
</span>Click <b>View</b> </a>→ <b>Debug</b> to bring up the Debug view.</p>
|
||||
</span>Click <b>View</b> </a>→ <b>Debug</b> to bring up the Debug view.</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:1.25in;text-indent:-.25in'>b.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Select
|
||||
|
@ -605,7 +660,7 @@ the appropriate debug configuration at the top of the Debug Side Bar.</p>
|
|||
|
||||
<p class=MsoListParagraph style='margin-left:1.25in;text-indent:-.25in'>c.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span>Click
|
||||
<b>Debug</b> → <b>Start Debugging</b>.</p>
|
||||
<b>Debug</b> → <b>Start Debugging</b>.</p>
|
||||
|
||||
<p class=MsoNormal style='margin-left:.5in'><b><span style='color:#00B050'>Note:</span></b>
|
||||
You can also attach Visual Studio to your application for simultaneous
|
||||
|
@ -617,14 +672,16 @@ debugging of script, managed, and native code.</p>
|
|||
<p class=MsoNormal style='margin-left:.25in'>We’d like to thank:</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:.75in;text-indent:-.25in'>1.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span><a
|
||||
href="https://code.google.com/p/v8/people/list">The V8 team</a>.</p>
|
||||
style='font:7.0pt "Times New Roman"'> </span><span
|
||||
class=MsoHyperlink><a href="https://code.google.com/p/v8/people/list">The V8
|
||||
team</a></span>.</p>
|
||||
|
||||
<p class=MsoListParagraph style='margin-left:.75in;text-indent:-.25in'>2.<span
|
||||
style='font:7.0pt "Times New Roman"'> </span><a
|
||||
href="http://kennethreitz.org">Kenneth Reitz</a> for generously providing the <a
|
||||
href="http://httpbin.org"><b><span style='font-size:10.0pt;line-height:115%;
|
||||
font-family:Consolas'>Httpbin</span></b></a> service.</p>
|
||||
style='font:7.0pt "Times New Roman"'> </span><span
|
||||
class=MsoHyperlink><a href="http://kennethreitz.org">Kenneth Reitz</a></span>
|
||||
for generously providing the <span class=MsoHyperlink><b><span
|
||||
style='font-size:10.0pt;line-height:115%;font-family:Consolas'><a
|
||||
href="http://httpbin.org">Httpbin</a></span></b></span> service.</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
|
@ -67,6 +67,19 @@
|
|||
<HelpKINode Title="V8ScriptEngine.Dispose Method " Url="html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_Dispose.htm" />
|
||||
<HelpKINode Title="WindowsScriptEngine.Dispose Method " Url="html/Overload_Microsoft_ClearScript_Windows_WindowsScriptEngine_Dispose.htm" />
|
||||
</HelpKINode>
|
||||
<HelpKINode Title="DocumentFlags enumeration" Url="html/T_Microsoft_ClearScript_DocumentFlags.htm" />
|
||||
<HelpKINode Title="DocumentInfo property" Url="html/P_Microsoft_ClearScript_V8_V8Script_DocumentInfo.htm" />
|
||||
<HelpKINode Title="DocumentInfo structure">
|
||||
<HelpKINode Title="DocumentInfo Structure" Url="html/T_Microsoft_ClearScript_DocumentInfo.htm" />
|
||||
<HelpKINode Title="constructor" Url="html/Overload_Microsoft_ClearScript_DocumentInfo__ctor.htm" />
|
||||
<HelpKINode Title="methods" Url="html/Methods_T_Microsoft_ClearScript_DocumentInfo.htm" />
|
||||
<HelpKINode Title="properties" Url="html/Properties_T_Microsoft_ClearScript_DocumentInfo.htm" />
|
||||
</HelpKINode>
|
||||
<HelpKINode Title="DocumentInfo.DocumentInfo constructor" Url="html/Overload_Microsoft_ClearScript_DocumentInfo__ctor.htm" />
|
||||
<HelpKINode Title="DocumentInfo.Flags property" Url="html/P_Microsoft_ClearScript_DocumentInfo_Flags.htm" />
|
||||
<HelpKINode Title="DocumentInfo.Name property" Url="html/P_Microsoft_ClearScript_DocumentInfo_Name.htm" />
|
||||
<HelpKINode Title="DocumentInfo.SourceMapUri property" Url="html/P_Microsoft_ClearScript_DocumentInfo_SourceMapUri.htm" />
|
||||
<HelpKINode Title="DocumentInfo.Uri property" Url="html/P_Microsoft_ClearScript_DocumentInfo_Uri.htm" />
|
||||
<HelpKINode Title="DoNotEnableVTablePatching enumeration member" Url="html/T_Microsoft_ClearScript_Windows_WindowsScriptEngineFlags.htm" />
|
||||
<HelpKINode Title="EnableAutoHostVariables property" Url="html/P_Microsoft_ClearScript_ScriptEngine_EnableAutoHostVariables.htm" />
|
||||
<HelpKINode Title="EnableDateTimeConversion enumeration member" Url="html/T_Microsoft_ClearScript_V8_V8ScriptEngineFlags.htm" />
|
||||
|
@ -153,7 +166,10 @@
|
|||
<HelpKINode Title="VBScriptEngine.FileNameExtension Property " Url="html/P_Microsoft_ClearScript_Windows_VBScriptEngine_FileNameExtension.htm" />
|
||||
</HelpKINode>
|
||||
<HelpKINode Title="Finalize method" Url="html/M_Microsoft_ClearScript_ScriptEngine_Finalize.htm" />
|
||||
<HelpKINode Title="Flags property" Url="html/P_Microsoft_ClearScript_ScriptMemberAttribute_Flags.htm" />
|
||||
<HelpKINode Title="Flags property">
|
||||
<HelpKINode Title="DocumentInfo.Flags Property " Url="html/P_Microsoft_ClearScript_DocumentInfo_Flags.htm" />
|
||||
<HelpKINode Title="ScriptMemberAttribute.Flags Property " Url="html/P_Microsoft_ClearScript_ScriptMemberAttribute_Flags.htm" />
|
||||
</HelpKINode>
|
||||
<HelpKINode Title="flags(Of T) method" Url="html/M_Microsoft_ClearScript_HostFunctions_flags__1.htm" />
|
||||
<HelpKINode Title="flags<T> method" Url="html/M_Microsoft_ClearScript_HostFunctions_flags__1.htm" />
|
||||
<HelpKINode Title="FormatCode property">
|
||||
|
@ -317,6 +333,7 @@
|
|||
<HelpKINode Title="ScriptInterruptedException.IsFatal Property " Url="html/P_Microsoft_ClearScript_ScriptInterruptedException_IsFatal.htm" />
|
||||
</HelpKINode>
|
||||
<HelpKINode Title="isNull method" Url="html/M_Microsoft_ClearScript_HostFunctions_isNull.htm" />
|
||||
<HelpKINode Title="IsTransient enumeration member" Url="html/T_Microsoft_ClearScript_DocumentFlags.htm" />
|
||||
<HelpKINode Title="isType(Of T) method" Url="html/M_Microsoft_ClearScript_HostFunctions_isType__1.htm" />
|
||||
<HelpKINode Title="isType<T> method" Url="html/M_Microsoft_ClearScript_HostFunctions_isType__1.htm" />
|
||||
<HelpKINode Title="isTypeObj method" Url="html/Overload_Microsoft_ClearScript_HostFunctions_isTypeObj.htm" />
|
||||
|
@ -370,6 +387,8 @@
|
|||
<HelpKINode Title="Microsoft.ClearScript namespace" Url="html/N_Microsoft_ClearScript.htm" />
|
||||
<HelpKINode Title="Microsoft.ClearScript.ContinuationCallback delegate" Url="html/T_Microsoft_ClearScript_ContinuationCallback.htm" />
|
||||
<HelpKINode Title="Microsoft.ClearScript.DefaultScriptUsageAttribute class" Url="html/T_Microsoft_ClearScript_DefaultScriptUsageAttribute.htm" />
|
||||
<HelpKINode Title="Microsoft.ClearScript.DocumentFlags enumeration" Url="html/T_Microsoft_ClearScript_DocumentFlags.htm" />
|
||||
<HelpKINode Title="Microsoft.ClearScript.DocumentInfo structure" Url="html/T_Microsoft_ClearScript_DocumentInfo.htm" />
|
||||
<HelpKINode Title="Microsoft.ClearScript.EventConnection(Of T) class" Url="html/T_Microsoft_ClearScript_EventConnection_1.htm" />
|
||||
<HelpKINode Title="Microsoft.ClearScript.EventConnection<T> class" Url="html/T_Microsoft_ClearScript_EventConnection_1.htm" />
|
||||
<HelpKINode Title="Microsoft.ClearScript.EventSource(Of T) class" Url="html/T_Microsoft_ClearScript_EventSource_1.htm" />
|
||||
|
@ -418,6 +437,7 @@
|
|||
<HelpKINode Title="Microsoft.ClearScript.Windows.WindowsScriptEngine class" Url="html/T_Microsoft_ClearScript_Windows_WindowsScriptEngine.htm" />
|
||||
<HelpKINode Title="Microsoft.ClearScript.Windows.WindowsScriptEngineFlags enumeration" Url="html/T_Microsoft_ClearScript_Windows_WindowsScriptEngineFlags.htm" />
|
||||
<HelpKINode Title="Name property">
|
||||
<HelpKINode Title="DocumentInfo.Name Property " Url="html/P_Microsoft_ClearScript_DocumentInfo_Name.htm" />
|
||||
<HelpKINode Title="ScriptEngine.Name Property " Url="html/P_Microsoft_ClearScript_ScriptEngine_Name.htm" />
|
||||
<HelpKINode Title="ScriptMemberAttribute.Name Property " Url="html/P_Microsoft_ClearScript_ScriptMemberAttribute_Name.htm" />
|
||||
<HelpKINode Title="V8Runtime.Name Property " Url="html/P_Microsoft_ClearScript_V8_V8Runtime_Name.htm" />
|
||||
|
@ -436,6 +456,7 @@
|
|||
</HelpKINode>
|
||||
<HelpKINode Title="NoDefaultScriptAccessAttribute.NoDefaultScriptAccessAttribute constructor" Url="html/M_Microsoft_ClearScript_NoDefaultScriptAccessAttribute__ctor.htm" />
|
||||
<HelpKINode Title="None enumeration member">
|
||||
<HelpKINode Title="DocumentFlags Enumeration" Url="html/T_Microsoft_ClearScript_DocumentFlags.htm" />
|
||||
<HelpKINode Title="HostItemFlags Enumeration" Url="html/T_Microsoft_ClearScript_HostItemFlags.htm" />
|
||||
<HelpKINode Title="ScriptAccess Enumeration" Url="html/T_Microsoft_ClearScript_ScriptAccess.htm" />
|
||||
<HelpKINode Title="ScriptMemberFlags Enumeration" Url="html/T_Microsoft_ClearScript_ScriptMemberFlags.htm" />
|
||||
|
@ -595,6 +616,7 @@
|
|||
<HelpKINode Title="IArrayBuffer.Size Property " Url="html/P_Microsoft_ClearScript_JavaScript_IArrayBuffer_Size.htm" />
|
||||
<HelpKINode Title="IArrayBufferView.Size Property " Url="html/P_Microsoft_ClearScript_JavaScript_IArrayBufferView_Size.htm" />
|
||||
</HelpKINode>
|
||||
<HelpKINode Title="SourceMapUri property" Url="html/P_Microsoft_ClearScript_DocumentInfo_SourceMapUri.htm" />
|
||||
<HelpKINode Title="SuppressExtensionMethodEnumeration property" Url="html/P_Microsoft_ClearScript_V8_V8ScriptEngine_SuppressExtensionMethodEnumeration.htm" />
|
||||
<HelpKINode Title="SuppressInstanceMethodEnumeration property" Url="html/P_Microsoft_ClearScript_V8_V8ScriptEngine_SuppressInstanceMethodEnumeration.htm" />
|
||||
<HelpKINode Title="ToArray method" Url="html/M_Microsoft_ClearScript_JavaScript_ITypedArray_1_ToArray.htm" />
|
||||
|
@ -628,6 +650,7 @@
|
|||
<HelpKINode Title="methods" Url="html/Methods_T_Microsoft_ClearScript_Undefined.htm" />
|
||||
</HelpKINode>
|
||||
<HelpKINode Title="Undefined.ToString method" Url="html/M_Microsoft_ClearScript_Undefined_ToString.htm" />
|
||||
<HelpKINode Title="Uri property" Url="html/P_Microsoft_ClearScript_DocumentInfo_Uri.htm" />
|
||||
<HelpKINode Title="UsedHeapSize property" Url="html/P_Microsoft_ClearScript_V8_V8RuntimeHeapInfo_UsedHeapSize.htm" />
|
||||
<HelpKINode Title="UseReflectionBindFallback property" Url="html/P_Microsoft_ClearScript_ScriptEngine_UseReflectionBindFallback.htm" />
|
||||
<HelpKINode Title="V8CacheKind enumeration" Url="html/T_Microsoft_ClearScript_V8_V8CacheKind.htm" />
|
||||
|
@ -676,6 +699,7 @@
|
|||
<HelpKINode Title="properties" Url="html/Properties_T_Microsoft_ClearScript_V8_V8Script.htm" />
|
||||
</HelpKINode>
|
||||
<HelpKINode Title="V8Script.Dispose method" Url="html/M_Microsoft_ClearScript_V8_V8Script_Dispose.htm" />
|
||||
<HelpKINode Title="V8Script.DocumentInfo property" Url="html/P_Microsoft_ClearScript_V8_V8Script_DocumentInfo.htm" />
|
||||
<HelpKINode Title="V8Script.Name property" Url="html/P_Microsoft_ClearScript_V8_V8Script_Name.htm" />
|
||||
<HelpKINode Title="V8ScriptEngine class">
|
||||
<HelpKINode Title="V8ScriptEngine Class" Url="html/T_Microsoft_ClearScript_V8_V8ScriptEngine.htm" />
|
||||
|
|
|
@ -1,73 +1,87 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<HelpTOC>
|
||||
|
||||
<HelpTOCNode Id="b6db7371-5c11-4264-b3c8-1d9717316e64" Title="ClearScript Library Reference" Url="html/R_Project_Reference.htm">
|
||||
<HelpTOCNode Id="d36a0225-648b-4e77-b08d-c0ec5f304057" Title="Microsoft.ClearScript" Url="html/N_Microsoft_ClearScript.htm">
|
||||
<HelpTOCNode Id="ab43e6ba-0c86-43a1-a6b5-6c78fdf19fd2" Title="ClearScript Library Reference" Url="html/R_Project_Reference.htm">
|
||||
<HelpTOCNode Id="fcb6d5a0-89e2-4494-bdae-e9df70cdd043" Title="Microsoft.ClearScript" Url="html/N_Microsoft_ClearScript.htm">
|
||||
<HelpTOCNode Title="ContinuationCallback Delegate" Url="html/T_Microsoft_ClearScript_ContinuationCallback.htm" />
|
||||
<HelpTOCNode Id="130f0e67-7765-4d0f-bbb7-6231ff7de6c5" Title="DefaultScriptUsageAttribute Class" Url="html/T_Microsoft_ClearScript_DefaultScriptUsageAttribute.htm">
|
||||
<HelpTOCNode Id="f2897f06-bea2-41a0-9402-5ed57ee8760e" Title="DefaultScriptUsageAttribute Constructor " Url="html/Overload_Microsoft_ClearScript_DefaultScriptUsageAttribute__ctor.htm">
|
||||
<HelpTOCNode Id="7be28db9-b479-4d35-aeaf-2546af7ed20b" Title="DefaultScriptUsageAttribute Class" Url="html/T_Microsoft_ClearScript_DefaultScriptUsageAttribute.htm">
|
||||
<HelpTOCNode Id="b0d6b02c-b83b-48fa-8dbd-541765c7de84" Title="DefaultScriptUsageAttribute Constructor " Url="html/Overload_Microsoft_ClearScript_DefaultScriptUsageAttribute__ctor.htm">
|
||||
<HelpTOCNode Title="DefaultScriptUsageAttribute Constructor " Url="html/M_Microsoft_ClearScript_DefaultScriptUsageAttribute__ctor.htm" />
|
||||
<HelpTOCNode Title="DefaultScriptUsageAttribute Constructor (ScriptAccess)" Url="html/M_Microsoft_ClearScript_DefaultScriptUsageAttribute__ctor_1.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="4dae24e6-ff5c-4239-bd4a-41fd45089a9e" Title="DefaultScriptUsageAttribute Properties" Url="html/Properties_T_Microsoft_ClearScript_DefaultScriptUsageAttribute.htm">
|
||||
<HelpTOCNode Id="499aefa7-2340-4ae9-b75a-ecfb09366a5a" Title="DefaultScriptUsageAttribute Properties" Url="html/Properties_T_Microsoft_ClearScript_DefaultScriptUsageAttribute.htm">
|
||||
<HelpTOCNode Title="Access Property " Url="html/P_Microsoft_ClearScript_DefaultScriptUsageAttribute_Access.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="DefaultScriptUsageAttribute Methods" Url="html/Methods_T_Microsoft_ClearScript_DefaultScriptUsageAttribute.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="2b5188e5-d434-433a-9fad-eae2845fd07f" Title="EventConnection(T) Class" Url="html/T_Microsoft_ClearScript_EventConnection_1.htm">
|
||||
<HelpTOCNode Id="d61fb4a5-f715-4787-b59f-690d116375b7" Title="EventConnection(T) Methods" Url="html/Methods_T_Microsoft_ClearScript_EventConnection_1.htm">
|
||||
<HelpTOCNode Title="DocumentFlags Enumeration" Url="html/T_Microsoft_ClearScript_DocumentFlags.htm" />
|
||||
<HelpTOCNode Id="c8960b7c-ea87-46f7-8a50-f664267ca9df" Title="DocumentInfo Structure" Url="html/T_Microsoft_ClearScript_DocumentInfo.htm">
|
||||
<HelpTOCNode Id="39c07405-6f79-45bc-b3f1-eb87fd8b8fbe" Title="DocumentInfo Constructor " Url="html/Overload_Microsoft_ClearScript_DocumentInfo__ctor.htm">
|
||||
<HelpTOCNode Title="DocumentInfo Constructor (String)" Url="html/M_Microsoft_ClearScript_DocumentInfo__ctor.htm" />
|
||||
<HelpTOCNode Title="DocumentInfo Constructor (Uri)" Url="html/M_Microsoft_ClearScript_DocumentInfo__ctor_1.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="35476320-4fba-4350-baac-eecc8097d8b5" Title="DocumentInfo Properties" Url="html/Properties_T_Microsoft_ClearScript_DocumentInfo.htm">
|
||||
<HelpTOCNode Title="Flags Property " Url="html/P_Microsoft_ClearScript_DocumentInfo_Flags.htm" />
|
||||
<HelpTOCNode Title="Name Property " Url="html/P_Microsoft_ClearScript_DocumentInfo_Name.htm" />
|
||||
<HelpTOCNode Title="SourceMapUri Property " Url="html/P_Microsoft_ClearScript_DocumentInfo_SourceMapUri.htm" />
|
||||
<HelpTOCNode Title="Uri Property " Url="html/P_Microsoft_ClearScript_DocumentInfo_Uri.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="DocumentInfo Methods" Url="html/Methods_T_Microsoft_ClearScript_DocumentInfo.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="503098e1-2367-4626-a4f0-aa38ae5068ea" Title="EventConnection(T) Class" Url="html/T_Microsoft_ClearScript_EventConnection_1.htm">
|
||||
<HelpTOCNode Id="913c906f-16c3-4837-ab6e-b4ad7b10e07d" Title="EventConnection(T) Methods" Url="html/Methods_T_Microsoft_ClearScript_EventConnection_1.htm">
|
||||
<HelpTOCNode Title="disconnect Method " Url="html/M_Microsoft_ClearScript_EventConnection_1_disconnect.htm" />
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="d78d5160-5bb6-4cf5-b73e-95985b8a8900" Title="EventSource(T) Class" Url="html/T_Microsoft_ClearScript_EventSource_1.htm">
|
||||
<HelpTOCNode Id="a50f03ef-6271-474c-b056-3d2bfed61103" Title="EventSource(T) Methods" Url="html/Methods_T_Microsoft_ClearScript_EventSource_1.htm">
|
||||
<HelpTOCNode Id="dc5d2345-3f6c-47b6-bb89-b70ffcfc819a" Title="EventSource(T) Class" Url="html/T_Microsoft_ClearScript_EventSource_1.htm">
|
||||
<HelpTOCNode Id="499b8fc1-8942-4758-9334-9aae32205d44" Title="EventSource(T) Methods" Url="html/Methods_T_Microsoft_ClearScript_EventSource_1.htm">
|
||||
<HelpTOCNode Title="connect Method " Url="html/M_Microsoft_ClearScript_EventSource_1_connect.htm" />
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="4f4d589a-9459-479f-8e5d-0bb4398b77b8" Title="ExtendedHostFunctions Class" Url="html/T_Microsoft_ClearScript_ExtendedHostFunctions.htm">
|
||||
<HelpTOCNode Id="596a91e6-b40c-400e-88f0-f4bfe7608ab2" Title="ExtendedHostFunctions Class" Url="html/T_Microsoft_ClearScript_ExtendedHostFunctions.htm">
|
||||
<HelpTOCNode Title="ExtendedHostFunctions Constructor " Url="html/M_Microsoft_ClearScript_ExtendedHostFunctions__ctor.htm" />
|
||||
<HelpTOCNode Id="40391fe0-1236-4c7a-8506-b6f1f5bf09ae" Title="ExtendedHostFunctions Methods" Url="html/Methods_T_Microsoft_ClearScript_ExtendedHostFunctions.htm">
|
||||
<HelpTOCNode Id="685d9c6f-1803-44e9-a2bd-ed8b4c1533a9" Title="ExtendedHostFunctions Methods" Url="html/Methods_T_Microsoft_ClearScript_ExtendedHostFunctions.htm">
|
||||
<HelpTOCNode Title="arrType(T) Method " Url="html/M_Microsoft_ClearScript_ExtendedHostFunctions_arrType__1.htm" />
|
||||
<HelpTOCNode Title="comType Method " Url="html/M_Microsoft_ClearScript_ExtendedHostFunctions_comType.htm" />
|
||||
<HelpTOCNode Id="6db5726b-a99e-4210-9655-2e120c54359f" Title="lib Method " Url="html/Overload_Microsoft_ClearScript_ExtendedHostFunctions_lib.htm">
|
||||
<HelpTOCNode Id="00ee9fe3-4c4e-483b-8ba3-351785f27f23" Title="lib Method " Url="html/Overload_Microsoft_ClearScript_ExtendedHostFunctions_lib.htm">
|
||||
<HelpTOCNode Title="lib Method (String[])" Url="html/M_Microsoft_ClearScript_ExtendedHostFunctions_lib_1.htm" />
|
||||
<HelpTOCNode Title="lib Method (HostTypeCollection, String[])" Url="html/M_Microsoft_ClearScript_ExtendedHostFunctions_lib.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="newComObj Method " Url="html/M_Microsoft_ClearScript_ExtendedHostFunctions_newComObj.htm" />
|
||||
<HelpTOCNode Id="e3225d27-d32e-40c3-bd32-f7930333e5da" Title="type Method " Url="html/Overload_Microsoft_ClearScript_ExtendedHostFunctions_type.htm">
|
||||
<HelpTOCNode Id="12614d4f-f103-46a5-bf92-d2c98e20680f" Title="type Method " Url="html/Overload_Microsoft_ClearScript_ExtendedHostFunctions_type.htm">
|
||||
<HelpTOCNode Title="type Method (Type)" Url="html/M_Microsoft_ClearScript_ExtendedHostFunctions_type_2.htm" />
|
||||
<HelpTOCNode Title="type Method (String, Object[])" Url="html/M_Microsoft_ClearScript_ExtendedHostFunctions_type.htm" />
|
||||
<HelpTOCNode Title="type Method (String, String, Object[])" Url="html/M_Microsoft_ClearScript_ExtendedHostFunctions_type_1.htm" />
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="e1563c4d-7aa0-4978-bb0d-51dbc301025e" Title="HostFunctions Class" Url="html/T_Microsoft_ClearScript_HostFunctions.htm">
|
||||
<HelpTOCNode Id="2e5ff465-71dd-4cb0-8c1e-08aadf26e9ec" Title="HostFunctions Class" Url="html/T_Microsoft_ClearScript_HostFunctions.htm">
|
||||
<HelpTOCNode Title="HostFunctions Constructor " Url="html/M_Microsoft_ClearScript_HostFunctions__ctor.htm" />
|
||||
<HelpTOCNode Id="f02d4015-2f64-4f0c-992f-6c2d0f50119e" Title="HostFunctions Methods" Url="html/Methods_T_Microsoft_ClearScript_HostFunctions.htm">
|
||||
<HelpTOCNode Id="07407439-f056-4bc1-9d7a-647df7cda1f1" Title="HostFunctions Methods" Url="html/Methods_T_Microsoft_ClearScript_HostFunctions.htm">
|
||||
<HelpTOCNode Title="asType(T) Method " Url="html/M_Microsoft_ClearScript_HostFunctions_asType__1.htm" />
|
||||
<HelpTOCNode Title="cast(T) Method " Url="html/M_Microsoft_ClearScript_HostFunctions_cast__1.htm" />
|
||||
<HelpTOCNode Title="del(T) Method " Url="html/M_Microsoft_ClearScript_HostFunctions_del__1.htm" />
|
||||
<HelpTOCNode Title="flags(T) Method " Url="html/M_Microsoft_ClearScript_HostFunctions_flags__1.htm" />
|
||||
<HelpTOCNode Id="36c7c7b1-4576-4679-8454-d9961d0c5ad8" Title="func Method " Url="html/Overload_Microsoft_ClearScript_HostFunctions_func.htm">
|
||||
<HelpTOCNode Id="3834b006-4fa9-4344-a2cf-32d9744cd2a0" Title="func Method " Url="html/Overload_Microsoft_ClearScript_HostFunctions_func.htm">
|
||||
<HelpTOCNode Title="func(T) Method (Int32, Object)" Url="html/M_Microsoft_ClearScript_HostFunctions_func__1.htm" />
|
||||
<HelpTOCNode Title="func Method (Int32, Object)" Url="html/M_Microsoft_ClearScript_HostFunctions_func.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="getElement Method " Url="html/M_Microsoft_ClearScript_HostFunctions_getElement.htm" />
|
||||
<HelpTOCNode Id="9a5a2910-bcfb-4a47-b13d-efbed2230330" Title="getProperty Method " Url="html/Overload_Microsoft_ClearScript_HostFunctions_getProperty.htm">
|
||||
<HelpTOCNode Id="893d7a7b-fc69-452b-be57-993990075b2c" Title="getProperty Method " Url="html/Overload_Microsoft_ClearScript_HostFunctions_getProperty.htm">
|
||||
<HelpTOCNode Title="getProperty Method (IDynamicMetaObjectProvider, String)" Url="html/M_Microsoft_ClearScript_HostFunctions_getProperty_1.htm" />
|
||||
<HelpTOCNode Title="getProperty Method (IPropertyBag, String)" Url="html/M_Microsoft_ClearScript_HostFunctions_getProperty.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="isNull Method " Url="html/M_Microsoft_ClearScript_HostFunctions_isNull.htm" />
|
||||
<HelpTOCNode Title="isType(T) Method " Url="html/M_Microsoft_ClearScript_HostFunctions_isType__1.htm" />
|
||||
<HelpTOCNode Id="696d79ac-41d9-4025-840e-4613fa29e764" Title="isTypeObj Method " Url="html/Overload_Microsoft_ClearScript_HostFunctions_isTypeObj.htm">
|
||||
<HelpTOCNode Id="6fe24284-328d-4ece-a696-ba78bb86d2c6" Title="isTypeObj Method " Url="html/Overload_Microsoft_ClearScript_HostFunctions_isTypeObj.htm">
|
||||
<HelpTOCNode Title="isTypeObj(T) Method " Url="html/M_Microsoft_ClearScript_HostFunctions_isTypeObj__1.htm" />
|
||||
<HelpTOCNode Title="isTypeObj Method (Object)" Url="html/M_Microsoft_ClearScript_HostFunctions_isTypeObj.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="1ac1ad6b-3f5e-45f5-8d2d-7243b65c4b68" Title="newArr Method " Url="html/Overload_Microsoft_ClearScript_HostFunctions_newArr.htm">
|
||||
<HelpTOCNode Id="38361e8f-7586-465b-a7c0-a86583a814cc" Title="newArr Method " Url="html/Overload_Microsoft_ClearScript_HostFunctions_newArr.htm">
|
||||
<HelpTOCNode Title="newArr(T) Method (Int32[])" Url="html/M_Microsoft_ClearScript_HostFunctions_newArr__1.htm" />
|
||||
<HelpTOCNode Title="newArr Method (Int32[])" Url="html/M_Microsoft_ClearScript_HostFunctions_newArr.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="f71c7bfe-a82a-41d4-b032-35f16661d96e" Title="newObj Method " Url="html/Overload_Microsoft_ClearScript_HostFunctions_newObj.htm">
|
||||
<HelpTOCNode Id="2eca7873-1508-4da5-8fb0-c715fe1e447f" Title="newObj Method " Url="html/Overload_Microsoft_ClearScript_HostFunctions_newObj.htm">
|
||||
<HelpTOCNode Title="newObj Method " Url="html/M_Microsoft_ClearScript_HostFunctions_newObj.htm" />
|
||||
<HelpTOCNode Title="newObj(T) Method (Object[])" Url="html/M_Microsoft_ClearScript_HostFunctions_newObj__1.htm" />
|
||||
<HelpTOCNode Title="newObj Method (IDynamicMetaObjectProvider, Object[])" Url="html/M_Microsoft_ClearScript_HostFunctions_newObj_1.htm" />
|
||||
|
@ -76,12 +90,12 @@
|
|||
<HelpTOCNode Title="newVar(T) Method " Url="html/M_Microsoft_ClearScript_HostFunctions_newVar__1.htm" />
|
||||
<HelpTOCNode Title="proc Method " Url="html/M_Microsoft_ClearScript_HostFunctions_proc.htm" />
|
||||
<HelpTOCNode Title="removeElement Method " Url="html/M_Microsoft_ClearScript_HostFunctions_removeElement.htm" />
|
||||
<HelpTOCNode Id="f2882e56-b06f-4f5f-b195-a2a3bcf7ecbf" Title="removeProperty Method " Url="html/Overload_Microsoft_ClearScript_HostFunctions_removeProperty.htm">
|
||||
<HelpTOCNode Id="8bcae6b5-7ee2-455c-8e19-9d33ebb1db82" Title="removeProperty Method " Url="html/Overload_Microsoft_ClearScript_HostFunctions_removeProperty.htm">
|
||||
<HelpTOCNode Title="removeProperty Method (IDynamicMetaObjectProvider, String)" Url="html/M_Microsoft_ClearScript_HostFunctions_removeProperty_1.htm" />
|
||||
<HelpTOCNode Title="removeProperty Method (IPropertyBag, String)" Url="html/M_Microsoft_ClearScript_HostFunctions_removeProperty.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="setElement Method " Url="html/M_Microsoft_ClearScript_HostFunctions_setElement.htm" />
|
||||
<HelpTOCNode Id="ec6681f5-30ca-4280-a247-9ac591a97629" Title="setProperty Method " Url="html/Overload_Microsoft_ClearScript_HostFunctions_setProperty.htm">
|
||||
<HelpTOCNode Id="6a674015-2c20-4bc0-9d12-19cd3ec64266" Title="setProperty Method " Url="html/Overload_Microsoft_ClearScript_HostFunctions_setProperty.htm">
|
||||
<HelpTOCNode Title="setProperty Method (IDynamicMetaObjectProvider, String, Object)" Url="html/M_Microsoft_ClearScript_HostFunctions_setProperty_1.htm" />
|
||||
<HelpTOCNode Title="setProperty Method (IPropertyBag, String, Object)" Url="html/M_Microsoft_ClearScript_HostFunctions_setProperty.htm" />
|
||||
</HelpTOCNode>
|
||||
|
@ -99,15 +113,15 @@
|
|||
<HelpTOCNode Title="toUInt32 Method " Url="html/M_Microsoft_ClearScript_HostFunctions_toUInt32.htm" />
|
||||
<HelpTOCNode Title="toUInt64 Method " Url="html/M_Microsoft_ClearScript_HostFunctions_toUInt64.htm" />
|
||||
<HelpTOCNode Title="tryCatch Method " Url="html/M_Microsoft_ClearScript_HostFunctions_tryCatch.htm" />
|
||||
<HelpTOCNode Id="7d9a42e8-b6d1-401c-a35d-19d13b72f808" Title="typeOf Method " Url="html/Overload_Microsoft_ClearScript_HostFunctions_typeOf.htm">
|
||||
<HelpTOCNode Id="2106c43c-ee0a-4bc7-85c4-7656a4297fe0" Title="typeOf Method " Url="html/Overload_Microsoft_ClearScript_HostFunctions_typeOf.htm">
|
||||
<HelpTOCNode Title="typeOf(T) Method " Url="html/M_Microsoft_ClearScript_HostFunctions_typeOf__1.htm" />
|
||||
<HelpTOCNode Title="typeOf Method (Object)" Url="html/M_Microsoft_ClearScript_HostFunctions_typeOf.htm" />
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="HostItemFlags Enumeration" Url="html/T_Microsoft_ClearScript_HostItemFlags.htm" />
|
||||
<HelpTOCNode Id="a23c3f0c-e1fa-4867-b54d-a17256c27ad9" Title="HostTypeCollection Class" Url="html/T_Microsoft_ClearScript_HostTypeCollection.htm">
|
||||
<HelpTOCNode Id="7efff1d3-2a3e-4d6c-948a-bcc1b25c9638" Title="HostTypeCollection Constructor " Url="html/Overload_Microsoft_ClearScript_HostTypeCollection__ctor.htm">
|
||||
<HelpTOCNode Id="df089b98-c95e-4ca2-915f-edd61c15825d" Title="HostTypeCollection Class" Url="html/T_Microsoft_ClearScript_HostTypeCollection.htm">
|
||||
<HelpTOCNode Id="e706139b-1328-447b-a53c-b67a13086505" Title="HostTypeCollection Constructor " Url="html/Overload_Microsoft_ClearScript_HostTypeCollection__ctor.htm">
|
||||
<HelpTOCNode Title="HostTypeCollection Constructor " Url="html/M_Microsoft_ClearScript_HostTypeCollection__ctor.htm" />
|
||||
<HelpTOCNode Title="HostTypeCollection Constructor (Assembly[])" Url="html/M_Microsoft_ClearScript_HostTypeCollection__ctor_3.htm" />
|
||||
<HelpTOCNode Title="HostTypeCollection Constructor (String[])" Url="html/M_Microsoft_ClearScript_HostTypeCollection__ctor_4.htm" />
|
||||
|
@ -115,14 +129,14 @@
|
|||
<HelpTOCNode Title="HostTypeCollection Constructor (Predicate(Type), String[])" Url="html/M_Microsoft_ClearScript_HostTypeCollection__ctor_2.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="HostTypeCollection Properties" Url="html/Properties_T_Microsoft_ClearScript_HostTypeCollection.htm" />
|
||||
<HelpTOCNode Id="2eca89a5-774a-430e-9c37-dc7eb87e9d32" Title="HostTypeCollection Methods" Url="html/Methods_T_Microsoft_ClearScript_HostTypeCollection.htm">
|
||||
<HelpTOCNode Id="e2a6034a-da10-4ca8-996f-4fcc8608c356" Title="AddAssembly Method " Url="html/Overload_Microsoft_ClearScript_HostTypeCollection_AddAssembly.htm">
|
||||
<HelpTOCNode Id="34c0b74e-39cf-4b2f-aa73-8c55e930ebff" Title="HostTypeCollection Methods" Url="html/Methods_T_Microsoft_ClearScript_HostTypeCollection.htm">
|
||||
<HelpTOCNode Id="61614218-011c-4062-a0d4-afb33abd9319" Title="AddAssembly Method " Url="html/Overload_Microsoft_ClearScript_HostTypeCollection_AddAssembly.htm">
|
||||
<HelpTOCNode Title="AddAssembly Method (Assembly)" Url="html/M_Microsoft_ClearScript_HostTypeCollection_AddAssembly.htm" />
|
||||
<HelpTOCNode Title="AddAssembly Method (String)" Url="html/M_Microsoft_ClearScript_HostTypeCollection_AddAssembly_2.htm" />
|
||||
<HelpTOCNode Title="AddAssembly Method (Assembly, Predicate(Type))" Url="html/M_Microsoft_ClearScript_HostTypeCollection_AddAssembly_1.htm" />
|
||||
<HelpTOCNode Title="AddAssembly Method (String, Predicate(Type))" Url="html/M_Microsoft_ClearScript_HostTypeCollection_AddAssembly_3.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="f0ca7b64-ad1f-4af0-bbeb-6d1975143b9e" Title="AddType Method " Url="html/Overload_Microsoft_ClearScript_HostTypeCollection_AddType.htm">
|
||||
<HelpTOCNode Id="3784b2d2-c739-49e8-a127-e5fc8cd90ada" Title="AddType Method " Url="html/Overload_Microsoft_ClearScript_HostTypeCollection_AddType.htm">
|
||||
<HelpTOCNode Title="AddType Method (Type)" Url="html/M_Microsoft_ClearScript_HostTypeCollection_AddType_2.htm" />
|
||||
<HelpTOCNode Title="AddType Method (String, Type[])" Url="html/M_Microsoft_ClearScript_HostTypeCollection_AddType_1.htm" />
|
||||
<HelpTOCNode Title="AddType Method (String, String, Type[])" Url="html/M_Microsoft_ClearScript_HostTypeCollection_AddType.htm" />
|
||||
|
@ -131,22 +145,22 @@
|
|||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="HostTypeCollection Events" Url="html/Events_T_Microsoft_ClearScript_HostTypeCollection.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="0ac192a3-cbd0-4618-833c-c4031deb685b" Title="ImmutableValueAttribute Class" Url="html/T_Microsoft_ClearScript_ImmutableValueAttribute.htm">
|
||||
<HelpTOCNode Id="11fb39bd-f479-424b-848c-f3f0ba7b9c40" Title="ImmutableValueAttribute Class" Url="html/T_Microsoft_ClearScript_ImmutableValueAttribute.htm">
|
||||
<HelpTOCNode Title="ImmutableValueAttribute Constructor " Url="html/M_Microsoft_ClearScript_ImmutableValueAttribute__ctor.htm" />
|
||||
<HelpTOCNode Title="ImmutableValueAttribute Properties" Url="html/Properties_T_Microsoft_ClearScript_ImmutableValueAttribute.htm" />
|
||||
<HelpTOCNode Title="ImmutableValueAttribute Methods" Url="html/Methods_T_Microsoft_ClearScript_ImmutableValueAttribute.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="167686da-f7ea-4984-8ebf-dbeadea84919" Title="IPropertyBag Interface" Url="html/T_Microsoft_ClearScript_IPropertyBag.htm">
|
||||
<HelpTOCNode Id="11f28233-8e8d-4ad1-b5ad-acdbe7114c92" Title="IPropertyBag Interface" Url="html/T_Microsoft_ClearScript_IPropertyBag.htm">
|
||||
<HelpTOCNode Title="IPropertyBag Properties" Url="html/Properties_T_Microsoft_ClearScript_IPropertyBag.htm" />
|
||||
<HelpTOCNode Title="IPropertyBag Methods" Url="html/Methods_T_Microsoft_ClearScript_IPropertyBag.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="d0d38835-190c-417c-83bf-4faef5fbba33" Title="IScriptableObject Interface" Url="html/T_Microsoft_ClearScript_IScriptableObject.htm">
|
||||
<HelpTOCNode Id="f9a239f8-477f-4c9c-a177-b7681b3509e1" Title="IScriptableObject Methods" Url="html/Methods_T_Microsoft_ClearScript_IScriptableObject.htm">
|
||||
<HelpTOCNode Id="ae25c0cc-5ba3-49e8-b1f4-df529fd14a84" Title="IScriptableObject Interface" Url="html/T_Microsoft_ClearScript_IScriptableObject.htm">
|
||||
<HelpTOCNode Id="52dad636-0888-469c-9be3-b918b39efd10" Title="IScriptableObject Methods" Url="html/Methods_T_Microsoft_ClearScript_IScriptableObject.htm">
|
||||
<HelpTOCNode Title="OnExposedToScriptCode Method " Url="html/M_Microsoft_ClearScript_IScriptableObject_OnExposedToScriptCode.htm" />
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="91a5f052-d387-439d-8387-425f7f521bd2" Title="IScriptEngineException Interface" Url="html/T_Microsoft_ClearScript_IScriptEngineException.htm">
|
||||
<HelpTOCNode Id="f23c4ee1-ed7e-4727-995e-a5149b696a83" Title="IScriptEngineException Properties" Url="html/Properties_T_Microsoft_ClearScript_IScriptEngineException.htm">
|
||||
<HelpTOCNode Id="08d61c27-4032-4d5b-b079-c0c0848c6e61" Title="IScriptEngineException Interface" Url="html/T_Microsoft_ClearScript_IScriptEngineException.htm">
|
||||
<HelpTOCNode Id="5a7d8e3c-286e-423b-a389-b204fb1948a5" Title="IScriptEngineException Properties" Url="html/Properties_T_Microsoft_ClearScript_IScriptEngineException.htm">
|
||||
<HelpTOCNode Title="EngineName Property " Url="html/P_Microsoft_ClearScript_IScriptEngineException_EngineName.htm" />
|
||||
<HelpTOCNode Title="ErrorDetails Property " Url="html/P_Microsoft_ClearScript_IScriptEngineException_ErrorDetails.htm" />
|
||||
<HelpTOCNode Title="ExecutionStarted Property " Url="html/P_Microsoft_ClearScript_IScriptEngineException_ExecutionStarted.htm" />
|
||||
|
@ -157,27 +171,27 @@
|
|||
<HelpTOCNode Title="ScriptException Property " Url="html/P_Microsoft_ClearScript_IScriptEngineException_ScriptException.htm" />
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="aadec378-69ff-455e-baf7-faeaa7e74385" Title="NoDefaultScriptAccessAttribute Class" Url="html/T_Microsoft_ClearScript_NoDefaultScriptAccessAttribute.htm">
|
||||
<HelpTOCNode Id="625a6af5-9075-4c37-a44b-98c977b17bd0" Title="NoDefaultScriptAccessAttribute Class" Url="html/T_Microsoft_ClearScript_NoDefaultScriptAccessAttribute.htm">
|
||||
<HelpTOCNode Title="NoDefaultScriptAccessAttribute Constructor " Url="html/M_Microsoft_ClearScript_NoDefaultScriptAccessAttribute__ctor.htm" />
|
||||
<HelpTOCNode Title="NoDefaultScriptAccessAttribute Properties" Url="html/Properties_T_Microsoft_ClearScript_NoDefaultScriptAccessAttribute.htm" />
|
||||
<HelpTOCNode Title="NoDefaultScriptAccessAttribute Methods" Url="html/Methods_T_Microsoft_ClearScript_NoDefaultScriptAccessAttribute.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="db9b43d0-6774-4f2f-b98b-a6763eb69603" Title="NoScriptAccessAttribute Class" Url="html/T_Microsoft_ClearScript_NoScriptAccessAttribute.htm">
|
||||
<HelpTOCNode Id="60f8927b-9405-4caa-b64d-71460d73f3a6" Title="NoScriptAccessAttribute Class" Url="html/T_Microsoft_ClearScript_NoScriptAccessAttribute.htm">
|
||||
<HelpTOCNode Title="NoScriptAccessAttribute Constructor " Url="html/M_Microsoft_ClearScript_NoScriptAccessAttribute__ctor.htm" />
|
||||
<HelpTOCNode Title="NoScriptAccessAttribute Properties" Url="html/Properties_T_Microsoft_ClearScript_NoScriptAccessAttribute.htm" />
|
||||
<HelpTOCNode Title="NoScriptAccessAttribute Methods" Url="html/Methods_T_Microsoft_ClearScript_NoScriptAccessAttribute.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="63bf58a6-70fe-49c3-8db4-0b978f62291a" Title="PropertyBag Class" Url="html/T_Microsoft_ClearScript_PropertyBag.htm">
|
||||
<HelpTOCNode Id="945a224b-acfc-4be4-a1eb-c698b87ce4e1" Title="PropertyBag Constructor " Url="html/Overload_Microsoft_ClearScript_PropertyBag__ctor.htm">
|
||||
<HelpTOCNode Id="049cd974-2640-429f-b539-ae2384058471" Title="PropertyBag Class" Url="html/T_Microsoft_ClearScript_PropertyBag.htm">
|
||||
<HelpTOCNode Id="625666d3-d58e-49e4-9cac-1773c3fe9989" Title="PropertyBag Constructor " Url="html/Overload_Microsoft_ClearScript_PropertyBag__ctor.htm">
|
||||
<HelpTOCNode Title="PropertyBag Constructor " Url="html/M_Microsoft_ClearScript_PropertyBag__ctor.htm" />
|
||||
<HelpTOCNode Title="PropertyBag Constructor (Boolean)" Url="html/M_Microsoft_ClearScript_PropertyBag__ctor_1.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="4982c84d-2ae5-4c06-b61c-6ce8831d7e64" Title="PropertyBag Properties" Url="html/Properties_T_Microsoft_ClearScript_PropertyBag.htm">
|
||||
<HelpTOCNode Id="9f246d1f-3d39-47f5-b32f-810c3056c8c3" Title="PropertyBag Properties" Url="html/Properties_T_Microsoft_ClearScript_PropertyBag.htm">
|
||||
<HelpTOCNode Title="Item Property " Url="html/P_Microsoft_ClearScript_PropertyBag_Item.htm" />
|
||||
<HelpTOCNode Title="Keys Property " Url="html/P_Microsoft_ClearScript_PropertyBag_Keys.htm" />
|
||||
<HelpTOCNode Title="Values Property " Url="html/P_Microsoft_ClearScript_PropertyBag_Values.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="b78394fb-ec78-4bc8-97de-49dc0713c7bf" Title="PropertyBag Methods" Url="html/Methods_T_Microsoft_ClearScript_PropertyBag.htm">
|
||||
<HelpTOCNode Id="6202c070-16fc-400a-9f66-2a8a40cf305b" Title="PropertyBag Methods" Url="html/Methods_T_Microsoft_ClearScript_PropertyBag.htm">
|
||||
<HelpTOCNode Title="Add Method " Url="html/M_Microsoft_ClearScript_PropertyBag_Add.htm" />
|
||||
<HelpTOCNode Title="ClearNoCheck Method " Url="html/M_Microsoft_ClearScript_PropertyBag_ClearNoCheck.htm" />
|
||||
<HelpTOCNode Title="ContainsKey Method " Url="html/M_Microsoft_ClearScript_PropertyBag_ContainsKey.htm" />
|
||||
|
@ -186,14 +200,14 @@
|
|||
<HelpTOCNode Title="SetPropertyNoCheck Method " Url="html/M_Microsoft_ClearScript_PropertyBag_SetPropertyNoCheck.htm" />
|
||||
<HelpTOCNode Title="TryGetValue Method " Url="html/M_Microsoft_ClearScript_PropertyBag_TryGetValue.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="587ff661-66cf-4be8-b82a-55f4690fb886" Title="PropertyBag Events" Url="html/Events_T_Microsoft_ClearScript_PropertyBag.htm">
|
||||
<HelpTOCNode Id="a7f8a34f-cb4d-4c72-a439-c2f56a6dec4c" Title="PropertyBag Events" Url="html/Events_T_Microsoft_ClearScript_PropertyBag.htm">
|
||||
<HelpTOCNode Title="PropertyChanged Event" Url="html/E_Microsoft_ClearScript_PropertyBag_PropertyChanged.htm" />
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="ScriptAccess Enumeration" Url="html/T_Microsoft_ClearScript_ScriptAccess.htm" />
|
||||
<HelpTOCNode Id="f23106d1-2347-412c-80dc-1372f871cd07" Title="ScriptEngine Class" Url="html/T_Microsoft_ClearScript_ScriptEngine.htm">
|
||||
<HelpTOCNode Id="86260697-5510-4634-b188-06e0970ef1cb" Title="ScriptEngine Class" Url="html/T_Microsoft_ClearScript_ScriptEngine.htm">
|
||||
<HelpTOCNode Title="ScriptEngine Constructor " Url="html/M_Microsoft_ClearScript_ScriptEngine__ctor.htm" />
|
||||
<HelpTOCNode Id="05cec438-a251-4c14-8ace-81f2da545dec" Title="ScriptEngine Properties" Url="html/Properties_T_Microsoft_ClearScript_ScriptEngine.htm">
|
||||
<HelpTOCNode Id="efd38a2a-85de-4063-ae17-87126fdb7619" Title="ScriptEngine Properties" Url="html/Properties_T_Microsoft_ClearScript_ScriptEngine.htm">
|
||||
<HelpTOCNode Title="AccessContext Property " Url="html/P_Microsoft_ClearScript_ScriptEngine_AccessContext.htm" />
|
||||
<HelpTOCNode Title="AllowReflection Property " Url="html/P_Microsoft_ClearScript_ScriptEngine_AllowReflection.htm" />
|
||||
<HelpTOCNode Title="ContinuationCallback Property " Url="html/P_Microsoft_ClearScript_ScriptEngine_ContinuationCallback.htm" />
|
||||
|
@ -209,8 +223,8 @@
|
|||
<HelpTOCNode Title="Script Property " Url="html/P_Microsoft_ClearScript_ScriptEngine_Script.htm" />
|
||||
<HelpTOCNode Title="UseReflectionBindFallback Property " Url="html/P_Microsoft_ClearScript_ScriptEngine_UseReflectionBindFallback.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="c287378c-be9a-4761-9702-bf52d8f8affd" Title="ScriptEngine Methods" Url="html/Methods_T_Microsoft_ClearScript_ScriptEngine.htm">
|
||||
<HelpTOCNode Id="8de23d22-9c7f-4ab5-92c5-cbe34b90fa62" Title="AddCOMObject Method " Url="html/Overload_Microsoft_ClearScript_ScriptEngine_AddCOMObject.htm">
|
||||
<HelpTOCNode Id="861e3380-466e-4398-bd77-e06522baed51" Title="ScriptEngine Methods" Url="html/Methods_T_Microsoft_ClearScript_ScriptEngine.htm">
|
||||
<HelpTOCNode Id="780e135f-3277-46d7-8860-4c018da4579c" Title="AddCOMObject Method " Url="html/Overload_Microsoft_ClearScript_ScriptEngine_AddCOMObject.htm">
|
||||
<HelpTOCNode Title="AddCOMObject Method (String, Guid)" Url="html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject_4.htm" />
|
||||
<HelpTOCNode Title="AddCOMObject Method (String, String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject_6.htm" />
|
||||
<HelpTOCNode Title="AddCOMObject Method (String, HostItemFlags, Guid)" Url="html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject.htm" />
|
||||
|
@ -220,7 +234,7 @@
|
|||
<HelpTOCNode Title="AddCOMObject Method (String, HostItemFlags, Guid, String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject_1.htm" />
|
||||
<HelpTOCNode Title="AddCOMObject Method (String, HostItemFlags, String, String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_AddCOMObject_3.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="0b36c06f-6025-4e07-ab79-a669159b3ca7" Title="AddCOMType Method " Url="html/Overload_Microsoft_ClearScript_ScriptEngine_AddCOMType.htm">
|
||||
<HelpTOCNode Id="130fb3fd-70dd-4170-bf57-b9bf213676be" Title="AddCOMType Method " Url="html/Overload_Microsoft_ClearScript_ScriptEngine_AddCOMType.htm">
|
||||
<HelpTOCNode Title="AddCOMType Method (String, Guid)" Url="html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType_4.htm" />
|
||||
<HelpTOCNode Title="AddCOMType Method (String, String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType_6.htm" />
|
||||
<HelpTOCNode Title="AddCOMType Method (String, HostItemFlags, Guid)" Url="html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType.htm" />
|
||||
|
@ -230,11 +244,11 @@
|
|||
<HelpTOCNode Title="AddCOMType Method (String, HostItemFlags, Guid, String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType_1.htm" />
|
||||
<HelpTOCNode Title="AddCOMType Method (String, HostItemFlags, String, String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_AddCOMType_3.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="b3f32fb0-c37e-43d0-9a24-e79713987a9c" Title="AddHostObject Method " Url="html/Overload_Microsoft_ClearScript_ScriptEngine_AddHostObject.htm">
|
||||
<HelpTOCNode Id="aab5d077-98ad-4ded-8897-4bd8b40ff100" Title="AddHostObject Method " Url="html/Overload_Microsoft_ClearScript_ScriptEngine_AddHostObject.htm">
|
||||
<HelpTOCNode Title="AddHostObject Method (String, Object)" Url="html/M_Microsoft_ClearScript_ScriptEngine_AddHostObject_1.htm" />
|
||||
<HelpTOCNode Title="AddHostObject Method (String, HostItemFlags, Object)" Url="html/M_Microsoft_ClearScript_ScriptEngine_AddHostObject.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="b77d464b-41e6-4618-a611-1328e0d7840a" Title="AddHostType Method " Url="html/Overload_Microsoft_ClearScript_ScriptEngine_AddHostType.htm">
|
||||
<HelpTOCNode Id="792eebb1-1d79-47e5-befd-6184bfcf3fee" Title="AddHostType Method " Url="html/Overload_Microsoft_ClearScript_ScriptEngine_AddHostType.htm">
|
||||
<HelpTOCNode Title="AddHostType Method (Type)" Url="html/M_Microsoft_ClearScript_ScriptEngine_AddHostType_7.htm" />
|
||||
<HelpTOCNode Title="AddHostType Method (String, Type)" Url="html/M_Microsoft_ClearScript_ScriptEngine_AddHostType_6.htm" />
|
||||
<HelpTOCNode Title="AddHostType Method (HostItemFlags, Type)" Url="html/M_Microsoft_ClearScript_ScriptEngine_AddHostType.htm" />
|
||||
|
@ -244,24 +258,26 @@
|
|||
<HelpTOCNode Title="AddHostType Method (String, String, String, Type[])" Url="html/M_Microsoft_ClearScript_ScriptEngine_AddHostType_4.htm" />
|
||||
<HelpTOCNode Title="AddHostType Method (String, HostItemFlags, String, String, Type[])" Url="html/M_Microsoft_ClearScript_ScriptEngine_AddHostType_1.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="102233a2-25a6-4170-9da4-da86b132db35" Title="AddRestrictedHostObject Method " Url="html/Overload_Microsoft_ClearScript_ScriptEngine_AddRestrictedHostObject.htm">
|
||||
<HelpTOCNode Id="511cd9a5-3dae-49d3-aa1e-eca3f8a765bb" Title="AddRestrictedHostObject Method " Url="html/Overload_Microsoft_ClearScript_ScriptEngine_AddRestrictedHostObject.htm">
|
||||
<HelpTOCNode Title="AddRestrictedHostObject(T) Method (String, T)" Url="html/M_Microsoft_ClearScript_ScriptEngine_AddRestrictedHostObject__1_1.htm" />
|
||||
<HelpTOCNode Title="AddRestrictedHostObject(T) Method (String, HostItemFlags, T)" Url="html/M_Microsoft_ClearScript_ScriptEngine_AddRestrictedHostObject__1.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="CollectGarbage Method " Url="html/M_Microsoft_ClearScript_ScriptEngine_CollectGarbage.htm" />
|
||||
<HelpTOCNode Id="7c8feddc-6ee6-4516-9512-7debd9bac707" Title="Dispose Method " Url="html/Overload_Microsoft_ClearScript_ScriptEngine_Dispose.htm">
|
||||
<HelpTOCNode Id="fdfabbee-758a-40fe-8483-ff2159086be5" Title="Dispose Method " Url="html/Overload_Microsoft_ClearScript_ScriptEngine_Dispose.htm">
|
||||
<HelpTOCNode Title="Dispose Method " Url="html/M_Microsoft_ClearScript_ScriptEngine_Dispose.htm" />
|
||||
<HelpTOCNode Title="Dispose Method (Boolean)" Url="html/M_Microsoft_ClearScript_ScriptEngine_Dispose_1.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="baa564df-d7c9-450f-804c-0aa090e86e3f" Title="Evaluate Method " Url="html/Overload_Microsoft_ClearScript_ScriptEngine_Evaluate.htm">
|
||||
<HelpTOCNode Title="Evaluate Method (String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_Evaluate.htm" />
|
||||
<HelpTOCNode Title="Evaluate Method (String, String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_Evaluate_2.htm" />
|
||||
<HelpTOCNode Title="Evaluate Method (String, Boolean, String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_Evaluate_1.htm" />
|
||||
<HelpTOCNode Id="9c3cd995-db2a-4d21-9630-90f9ad807451" Title="Evaluate Method " Url="html/Overload_Microsoft_ClearScript_ScriptEngine_Evaluate.htm">
|
||||
<HelpTOCNode Title="Evaluate Method (String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_Evaluate_1.htm" />
|
||||
<HelpTOCNode Title="Evaluate Method (String, String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_Evaluate_3.htm" />
|
||||
<HelpTOCNode Title="Evaluate Method (DocumentInfo, String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_Evaluate.htm" />
|
||||
<HelpTOCNode Title="Evaluate Method (String, Boolean, String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_Evaluate_2.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="624fc958-5bf5-415d-bbc8-e003ecfeb73e" Title="Execute Method " Url="html/Overload_Microsoft_ClearScript_ScriptEngine_Execute.htm">
|
||||
<HelpTOCNode Title="Execute Method (String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_Execute.htm" />
|
||||
<HelpTOCNode Title="Execute Method (String, String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_Execute_2.htm" />
|
||||
<HelpTOCNode Title="Execute Method (String, Boolean, String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_Execute_1.htm" />
|
||||
<HelpTOCNode Id="ac146bfe-823a-4c1d-8fa0-1c1d0a4ad033" Title="Execute Method " Url="html/Overload_Microsoft_ClearScript_ScriptEngine_Execute.htm">
|
||||
<HelpTOCNode Title="Execute Method (String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_Execute_1.htm" />
|
||||
<HelpTOCNode Title="Execute Method (String, String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_Execute_3.htm" />
|
||||
<HelpTOCNode Title="Execute Method (DocumentInfo, String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_Execute.htm" />
|
||||
<HelpTOCNode Title="Execute Method (String, Boolean, String)" Url="html/M_Microsoft_ClearScript_ScriptEngine_Execute_2.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="ExecuteCommand Method " Url="html/M_Microsoft_ClearScript_ScriptEngine_ExecuteCommand.htm" />
|
||||
<HelpTOCNode Title="Finalize Method " Url="html/M_Microsoft_ClearScript_ScriptEngine_Finalize.htm" />
|
||||
|
@ -270,48 +286,48 @@
|
|||
<HelpTOCNode Title="Invoke Method " Url="html/M_Microsoft_ClearScript_ScriptEngine_Invoke.htm" />
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="3daed80f-cf1d-4d23-bea4-8dd9fd3a179f" Title="ScriptEngineException Class" Url="html/T_Microsoft_ClearScript_ScriptEngineException.htm">
|
||||
<HelpTOCNode Id="87dd1e26-206f-489b-aec9-f7f4afa427e4" Title="ScriptEngineException Constructor " Url="html/Overload_Microsoft_ClearScript_ScriptEngineException__ctor.htm">
|
||||
<HelpTOCNode Id="c42da4b5-786e-423e-abad-69446802ecdf" Title="ScriptEngineException Class" Url="html/T_Microsoft_ClearScript_ScriptEngineException.htm">
|
||||
<HelpTOCNode Id="f631a4b4-b0c8-47cf-9821-31f40f788a38" Title="ScriptEngineException Constructor " Url="html/Overload_Microsoft_ClearScript_ScriptEngineException__ctor.htm">
|
||||
<HelpTOCNode Title="ScriptEngineException Constructor " Url="html/M_Microsoft_ClearScript_ScriptEngineException__ctor.htm" />
|
||||
<HelpTOCNode Title="ScriptEngineException Constructor (String)" Url="html/M_Microsoft_ClearScript_ScriptEngineException__ctor_2.htm" />
|
||||
<HelpTOCNode Title="ScriptEngineException Constructor (SerializationInfo, StreamingContext)" Url="html/M_Microsoft_ClearScript_ScriptEngineException__ctor_1.htm" />
|
||||
<HelpTOCNode Title="ScriptEngineException Constructor (String, Exception)" Url="html/M_Microsoft_ClearScript_ScriptEngineException__ctor_3.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="78a0809e-45e4-4dad-81da-1cfdc5b30d59" Title="ScriptEngineException Properties" Url="html/Properties_T_Microsoft_ClearScript_ScriptEngineException.htm">
|
||||
<HelpTOCNode Id="6da0721e-4eaf-402c-bb30-f1aa4e7647fa" Title="ScriptEngineException Properties" Url="html/Properties_T_Microsoft_ClearScript_ScriptEngineException.htm">
|
||||
<HelpTOCNode Title="EngineName Property " Url="html/P_Microsoft_ClearScript_ScriptEngineException_EngineName.htm" />
|
||||
<HelpTOCNode Title="ErrorDetails Property " Url="html/P_Microsoft_ClearScript_ScriptEngineException_ErrorDetails.htm" />
|
||||
<HelpTOCNode Title="ExecutionStarted Property " Url="html/P_Microsoft_ClearScript_ScriptEngineException_ExecutionStarted.htm" />
|
||||
<HelpTOCNode Title="IsFatal Property " Url="html/P_Microsoft_ClearScript_ScriptEngineException_IsFatal.htm" />
|
||||
<HelpTOCNode Title="ScriptException Property " Url="html/P_Microsoft_ClearScript_ScriptEngineException_ScriptException.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="ed5e791e-9a4e-44e8-b611-79883137d9dc" Title="ScriptEngineException Methods" Url="html/Methods_T_Microsoft_ClearScript_ScriptEngineException.htm">
|
||||
<HelpTOCNode Id="a5ae8583-3671-4d6f-8666-eecb32a053cb" Title="ScriptEngineException Methods" Url="html/Methods_T_Microsoft_ClearScript_ScriptEngineException.htm">
|
||||
<HelpTOCNode Title="GetObjectData Method " Url="html/M_Microsoft_ClearScript_ScriptEngineException_GetObjectData.htm" />
|
||||
<HelpTOCNode Title="ToString Method " Url="html/M_Microsoft_ClearScript_ScriptEngineException_ToString.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="ScriptEngineException Events" Url="html/Events_T_Microsoft_ClearScript_ScriptEngineException.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="a2d06be2-544d-4a32-b0ba-6500a71c958e" Title="ScriptInterruptedException Class" Url="html/T_Microsoft_ClearScript_ScriptInterruptedException.htm">
|
||||
<HelpTOCNode Id="49045506-5810-4823-bc25-75e7c5ac8e9e" Title="ScriptInterruptedException Constructor " Url="html/Overload_Microsoft_ClearScript_ScriptInterruptedException__ctor.htm">
|
||||
<HelpTOCNode Id="dc4c3b43-62a1-45f4-981e-3386d0ec53d9" Title="ScriptInterruptedException Class" Url="html/T_Microsoft_ClearScript_ScriptInterruptedException.htm">
|
||||
<HelpTOCNode Id="d534e372-e7d0-4501-99c6-98c5796a31e5" Title="ScriptInterruptedException Constructor " Url="html/Overload_Microsoft_ClearScript_ScriptInterruptedException__ctor.htm">
|
||||
<HelpTOCNode Title="ScriptInterruptedException Constructor " Url="html/M_Microsoft_ClearScript_ScriptInterruptedException__ctor.htm" />
|
||||
<HelpTOCNode Title="ScriptInterruptedException Constructor (String)" Url="html/M_Microsoft_ClearScript_ScriptInterruptedException__ctor_2.htm" />
|
||||
<HelpTOCNode Title="ScriptInterruptedException Constructor (SerializationInfo, StreamingContext)" Url="html/M_Microsoft_ClearScript_ScriptInterruptedException__ctor_1.htm" />
|
||||
<HelpTOCNode Title="ScriptInterruptedException Constructor (String, Exception)" Url="html/M_Microsoft_ClearScript_ScriptInterruptedException__ctor_3.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="5be6d364-ff66-463d-b59a-596aaf2b279a" Title="ScriptInterruptedException Properties" Url="html/Properties_T_Microsoft_ClearScript_ScriptInterruptedException.htm">
|
||||
<HelpTOCNode Id="a820d104-4a11-4b6f-97ce-a5c522c76df3" Title="ScriptInterruptedException Properties" Url="html/Properties_T_Microsoft_ClearScript_ScriptInterruptedException.htm">
|
||||
<HelpTOCNode Title="EngineName Property " Url="html/P_Microsoft_ClearScript_ScriptInterruptedException_EngineName.htm" />
|
||||
<HelpTOCNode Title="ErrorDetails Property " Url="html/P_Microsoft_ClearScript_ScriptInterruptedException_ErrorDetails.htm" />
|
||||
<HelpTOCNode Title="ExecutionStarted Property " Url="html/P_Microsoft_ClearScript_ScriptInterruptedException_ExecutionStarted.htm" />
|
||||
<HelpTOCNode Title="IsFatal Property " Url="html/P_Microsoft_ClearScript_ScriptInterruptedException_IsFatal.htm" />
|
||||
<HelpTOCNode Title="ScriptException Property " Url="html/P_Microsoft_ClearScript_ScriptInterruptedException_ScriptException.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="e28a73f8-db2b-4843-967f-459d83922beb" Title="ScriptInterruptedException Methods" Url="html/Methods_T_Microsoft_ClearScript_ScriptInterruptedException.htm">
|
||||
<HelpTOCNode Id="34ea984c-2d7f-44d7-858c-dbaa43d23ce1" Title="ScriptInterruptedException Methods" Url="html/Methods_T_Microsoft_ClearScript_ScriptInterruptedException.htm">
|
||||
<HelpTOCNode Title="GetObjectData Method " Url="html/M_Microsoft_ClearScript_ScriptInterruptedException_GetObjectData.htm" />
|
||||
<HelpTOCNode Title="ToString Method " Url="html/M_Microsoft_ClearScript_ScriptInterruptedException_ToString.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="ScriptInterruptedException Events" Url="html/Events_T_Microsoft_ClearScript_ScriptInterruptedException.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="ca85b853-b5de-4612-aeb6-4559a4be0758" Title="ScriptMemberAttribute Class" Url="html/T_Microsoft_ClearScript_ScriptMemberAttribute.htm">
|
||||
<HelpTOCNode Id="48e78293-7e59-430e-82a0-81415a65d6f5" Title="ScriptMemberAttribute Constructor " Url="html/Overload_Microsoft_ClearScript_ScriptMemberAttribute__ctor.htm">
|
||||
<HelpTOCNode Id="0a57a585-e301-480a-8042-094fcab34570" Title="ScriptMemberAttribute Class" Url="html/T_Microsoft_ClearScript_ScriptMemberAttribute.htm">
|
||||
<HelpTOCNode Id="fe8b9b2d-38aa-4d4f-ac55-f46b4144aeee" Title="ScriptMemberAttribute Constructor " Url="html/Overload_Microsoft_ClearScript_ScriptMemberAttribute__ctor.htm">
|
||||
<HelpTOCNode Title="ScriptMemberAttribute Constructor " Url="html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor.htm" />
|
||||
<HelpTOCNode Title="ScriptMemberAttribute Constructor (String)" Url="html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor_4.htm" />
|
||||
<HelpTOCNode Title="ScriptMemberAttribute Constructor (ScriptAccess)" Url="html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor_1.htm" />
|
||||
|
@ -321,84 +337,84 @@
|
|||
<HelpTOCNode Title="ScriptMemberAttribute Constructor (ScriptAccess, ScriptMemberFlags)" Url="html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor_2.htm" />
|
||||
<HelpTOCNode Title="ScriptMemberAttribute Constructor (String, ScriptAccess, ScriptMemberFlags)" Url="html/M_Microsoft_ClearScript_ScriptMemberAttribute__ctor_6.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="8c3c567a-57b1-4d7b-a5d2-1f2466da4477" Title="ScriptMemberAttribute Properties" Url="html/Properties_T_Microsoft_ClearScript_ScriptMemberAttribute.htm">
|
||||
<HelpTOCNode Id="cb79d352-17df-44ad-ab8c-e46dee49a7fc" Title="ScriptMemberAttribute Properties" Url="html/Properties_T_Microsoft_ClearScript_ScriptMemberAttribute.htm">
|
||||
<HelpTOCNode Title="Flags Property " Url="html/P_Microsoft_ClearScript_ScriptMemberAttribute_Flags.htm" />
|
||||
<HelpTOCNode Title="Name Property " Url="html/P_Microsoft_ClearScript_ScriptMemberAttribute_Name.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="ScriptMemberAttribute Methods" Url="html/Methods_T_Microsoft_ClearScript_ScriptMemberAttribute.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="ScriptMemberFlags Enumeration" Url="html/T_Microsoft_ClearScript_ScriptMemberFlags.htm" />
|
||||
<HelpTOCNode Id="4f954b9b-1807-4980-ab25-2fe09aacd50e" Title="ScriptObject Class" Url="html/T_Microsoft_ClearScript_ScriptObject.htm">
|
||||
<HelpTOCNode Id="b43186f2-8a40-4e63-82e7-318ed3c28e8f" Title="ScriptObject Properties" Url="html/Properties_T_Microsoft_ClearScript_ScriptObject.htm">
|
||||
<HelpTOCNode Id="e95ec09c-aeca-48fc-bb9f-15912d60096c" Title="ScriptObject Class" Url="html/T_Microsoft_ClearScript_ScriptObject.htm">
|
||||
<HelpTOCNode Id="25e86a30-050c-4390-8b1b-cb33d421f710" Title="ScriptObject Properties" Url="html/Properties_T_Microsoft_ClearScript_ScriptObject.htm">
|
||||
<HelpTOCNode Title="Engine Property " Url="html/P_Microsoft_ClearScript_ScriptObject_Engine.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="ScriptObject Methods" Url="html/Methods_T_Microsoft_ClearScript_ScriptObject.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="9aaa39c4-7a13-4a78-b909-585166792501" Title="ScriptUsageAttribute Class" Url="html/T_Microsoft_ClearScript_ScriptUsageAttribute.htm">
|
||||
<HelpTOCNode Id="4cde01d1-5c5f-4d0c-9023-f2498775dca2" Title="ScriptUsageAttribute Constructor " Url="html/Overload_Microsoft_ClearScript_ScriptUsageAttribute__ctor.htm">
|
||||
<HelpTOCNode Id="5b2e6bab-8731-4d7d-a26e-dd373b301d58" Title="ScriptUsageAttribute Class" Url="html/T_Microsoft_ClearScript_ScriptUsageAttribute.htm">
|
||||
<HelpTOCNode Id="4cd4f419-64de-4aad-b423-cf3c83433eab" Title="ScriptUsageAttribute Constructor " Url="html/Overload_Microsoft_ClearScript_ScriptUsageAttribute__ctor.htm">
|
||||
<HelpTOCNode Title="ScriptUsageAttribute Constructor " Url="html/M_Microsoft_ClearScript_ScriptUsageAttribute__ctor.htm" />
|
||||
<HelpTOCNode Title="ScriptUsageAttribute Constructor (ScriptAccess)" Url="html/M_Microsoft_ClearScript_ScriptUsageAttribute__ctor_1.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="efa88324-7c1d-4e11-a15d-f28b53b71d96" Title="ScriptUsageAttribute Properties" Url="html/Properties_T_Microsoft_ClearScript_ScriptUsageAttribute.htm">
|
||||
<HelpTOCNode Id="1ebf0111-2a65-4ac9-9dc7-2fc8009b3d7e" Title="ScriptUsageAttribute Properties" Url="html/Properties_T_Microsoft_ClearScript_ScriptUsageAttribute.htm">
|
||||
<HelpTOCNode Title="Access Property " Url="html/P_Microsoft_ClearScript_ScriptUsageAttribute_Access.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="ScriptUsageAttribute Methods" Url="html/Methods_T_Microsoft_ClearScript_ScriptUsageAttribute.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="923ba7b7-63fe-40fc-a96f-fb1c88dde877" Title="Undefined Class" Url="html/T_Microsoft_ClearScript_Undefined.htm">
|
||||
<HelpTOCNode Id="1b2c9ba3-78b2-4aea-8678-84973bd2a662" Title="Undefined Methods" Url="html/Methods_T_Microsoft_ClearScript_Undefined.htm">
|
||||
<HelpTOCNode Id="b90c1e06-ec73-4d3d-9753-62d58e09613f" Title="Undefined Class" Url="html/T_Microsoft_ClearScript_Undefined.htm">
|
||||
<HelpTOCNode Id="4bbc3207-e3c4-455f-9b77-8d94c04a1aef" Title="Undefined Methods" Url="html/Methods_T_Microsoft_ClearScript_Undefined.htm">
|
||||
<HelpTOCNode Title="ToString Method " Url="html/M_Microsoft_ClearScript_Undefined_ToString.htm" />
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="d637be8c-675f-462c-85a0-c2124b8bea74" Title="VoidResult Class" Url="html/T_Microsoft_ClearScript_VoidResult.htm">
|
||||
<HelpTOCNode Id="c0b04562-f1c8-419d-80b1-86118f6ff60d" Title="VoidResult Class" Url="html/T_Microsoft_ClearScript_VoidResult.htm">
|
||||
<HelpTOCNode Title="VoidResult Methods" Url="html/Methods_T_Microsoft_ClearScript_VoidResult.htm" />
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="fada8a58-e185-46de-a6e6-5ef65078d39c" Title="Microsoft.ClearScript.JavaScript" Url="html/N_Microsoft_ClearScript_JavaScript.htm">
|
||||
<HelpTOCNode Id="215b0302-a8bd-46ad-b665-a579775e7a9c" Title="IArrayBuffer Interface" Url="html/T_Microsoft_ClearScript_JavaScript_IArrayBuffer.htm">
|
||||
<HelpTOCNode Id="f658cc7e-9f59-45c8-a03f-2d577c9610b9" Title="IArrayBuffer Properties" Url="html/Properties_T_Microsoft_ClearScript_JavaScript_IArrayBuffer.htm">
|
||||
<HelpTOCNode Id="decf65a4-ff22-45ff-9bb6-c16eafb73687" Title="Microsoft.ClearScript.JavaScript" Url="html/N_Microsoft_ClearScript_JavaScript.htm">
|
||||
<HelpTOCNode Id="64b7bff0-60c9-4784-a615-d6e7551686b6" Title="IArrayBuffer Interface" Url="html/T_Microsoft_ClearScript_JavaScript_IArrayBuffer.htm">
|
||||
<HelpTOCNode Id="00548894-db89-4039-a5f2-3f32d1d7044e" Title="IArrayBuffer Properties" Url="html/Properties_T_Microsoft_ClearScript_JavaScript_IArrayBuffer.htm">
|
||||
<HelpTOCNode Title="Size Property " Url="html/P_Microsoft_ClearScript_JavaScript_IArrayBuffer_Size.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="5e8e5f2d-f5a8-46b8-a4d9-a70f927eafd2" Title="IArrayBuffer Methods" Url="html/Methods_T_Microsoft_ClearScript_JavaScript_IArrayBuffer.htm">
|
||||
<HelpTOCNode Id="cc14de66-c8a1-4dbf-bf32-a701ff9d9265" Title="IArrayBuffer Methods" Url="html/Methods_T_Microsoft_ClearScript_JavaScript_IArrayBuffer.htm">
|
||||
<HelpTOCNode Title="GetBytes Method " Url="html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_GetBytes.htm" />
|
||||
<HelpTOCNode Title="ReadBytes Method " Url="html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_ReadBytes.htm" />
|
||||
<HelpTOCNode Title="WriteBytes Method " Url="html/M_Microsoft_ClearScript_JavaScript_IArrayBuffer_WriteBytes.htm" />
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="2e44f1c8-a37e-49bc-8b73-25e2d6bcd657" Title="IArrayBufferView Interface" Url="html/T_Microsoft_ClearScript_JavaScript_IArrayBufferView.htm">
|
||||
<HelpTOCNode Id="2ef7b96a-3c9e-44d8-b91b-aebfb4f32a2c" Title="IArrayBufferView Properties" Url="html/Properties_T_Microsoft_ClearScript_JavaScript_IArrayBufferView.htm">
|
||||
<HelpTOCNode Id="3415d7e0-3a76-4c05-8f82-afac5e53c1d9" Title="IArrayBufferView Interface" Url="html/T_Microsoft_ClearScript_JavaScript_IArrayBufferView.htm">
|
||||
<HelpTOCNode Id="9095530b-3b90-46cd-8247-71b4e9b772fb" Title="IArrayBufferView Properties" Url="html/Properties_T_Microsoft_ClearScript_JavaScript_IArrayBufferView.htm">
|
||||
<HelpTOCNode Title="ArrayBuffer Property " Url="html/P_Microsoft_ClearScript_JavaScript_IArrayBufferView_ArrayBuffer.htm" />
|
||||
<HelpTOCNode Title="Offset Property " Url="html/P_Microsoft_ClearScript_JavaScript_IArrayBufferView_Offset.htm" />
|
||||
<HelpTOCNode Title="Size Property " Url="html/P_Microsoft_ClearScript_JavaScript_IArrayBufferView_Size.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="ed1415bb-bcbb-4b47-9c3a-0aeb817a4ae3" Title="IArrayBufferView Methods" Url="html/Methods_T_Microsoft_ClearScript_JavaScript_IArrayBufferView.htm">
|
||||
<HelpTOCNode Id="f5a1711f-7463-4b80-95aa-ff6c74816f72" Title="IArrayBufferView Methods" Url="html/Methods_T_Microsoft_ClearScript_JavaScript_IArrayBufferView.htm">
|
||||
<HelpTOCNode Title="GetBytes Method " Url="html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_GetBytes.htm" />
|
||||
<HelpTOCNode Title="ReadBytes Method " Url="html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_ReadBytes.htm" />
|
||||
<HelpTOCNode Title="WriteBytes Method " Url="html/M_Microsoft_ClearScript_JavaScript_IArrayBufferView_WriteBytes.htm" />
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="2ceeb632-99eb-4317-a54a-eedc81193c4d" Title="IDataView Interface" Url="html/T_Microsoft_ClearScript_JavaScript_IDataView.htm">
|
||||
<HelpTOCNode Id="a930f52a-939b-4ba0-a1be-e0db7ea3109a" Title="IDataView Interface" Url="html/T_Microsoft_ClearScript_JavaScript_IDataView.htm">
|
||||
<HelpTOCNode Title="IDataView Properties" Url="html/Properties_T_Microsoft_ClearScript_JavaScript_IDataView.htm" />
|
||||
<HelpTOCNode Title="IDataView Methods" Url="html/Methods_T_Microsoft_ClearScript_JavaScript_IDataView.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="ef4c91ff-ca43-41f5-a2e3-51d5405a2ff9" Title="ITypedArray Interface" Url="html/T_Microsoft_ClearScript_JavaScript_ITypedArray.htm">
|
||||
<HelpTOCNode Id="14f7d626-41a8-4793-9369-2d3dfc49d5c8" Title="ITypedArray Properties" Url="html/Properties_T_Microsoft_ClearScript_JavaScript_ITypedArray.htm">
|
||||
<HelpTOCNode Id="26a29322-5d5b-4232-9e01-1b8997ca39f0" Title="ITypedArray Interface" Url="html/T_Microsoft_ClearScript_JavaScript_ITypedArray.htm">
|
||||
<HelpTOCNode Id="250574b4-e034-40e4-90a5-4c96a489424c" Title="ITypedArray Properties" Url="html/Properties_T_Microsoft_ClearScript_JavaScript_ITypedArray.htm">
|
||||
<HelpTOCNode Title="Length Property " Url="html/P_Microsoft_ClearScript_JavaScript_ITypedArray_Length.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="ITypedArray Methods" Url="html/Methods_T_Microsoft_ClearScript_JavaScript_ITypedArray.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="05cb66d1-4206-4809-9f56-96737d6fa1c5" Title="ITypedArray(T) Interface" Url="html/T_Microsoft_ClearScript_JavaScript_ITypedArray_1.htm">
|
||||
<HelpTOCNode Id="a6153009-fcd6-45cd-b828-4bb4531149a5" Title="ITypedArray(T) Interface" Url="html/T_Microsoft_ClearScript_JavaScript_ITypedArray_1.htm">
|
||||
<HelpTOCNode Title="ITypedArray(T) Properties" Url="html/Properties_T_Microsoft_ClearScript_JavaScript_ITypedArray_1.htm" />
|
||||
<HelpTOCNode Id="a7a2ec0a-1906-4766-bdaa-7542a7dd55e2" Title="ITypedArray(T) Methods" Url="html/Methods_T_Microsoft_ClearScript_JavaScript_ITypedArray_1.htm">
|
||||
<HelpTOCNode Id="8df6afb4-a885-4a72-b786-f64caf178af6" Title="ITypedArray(T) Methods" Url="html/Methods_T_Microsoft_ClearScript_JavaScript_ITypedArray_1.htm">
|
||||
<HelpTOCNode Title="Read Method " Url="html/M_Microsoft_ClearScript_JavaScript_ITypedArray_1_Read.htm" />
|
||||
<HelpTOCNode Title="ToArray Method " Url="html/M_Microsoft_ClearScript_JavaScript_ITypedArray_1_ToArray.htm" />
|
||||
<HelpTOCNode Title="Write Method " Url="html/M_Microsoft_ClearScript_JavaScript_ITypedArray_1_Write.htm" />
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="cade12da-d654-4898-98a0-d27786b32076" Title="Microsoft.ClearScript.V8" Url="html/N_Microsoft_ClearScript_V8.htm">
|
||||
<HelpTOCNode Id="92e3f2ec-2599-4255-8322-d5a40b8cc6d4" Title="Microsoft.ClearScript.V8" Url="html/N_Microsoft_ClearScript_V8.htm">
|
||||
<HelpTOCNode Title="V8CacheKind Enumeration" Url="html/T_Microsoft_ClearScript_V8_V8CacheKind.htm" />
|
||||
<HelpTOCNode Id="466d68dd-228a-41d2-b9dc-45995479acde" Title="V8Runtime Class" Url="html/T_Microsoft_ClearScript_V8_V8Runtime.htm">
|
||||
<HelpTOCNode Id="677b0482-0a56-4fd2-9a00-a4fe33a54a50" Title="V8Runtime Constructor " Url="html/Overload_Microsoft_ClearScript_V8_V8Runtime__ctor.htm">
|
||||
<HelpTOCNode Id="86e40fe9-c4cc-4bf8-8852-c780cb03fe55" Title="V8Runtime Class" Url="html/T_Microsoft_ClearScript_V8_V8Runtime.htm">
|
||||
<HelpTOCNode Id="8710d2e6-a2cb-4458-b0b7-c69756ac9dac" Title="V8Runtime Constructor " Url="html/Overload_Microsoft_ClearScript_V8_V8Runtime__ctor.htm">
|
||||
<HelpTOCNode Title="V8Runtime Constructor " Url="html/M_Microsoft_ClearScript_V8_V8Runtime__ctor.htm" />
|
||||
<HelpTOCNode Title="V8Runtime Constructor (String)" Url="html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_6.htm" />
|
||||
<HelpTOCNode Title="V8Runtime Constructor (V8RuntimeConstraints)" Url="html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_1.htm" />
|
||||
|
@ -412,24 +428,27 @@
|
|||
<HelpTOCNode Title="V8Runtime Constructor (V8RuntimeConstraints, V8RuntimeFlags, Int32)" Url="html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_3.htm" />
|
||||
<HelpTOCNode Title="V8Runtime Constructor (String, V8RuntimeConstraints, V8RuntimeFlags, Int32)" Url="html/M_Microsoft_ClearScript_V8_V8Runtime__ctor_9.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="7ccff467-a49d-4bc6-a302-591cae83bf1c" Title="V8Runtime Properties" Url="html/Properties_T_Microsoft_ClearScript_V8_V8Runtime.htm">
|
||||
<HelpTOCNode Id="5d53ea49-a646-4f0f-baca-c8969d50db85" Title="V8Runtime Properties" Url="html/Properties_T_Microsoft_ClearScript_V8_V8Runtime.htm">
|
||||
<HelpTOCNode Title="FormatCode Property " Url="html/P_Microsoft_ClearScript_V8_V8Runtime_FormatCode.htm" />
|
||||
<HelpTOCNode Title="HeapSizeSampleInterval Property " Url="html/P_Microsoft_ClearScript_V8_V8Runtime_HeapSizeSampleInterval.htm" />
|
||||
<HelpTOCNode Title="MaxHeapSize Property " Url="html/P_Microsoft_ClearScript_V8_V8Runtime_MaxHeapSize.htm" />
|
||||
<HelpTOCNode Title="MaxStackUsage Property " Url="html/P_Microsoft_ClearScript_V8_V8Runtime_MaxStackUsage.htm" />
|
||||
<HelpTOCNode Title="Name Property " Url="html/P_Microsoft_ClearScript_V8_V8Runtime_Name.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="d933ad3e-714c-4f1e-9128-e62cea788752" Title="V8Runtime Methods" Url="html/Methods_T_Microsoft_ClearScript_V8_V8Runtime.htm">
|
||||
<HelpTOCNode Id="df8e6030-b4f3-4458-8e37-ff0e2d3edc7a" Title="V8Runtime Methods" Url="html/Methods_T_Microsoft_ClearScript_V8_V8Runtime.htm">
|
||||
<HelpTOCNode Title="CollectGarbage Method " Url="html/M_Microsoft_ClearScript_V8_V8Runtime_CollectGarbage.htm" />
|
||||
<HelpTOCNode Id="0a7a5546-26db-43da-96f5-4ba4505917ac" Title="Compile Method " Url="html/Overload_Microsoft_ClearScript_V8_V8Runtime_Compile.htm">
|
||||
<HelpTOCNode Title="Compile Method (String)" Url="html/M_Microsoft_ClearScript_V8_V8Runtime_Compile.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, String)" Url="html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_3.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, V8CacheKind, Byte[])" Url="html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_2.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, V8CacheKind, Byte[], Boolean)" Url="html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_1.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, String, V8CacheKind, Byte[])" Url="html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_5.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, String, V8CacheKind, Byte[], Boolean)" Url="html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_4.htm" />
|
||||
<HelpTOCNode Id="3516125e-1c2b-4c74-b1ff-55c21a1120cd" Title="Compile Method " Url="html/Overload_Microsoft_ClearScript_V8_V8Runtime_Compile.htm">
|
||||
<HelpTOCNode Title="Compile Method (String)" Url="html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_3.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, String)" Url="html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_6.htm" />
|
||||
<HelpTOCNode Title="Compile Method (DocumentInfo, String)" Url="html/M_Microsoft_ClearScript_V8_V8Runtime_Compile.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, V8CacheKind, Byte[])" Url="html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_5.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, V8CacheKind, Byte[], Boolean)" Url="html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_4.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, String, V8CacheKind, Byte[])" Url="html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_8.htm" />
|
||||
<HelpTOCNode Title="Compile Method (DocumentInfo, String, V8CacheKind, Byte[])" Url="html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_2.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, String, V8CacheKind, Byte[], Boolean)" Url="html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_7.htm" />
|
||||
<HelpTOCNode Title="Compile Method (DocumentInfo, String, V8CacheKind, Byte[], Boolean)" Url="html/M_Microsoft_ClearScript_V8_V8Runtime_Compile_1.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="e69d152a-72e6-46e4-85f8-50bc7ae02e7b" Title="CreateScriptEngine Method " Url="html/Overload_Microsoft_ClearScript_V8_V8Runtime_CreateScriptEngine.htm">
|
||||
<HelpTOCNode Id="4a5a602f-13cb-43a4-aa38-a2c13c6bd793" Title="CreateScriptEngine Method " Url="html/Overload_Microsoft_ClearScript_V8_V8Runtime_CreateScriptEngine.htm">
|
||||
<HelpTOCNode Title="CreateScriptEngine Method " Url="html/M_Microsoft_ClearScript_V8_V8Runtime_CreateScriptEngine.htm" />
|
||||
<HelpTOCNode Title="CreateScriptEngine Method (String)" Url="html/M_Microsoft_ClearScript_V8_V8Runtime_CreateScriptEngine_3.htm" />
|
||||
<HelpTOCNode Title="CreateScriptEngine Method (V8ScriptEngineFlags)" Url="html/M_Microsoft_ClearScript_V8_V8Runtime_CreateScriptEngine_1.htm" />
|
||||
|
@ -441,9 +460,9 @@
|
|||
<HelpTOCNode Title="GetHeapInfo Method " Url="html/M_Microsoft_ClearScript_V8_V8Runtime_GetHeapInfo.htm" />
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="2d91caec-abb3-46f8-8902-49cc944e308a" Title="V8RuntimeConstraints Class" Url="html/T_Microsoft_ClearScript_V8_V8RuntimeConstraints.htm">
|
||||
<HelpTOCNode Id="3784d279-ffa0-43bc-9e32-b13f0ab4297e" Title="V8RuntimeConstraints Class" Url="html/T_Microsoft_ClearScript_V8_V8RuntimeConstraints.htm">
|
||||
<HelpTOCNode Title="V8RuntimeConstraints Constructor " Url="html/M_Microsoft_ClearScript_V8_V8RuntimeConstraints__ctor.htm" />
|
||||
<HelpTOCNode Id="4d9f2b78-9a23-4616-a063-e02c979acbcd" Title="V8RuntimeConstraints Properties" Url="html/Properties_T_Microsoft_ClearScript_V8_V8RuntimeConstraints.htm">
|
||||
<HelpTOCNode Id="399de3ab-05a6-4b9e-95df-84e53f8a8260" Title="V8RuntimeConstraints Properties" Url="html/Properties_T_Microsoft_ClearScript_V8_V8RuntimeConstraints.htm">
|
||||
<HelpTOCNode Title="MaxExecutableSize Property " Url="html/P_Microsoft_ClearScript_V8_V8RuntimeConstraints_MaxExecutableSize.htm" />
|
||||
<HelpTOCNode Title="MaxNewSpaceSize Property " Url="html/P_Microsoft_ClearScript_V8_V8RuntimeConstraints_MaxNewSpaceSize.htm" />
|
||||
<HelpTOCNode Title="MaxOldSpaceSize Property " Url="html/P_Microsoft_ClearScript_V8_V8RuntimeConstraints_MaxOldSpaceSize.htm" />
|
||||
|
@ -452,8 +471,8 @@
|
|||
<HelpTOCNode Title="V8RuntimeConstraints Methods" Url="html/Methods_T_Microsoft_ClearScript_V8_V8RuntimeConstraints.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="V8RuntimeFlags Enumeration" Url="html/T_Microsoft_ClearScript_V8_V8RuntimeFlags.htm" />
|
||||
<HelpTOCNode Id="273de3b7-8138-4312-ab66-c4a078c09593" Title="V8RuntimeHeapInfo Class" Url="html/T_Microsoft_ClearScript_V8_V8RuntimeHeapInfo.htm">
|
||||
<HelpTOCNode Id="1840394c-c36f-4f20-99c9-6bdf6c01164c" Title="V8RuntimeHeapInfo Properties" Url="html/Properties_T_Microsoft_ClearScript_V8_V8RuntimeHeapInfo.htm">
|
||||
<HelpTOCNode Id="991718bd-737a-401a-b845-8d24f641c43b" Title="V8RuntimeHeapInfo Class" Url="html/T_Microsoft_ClearScript_V8_V8RuntimeHeapInfo.htm">
|
||||
<HelpTOCNode Id="50bca5c8-3fd3-4954-b54f-3271f3a61fb7" Title="V8RuntimeHeapInfo Properties" Url="html/Properties_T_Microsoft_ClearScript_V8_V8RuntimeHeapInfo.htm">
|
||||
<HelpTOCNode Title="HeapSizeLimit Property " Url="html/P_Microsoft_ClearScript_V8_V8RuntimeHeapInfo_HeapSizeLimit.htm" />
|
||||
<HelpTOCNode Title="TotalHeapSize Property " Url="html/P_Microsoft_ClearScript_V8_V8RuntimeHeapInfo_TotalHeapSize.htm" />
|
||||
<HelpTOCNode Title="TotalHeapSizeExecutable Property " Url="html/P_Microsoft_ClearScript_V8_V8RuntimeHeapInfo_TotalHeapSizeExecutable.htm" />
|
||||
|
@ -462,16 +481,17 @@
|
|||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="V8RuntimeHeapInfo Methods" Url="html/Methods_T_Microsoft_ClearScript_V8_V8RuntimeHeapInfo.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="85237230-6012-461b-a844-9dcd23f73d42" Title="V8Script Class" Url="html/T_Microsoft_ClearScript_V8_V8Script.htm">
|
||||
<HelpTOCNode Id="19f4efd5-1d20-4ff0-9ad8-8b2b23d607e0" Title="V8Script Properties" Url="html/Properties_T_Microsoft_ClearScript_V8_V8Script.htm">
|
||||
<HelpTOCNode Id="9cb4a7e2-ebd0-4abb-9c23-0689f6f6e19c" Title="V8Script Class" Url="html/T_Microsoft_ClearScript_V8_V8Script.htm">
|
||||
<HelpTOCNode Id="f1b8f444-4155-4497-ac4a-0f656a32cbae" Title="V8Script Properties" Url="html/Properties_T_Microsoft_ClearScript_V8_V8Script.htm">
|
||||
<HelpTOCNode Title="DocumentInfo Property " Url="html/P_Microsoft_ClearScript_V8_V8Script_DocumentInfo.htm" />
|
||||
<HelpTOCNode Title="Name Property " Url="html/P_Microsoft_ClearScript_V8_V8Script_Name.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="285e46a3-be7b-4bd1-a715-278b4e478c6e" Title="V8Script Methods" Url="html/Methods_T_Microsoft_ClearScript_V8_V8Script.htm">
|
||||
<HelpTOCNode Id="453e9eae-8946-49a9-8635-0a484230508d" Title="V8Script Methods" Url="html/Methods_T_Microsoft_ClearScript_V8_V8Script.htm">
|
||||
<HelpTOCNode Title="Dispose Method " Url="html/M_Microsoft_ClearScript_V8_V8Script_Dispose.htm" />
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="5ff1132f-5c74-46e1-bfbf-e827d593153f" Title="V8ScriptEngine Class" Url="html/T_Microsoft_ClearScript_V8_V8ScriptEngine.htm">
|
||||
<HelpTOCNode Id="ab22b69d-4a3b-4543-97ec-f4aab3234a48" Title="V8ScriptEngine Constructor " Url="html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine__ctor.htm">
|
||||
<HelpTOCNode Id="cb96bc67-2c73-4492-b4ef-f26134babd95" Title="V8ScriptEngine Class" Url="html/T_Microsoft_ClearScript_V8_V8ScriptEngine.htm">
|
||||
<HelpTOCNode Id="2bfbb174-beb2-4a6a-914f-78dd0c3c6db0" Title="V8ScriptEngine Constructor " Url="html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine__ctor.htm">
|
||||
<HelpTOCNode Title="V8ScriptEngine Constructor " Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor.htm" />
|
||||
<HelpTOCNode Title="V8ScriptEngine Constructor (String)" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_6.htm" />
|
||||
<HelpTOCNode Title="V8ScriptEngine Constructor (V8RuntimeConstraints)" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_1.htm" />
|
||||
|
@ -485,7 +505,7 @@
|
|||
<HelpTOCNode Title="V8ScriptEngine Constructor (V8RuntimeConstraints, V8ScriptEngineFlags, Int32)" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_3.htm" />
|
||||
<HelpTOCNode Title="V8ScriptEngine Constructor (String, V8RuntimeConstraints, V8ScriptEngineFlags, Int32)" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine__ctor_9.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="e645dafe-c36d-4622-aa06-68792101f8b5" Title="V8ScriptEngine Properties" Url="html/Properties_T_Microsoft_ClearScript_V8_V8ScriptEngine.htm">
|
||||
<HelpTOCNode Id="95633448-59ec-4510-9e39-6bfb835a3adf" Title="V8ScriptEngine Properties" Url="html/Properties_T_Microsoft_ClearScript_V8_V8ScriptEngine.htm">
|
||||
<HelpTOCNode Title="FileNameExtension Property " Url="html/P_Microsoft_ClearScript_V8_V8ScriptEngine_FileNameExtension.htm" />
|
||||
<HelpTOCNode Title="MaxRuntimeHeapSize Property " Url="html/P_Microsoft_ClearScript_V8_V8ScriptEngine_MaxRuntimeHeapSize.htm" />
|
||||
<HelpTOCNode Title="MaxRuntimeStackUsage Property " Url="html/P_Microsoft_ClearScript_V8_V8ScriptEngine_MaxRuntimeStackUsage.htm" />
|
||||
|
@ -494,23 +514,26 @@
|
|||
<HelpTOCNode Title="SuppressExtensionMethodEnumeration Property " Url="html/P_Microsoft_ClearScript_V8_V8ScriptEngine_SuppressExtensionMethodEnumeration.htm" />
|
||||
<HelpTOCNode Title="SuppressInstanceMethodEnumeration Property " Url="html/P_Microsoft_ClearScript_V8_V8ScriptEngine_SuppressInstanceMethodEnumeration.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="d7127f7d-18fb-4971-bf33-91f6c6751e10" Title="V8ScriptEngine Methods" Url="html/Methods_T_Microsoft_ClearScript_V8_V8ScriptEngine.htm">
|
||||
<HelpTOCNode Id="ed66afed-a000-44b8-a9a7-8dc2affd190f" Title="V8ScriptEngine Methods" Url="html/Methods_T_Microsoft_ClearScript_V8_V8ScriptEngine.htm">
|
||||
<HelpTOCNode Title="CollectGarbage Method " Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_CollectGarbage.htm" />
|
||||
<HelpTOCNode Id="4ac7b0e4-98eb-477d-acdb-49d0d82949e0" Title="Compile Method " Url="html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_Compile.htm">
|
||||
<HelpTOCNode Title="Compile Method (String)" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, String)" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_3.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, V8CacheKind, Byte[])" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_2.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, V8CacheKind, Byte[], Boolean)" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_1.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, String, V8CacheKind, Byte[])" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_5.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, String, V8CacheKind, Byte[], Boolean)" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_4.htm" />
|
||||
<HelpTOCNode Id="181c52f4-eed4-4b68-9784-63885036509a" Title="Compile Method " Url="html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_Compile.htm">
|
||||
<HelpTOCNode Title="Compile Method (String)" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_3.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, String)" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_6.htm" />
|
||||
<HelpTOCNode Title="Compile Method (DocumentInfo, String)" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, V8CacheKind, Byte[])" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_5.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, V8CacheKind, Byte[], Boolean)" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_4.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, String, V8CacheKind, Byte[])" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_8.htm" />
|
||||
<HelpTOCNode Title="Compile Method (DocumentInfo, String, V8CacheKind, Byte[])" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_2.htm" />
|
||||
<HelpTOCNode Title="Compile Method (String, String, V8CacheKind, Byte[], Boolean)" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_7.htm" />
|
||||
<HelpTOCNode Title="Compile Method (DocumentInfo, String, V8CacheKind, Byte[], Boolean)" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Compile_1.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="3601ded8-4167-42ac-877b-ec15e3dfcdf3" Title="Dispose Method " Url="html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_Dispose.htm">
|
||||
<HelpTOCNode Id="1edfc25b-10a3-417d-9bca-ae1c85c40a76" Title="Dispose Method " Url="html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_Dispose.htm">
|
||||
<HelpTOCNode Title="Dispose Method (Boolean)" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Dispose.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="0e40c2fa-c156-42c6-87ab-5391e828ea37" Title="Evaluate Method " Url="html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_Evaluate.htm">
|
||||
<HelpTOCNode Id="3fcff262-b3f9-464a-b1f1-1033a421dc45" Title="Evaluate Method " Url="html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_Evaluate.htm">
|
||||
<HelpTOCNode Title="Evaluate Method (V8Script)" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Evaluate.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="df3e43bc-fa63-43b6-b112-451cfe127bd9" Title="Execute Method " Url="html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_Execute.htm">
|
||||
<HelpTOCNode Id="800d045a-2cf0-4914-8891-40f71c5e4857" Title="Execute Method " Url="html/Overload_Microsoft_ClearScript_V8_V8ScriptEngine_Execute.htm">
|
||||
<HelpTOCNode Title="Execute Method (V8Script)" Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_Execute.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="ExecuteCommand Method " Url="html/M_Microsoft_ClearScript_V8_V8ScriptEngine_ExecuteCommand.htm" />
|
||||
|
@ -521,56 +544,56 @@
|
|||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="V8ScriptEngineFlags Enumeration" Url="html/T_Microsoft_ClearScript_V8_V8ScriptEngineFlags.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="011b25fa-4af4-4e05-b021-29a3beacecb8" Title="Microsoft.ClearScript.Windows" Url="html/N_Microsoft_ClearScript_Windows.htm">
|
||||
<HelpTOCNode Id="4505e6ee-be4b-4b12-8a1f-1d48cf451d05" Title="IHostWindow Interface" Url="html/T_Microsoft_ClearScript_Windows_IHostWindow.htm">
|
||||
<HelpTOCNode Id="787a12b2-cf35-422f-a6ac-c468caac6783" Title="IHostWindow Properties" Url="html/Properties_T_Microsoft_ClearScript_Windows_IHostWindow.htm">
|
||||
<HelpTOCNode Id="51b020e5-11ec-4fe9-b1a6-7da80f51c569" Title="Microsoft.ClearScript.Windows" Url="html/N_Microsoft_ClearScript_Windows.htm">
|
||||
<HelpTOCNode Id="52cc09e7-30d4-448f-b298-50218613b016" Title="IHostWindow Interface" Url="html/T_Microsoft_ClearScript_Windows_IHostWindow.htm">
|
||||
<HelpTOCNode Id="653da93e-13ce-443d-879b-9ce1f54943ce" Title="IHostWindow Properties" Url="html/Properties_T_Microsoft_ClearScript_Windows_IHostWindow.htm">
|
||||
<HelpTOCNode Title="OwnerHandle Property " Url="html/P_Microsoft_ClearScript_Windows_IHostWindow_OwnerHandle.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="ec106ff7-2157-4570-b871-5123671b7505" Title="IHostWindow Methods" Url="html/Methods_T_Microsoft_ClearScript_Windows_IHostWindow.htm">
|
||||
<HelpTOCNode Id="1c5f93c8-6868-4afa-bb25-13dc587d128b" Title="IHostWindow Methods" Url="html/Methods_T_Microsoft_ClearScript_Windows_IHostWindow.htm">
|
||||
<HelpTOCNode Title="EnableModeless Method " Url="html/M_Microsoft_ClearScript_Windows_IHostWindow_EnableModeless.htm" />
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="ed620b87-87f7-4951-a758-ca851e85c286" Title="JScriptEngine Class" Url="html/T_Microsoft_ClearScript_Windows_JScriptEngine.htm">
|
||||
<HelpTOCNode Id="4cc85479-6226-43ce-a0ea-3ee431af65f0" Title="JScriptEngine Constructor " Url="html/Overload_Microsoft_ClearScript_Windows_JScriptEngine__ctor.htm">
|
||||
<HelpTOCNode Id="c859a893-35c8-411d-b90e-1a0d05f2948d" Title="JScriptEngine Class" Url="html/T_Microsoft_ClearScript_Windows_JScriptEngine.htm">
|
||||
<HelpTOCNode Id="287a6e86-300c-4d83-ab89-473fe00b2aed" Title="JScriptEngine Constructor " Url="html/Overload_Microsoft_ClearScript_Windows_JScriptEngine__ctor.htm">
|
||||
<HelpTOCNode Title="JScriptEngine Constructor " Url="html/M_Microsoft_ClearScript_Windows_JScriptEngine__ctor.htm" />
|
||||
<HelpTOCNode Title="JScriptEngine Constructor (String)" Url="html/M_Microsoft_ClearScript_Windows_JScriptEngine__ctor_2.htm" />
|
||||
<HelpTOCNode Title="JScriptEngine Constructor (WindowsScriptEngineFlags)" Url="html/M_Microsoft_ClearScript_Windows_JScriptEngine__ctor_1.htm" />
|
||||
<HelpTOCNode Title="JScriptEngine Constructor (String, WindowsScriptEngineFlags)" Url="html/M_Microsoft_ClearScript_Windows_JScriptEngine__ctor_3.htm" />
|
||||
<HelpTOCNode Title="JScriptEngine Constructor (String, String, WindowsScriptEngineFlags)" Url="html/M_Microsoft_ClearScript_Windows_JScriptEngine__ctor_4.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="ac1d7537-a404-49a1-93ea-3550b4d8cc57" Title="JScriptEngine Properties" Url="html/Properties_T_Microsoft_ClearScript_Windows_JScriptEngine.htm">
|
||||
<HelpTOCNode Id="bfb21e9c-0942-411e-a85a-d241835713e4" Title="JScriptEngine Properties" Url="html/Properties_T_Microsoft_ClearScript_Windows_JScriptEngine.htm">
|
||||
<HelpTOCNode Title="FileNameExtension Property " Url="html/P_Microsoft_ClearScript_Windows_JScriptEngine_FileNameExtension.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="a1ed7746-6943-4e5c-b72c-1cdfee6ded47" Title="JScriptEngine Methods" Url="html/Methods_T_Microsoft_ClearScript_Windows_JScriptEngine.htm">
|
||||
<HelpTOCNode Id="74352441-a683-4dec-ac6d-4a27358590cd" Title="JScriptEngine Methods" Url="html/Methods_T_Microsoft_ClearScript_Windows_JScriptEngine.htm">
|
||||
<HelpTOCNode Title="ExecuteCommand Method " Url="html/M_Microsoft_ClearScript_Windows_JScriptEngine_ExecuteCommand.htm" />
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="838466e6-3129-40af-b479-681eaa2e81e1" Title="VBScriptEngine Class" Url="html/T_Microsoft_ClearScript_Windows_VBScriptEngine.htm">
|
||||
<HelpTOCNode Id="57ba31d4-376f-4e04-80c8-fa114576fb16" Title="VBScriptEngine Constructor " Url="html/Overload_Microsoft_ClearScript_Windows_VBScriptEngine__ctor.htm">
|
||||
<HelpTOCNode Id="39727285-9d82-455e-b542-d9839b0710fe" Title="VBScriptEngine Class" Url="html/T_Microsoft_ClearScript_Windows_VBScriptEngine.htm">
|
||||
<HelpTOCNode Id="6e3236f6-c1e6-4de8-a537-9f15cff73b2a" Title="VBScriptEngine Constructor " Url="html/Overload_Microsoft_ClearScript_Windows_VBScriptEngine__ctor.htm">
|
||||
<HelpTOCNode Title="VBScriptEngine Constructor " Url="html/M_Microsoft_ClearScript_Windows_VBScriptEngine__ctor.htm" />
|
||||
<HelpTOCNode Title="VBScriptEngine Constructor (String)" Url="html/M_Microsoft_ClearScript_Windows_VBScriptEngine__ctor_2.htm" />
|
||||
<HelpTOCNode Title="VBScriptEngine Constructor (WindowsScriptEngineFlags)" Url="html/M_Microsoft_ClearScript_Windows_VBScriptEngine__ctor_1.htm" />
|
||||
<HelpTOCNode Title="VBScriptEngine Constructor (String, WindowsScriptEngineFlags)" Url="html/M_Microsoft_ClearScript_Windows_VBScriptEngine__ctor_3.htm" />
|
||||
<HelpTOCNode Title="VBScriptEngine Constructor (String, String, WindowsScriptEngineFlags)" Url="html/M_Microsoft_ClearScript_Windows_VBScriptEngine__ctor_4.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="50055337-305a-48dd-acf2-c7700a5b05c3" Title="VBScriptEngine Properties" Url="html/Properties_T_Microsoft_ClearScript_Windows_VBScriptEngine.htm">
|
||||
<HelpTOCNode Id="a04c2117-a31f-4bde-bcbb-1488e75fdf85" Title="VBScriptEngine Properties" Url="html/Properties_T_Microsoft_ClearScript_Windows_VBScriptEngine.htm">
|
||||
<HelpTOCNode Title="FileNameExtension Property " Url="html/P_Microsoft_ClearScript_Windows_VBScriptEngine_FileNameExtension.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="64b7856b-a905-4127-a85d-583dacbe6e40" Title="VBScriptEngine Methods" Url="html/Methods_T_Microsoft_ClearScript_Windows_VBScriptEngine.htm">
|
||||
<HelpTOCNode Id="2cb459e7-a03e-45ac-8297-7d9bc6239142" Title="VBScriptEngine Methods" Url="html/Methods_T_Microsoft_ClearScript_Windows_VBScriptEngine.htm">
|
||||
<HelpTOCNode Title="ExecuteCommand Method " Url="html/M_Microsoft_ClearScript_Windows_VBScriptEngine_ExecuteCommand.htm" />
|
||||
</HelpTOCNode>
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="a5225716-9456-4f62-9264-c21e78ccc695" Title="WindowsScriptEngine Class" Url="html/T_Microsoft_ClearScript_Windows_WindowsScriptEngine.htm">
|
||||
<HelpTOCNode Id="f62eb3f4-10fb-45e0-9813-79faf3b363aa" Title="WindowsScriptEngine Class" Url="html/T_Microsoft_ClearScript_Windows_WindowsScriptEngine.htm">
|
||||
<HelpTOCNode Title="WindowsScriptEngine Constructor " Url="html/M_Microsoft_ClearScript_Windows_WindowsScriptEngine__ctor.htm" />
|
||||
<HelpTOCNode Id="bc13b2db-2ef1-405c-bff7-fbec44e46b25" Title="WindowsScriptEngine Properties" Url="html/Properties_T_Microsoft_ClearScript_Windows_WindowsScriptEngine.htm">
|
||||
<HelpTOCNode Id="440c27d3-6958-4346-bd7b-1f24f6c2f9b5" Title="WindowsScriptEngine Properties" Url="html/Properties_T_Microsoft_ClearScript_Windows_WindowsScriptEngine.htm">
|
||||
<HelpTOCNode Title="Dispatcher Property " Url="html/P_Microsoft_ClearScript_Windows_WindowsScriptEngine_Dispatcher.htm" />
|
||||
<HelpTOCNode Title="HostWindow Property " Url="html/P_Microsoft_ClearScript_Windows_WindowsScriptEngine_HostWindow.htm" />
|
||||
<HelpTOCNode Title="Script Property " Url="html/P_Microsoft_ClearScript_Windows_WindowsScriptEngine_Script.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Id="ae73fc33-b86b-4bb2-ae11-03d6466a73d7" Title="WindowsScriptEngine Methods" Url="html/Methods_T_Microsoft_ClearScript_Windows_WindowsScriptEngine.htm">
|
||||
<HelpTOCNode Id="d2127b6a-cf2d-46f9-ae97-b82bc2f9b022" Title="WindowsScriptEngine Methods" Url="html/Methods_T_Microsoft_ClearScript_Windows_WindowsScriptEngine.htm">
|
||||
<HelpTOCNode Title="CheckAccess Method " Url="html/M_Microsoft_ClearScript_Windows_WindowsScriptEngine_CheckAccess.htm" />
|
||||
<HelpTOCNode Title="CollectGarbage Method " Url="html/M_Microsoft_ClearScript_Windows_WindowsScriptEngine_CollectGarbage.htm" />
|
||||
<HelpTOCNode Id="26c103c7-e415-4843-b251-4cda09c19c40" Title="Dispose Method " Url="html/Overload_Microsoft_ClearScript_Windows_WindowsScriptEngine_Dispose.htm">
|
||||
<HelpTOCNode Id="b67852a4-64ad-48cb-a79a-53bbacb56c34" Title="Dispose Method " Url="html/Overload_Microsoft_ClearScript_Windows_WindowsScriptEngine_Dispose.htm">
|
||||
<HelpTOCNode Title="Dispose Method (Boolean)" Url="html/M_Microsoft_ClearScript_Windows_WindowsScriptEngine_Dispose.htm" />
|
||||
</HelpTOCNode>
|
||||
<HelpTOCNode Title="GetStackTrace Method " Url="html/M_Microsoft_ClearScript_Windows_WindowsScriptEngine_GetStackTrace.htm" />
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -1 +1 @@
|
|||
{"heapsizesampleinterval":[19398657,26279941,29622273],"hostitemflags":[2031630,2555918,2621454,3538958,3932174,8192007,8519681,8912903,8978439,9240577,9306113,9371649,9502721,9568263,9633799,9699335,9764865,9830407,9895937,9961479,10027009,10092551,10158087,10289153,10354689,10420231,10485767,10551297,10747905,10813441,10944518,11403271,11468801,16973825,18219009,19070980,19791873,22413316,22937604,25886734,26935301,28246030,29163534,29425678,30212110],"http":[4128769,5963777],"hos":[1900545,17629186,18284545,26738690,26935297],"hosttypecollection":[458755,1245187,2686977,2818059,3145733,5570566,5832706,5898242,6160386,6225922,6291462,6422534,6684674,6750210,7012354,7077894,7143430,7733250,16973825,18939906,19202049,19464194,20316163,20905991,27394049,28704780,29556737],"hosts":[23134209,23592961,25427969,25821185],"hostwindow":[20971521,22085633,22609921,26411013,26738689,28246017,29163521,29425665],"hidedynamicmembers":[26935297],"hierarchy":[25886721,26083329,26345473,26476545,26869761,27000833,27394049,27852801,28049409,28246017,28508161,28639233,28704769,28966913,29032449,29097985,29163521,29229057,29294593,29425665,29556737,29622273,29687809,29818881,30015489,30212097],"helplink":[20054017,20381697,27000833,27852801],"hierarchical":[2818049,3145729,28704769],"halt":[19595265,20971521,21168129,22085633,22609921,22872065,25886721,28246017,29163521,29425665,30212097],"hresult":[20054018,20381698,21299202,23396358,27000834,27852802,30081026],"hostfunctions":[2162691,2687017,3276802,3407875,3473410,3670018,3801090,3866626,3997698,4063234,4128770,4194307,4259842,4325378,4390914,4456451,4521986,4587523,4653058,4718595,4784130,4849666,4915203,4980738,5046274,5111810,5177346,5242882,5308418,5373954,5439490,5505026,5636098,5701634,5767170,5963778,6029314,6094850,6356994,6488066,6553602,6619138,6946818,7274498,7405570,7536646,10944513,16908290,16973825,17235970,17760258,18350082,18677762,19529730,20119554,20512770,25362433,25755649,26476554,29556782],"hands":[26935297],"handled":[5963777],"handler":[655361,851969,2293761,2949121,16973825,28639235,29032450],"high":[17891329,27131905],"help":[20054017,20381697,27000833,27852801],"heap":[19398658,19857412,20185092,21168130,23134209,23592961,24117249,24576001,24903681,25427973,25624577,25821185,26279938,26607620,28114948,28770306,29622274,29687812,29818884,30212098],"handle":[2162689,2686977,2949121,5963777,21495809,25100289,26476545,26738689,29556737],"handling":[5963777],"holds":[5242881,7864321,11665409],"htm":[4128769],"hash":[393217,589825,655361,851969,1114113,1179649,1245185,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1966081,2031617,2162689,2359297,2490369,2555905,2686977,2621441,3538945,3735553,3932161,25886721,26083329,26345473,26476545,26869761,27000833,27394049,27852801,28049409,28246017,28508161,28639233,28704769,28966913,29032449,29097985,29163521,29229057,29294593,29425665,29556737,29622273,29687809,29818881,30015489,30212097],"handlers":[29425665,30212097],"host":[655361,720897,851969,1245192,2031628,2162712,2293761,2424836,2555916,2687006,2621452,2752515,2818060,2883587,2949121,3145735,3211277,3276806,3342349,3473416,3538956,3604486,3670018,3801091,3866630,3932172,3997702,4063234,4128775,4194309,4259843,4325378,4390914,4456455,4521990,4587523,4653058,4718598,4784130,4849670,4915206,4980742,5111810,5177346,5242894,5308422,5373954,5439494,5505026,5570561,5636102,5701634,5767174,5832705,5898241,5963784,6029318,6094854,6160385,6225921,6291457,6356996,6422529,6488072,6553606,6619142,6684673,6750209,6815747,6946822,7012353,7077889,7143425,7274503,7405574,7733249,7798785,8192001,8519681,8912897,8978433,9240577,9306115,9371650,9502721,9568257,9633793,9699331,9764865,9830403,9895937,9961473,10027009,10092546,10158081,10289155,10354689,10420225,10485763,10551298,10747905,10813443,10944520,11403267,11468803,12779525,16515075,16646145,16973832,17235970,17760258,18219010,18350082,18677762,18939908,19070984,19202051,19464195,19529731,19595268,19791874,20119554,20512770,20905989,20971523,21168131,21299201,22085635,22609923,23265283,23330817,23855106,23920641,24248322,24772609,25362434,25886736,26345474,26476568,26804225,26935300,27197441,27328513,27852801,28246031,28377089,28573699,28639234,28704786,29032450,29163535,29425679,29491201,29556767,29949954,30081025,30212111],"heapsizelimit":[20185089,24117253,29818881],"hosttypeargs":[3211269,3342341]}
|
||||
{"helplink":[22478849,22937601,30081025,30212097],"hash":[327681,524289,589825,655361,720897,786433,1179649,1310721,1376257,1441793,1507329,1572865,1703937,1769473,1835009,1900545,2031617,2097153,2162689,2293761,2490369,2621441,2686977,2752513,3145729,3604481,4063233,27328513,27983873,28114945,28311553,28573697,28704769,28835841,29097985,29229057,29425665,29622273,29949953,30081025,30146561,30212097,30277633,30408705,30539777,30670849,30736385,30801921,30932993,30998529,31064065,31129601,31195137,31260673],"handled":[28639233],"handler":[655361,720897,2949121,3014657,18022401,28573699,29229058],"help":[22478849,22937601,30081025,30212097],"heapsizelimit":[25296897,26345477,29425665],"heap":[23855105,24313857,24444933,24576002,24903681,25034756,25296900,25362433,25493505,25886721,26345473,26476546,26673154,26738692,27066372,27525122,28311554,28835844,29425668,30277634],"hosts":[24444929,24903681,25362433,25886721],"host":[655361,720897,786440,851969,2097176,2162700,2621452,2687006,2752524,2883587,2949121,3014657,3080198,3145740,3211270,3276812,3342343,3407885,3538950,3670020,3735554,3801091,3866627,3932167,3997709,4063244,4128770,4194310,4259845,4325384,4390915,4456454,4653070,4718594,4784130,4849666,4915202,4980738,5046278,5111814,5177351,5242882,5308419,5373958,5505030,5570566,5636100,5701633,5767174,5832706,5898248,5963777,6029318,6094849,6160390,6225921,6291458,6356993,6422529,6488065,6553601,6619142,6684678,6750214,6815745,6881287,6946822,7077889,7143426,7340038,7405569,7536641,7864323,7929857,8388609,8716289,9043969,9175041,9371649,9437185,9568257,9633795,9699329,9764866,9830401,9961473,10027009,10158081,10289154,10420227,10485761,10616833,10747907,11075585,11337733,11599873,11665411,11862019,12189699,12320769,12517379,12713987,12845064,13762562,16187393,17367043,17891330,18022408,18219010,18350082,18415620,18677763,18743304,18808834,19333122,19464194,19529733,20447235,20512771,20905986,21037059,21364738,21889027,21954564,22675457,23068673,23330817,24051715,24379394,25690115,26476547,27197441,27262979,27394049,27459585,27787265,27918342,28049410,28377090,28573698,28639240,29229058,29949968,30015489,30146591,30212097,30277647,30539778,30736408,30867460,30998543,31064082,31129615,31260687,31326209,31457282,31522817],"handle":[2097153,2686977,3014657,26804225,28639233,29294593,30146561,30605313,30736385],"high":[18546689,26017793],"htm":[3932161],"heapsizesampleinterval":[24576001,26673157,28311553],"hostitemflags":[2162702,2621454,2752526,3145742,4063246,8388615,9043975,9175041,9371655,9437185,9568257,9633799,9699335,9764871,9830401,9961479,10027015,10158087,10289153,10420225,10485767,10616833,10747911,11075585,11599873,11665409,11862023,12189697,12320769,12517383,12713985,12845062,13762561,18022401,18219009,18743300,19333121,20643844,20971524,29949966,30277646,30867461,30998542,31129614,31260686],"hostfunctions":[2097155,2687017,3211266,3538946,3735554,3866626,3932162,4128770,4194307,4259843,4325378,4390915,4456450,4521987,4587522,4653058,4718594,4784130,4849666,4915202,4980738,5046274,5111810,5177347,5242882,5308418,5373955,5439494,5505026,5570562,5636098,5767170,5832706,5898242,6029314,6160386,6291458,6619138,6684674,6750210,6881282,6946818,7143426,7340034,12845057,17891330,18022401,18153474,18350082,18808834,19464194,20447234,20905986,21364738,24379393,25165825,27918338,28639234,30146606,30736394],"http":[3932161,28639233],"holds":[4653057,9306113,11927553],"hos":[1966081,16515074,19005441,30605314,30867457],"hresult":[22216710,22478850,22937602,23068674,30081026,30212098,31522818],"handling":[28639233],"handlers":[30277633,31260673],"hosttypeargs":[3407877,3997701],"honor":[27656193],"hands":[30867457],"halt":[21037057,21889025,21954561,25231361,26476545,27262977,29949953,30277633,30998529,31129601,31260673],"hierarchy":[27328513,28114945,28311553,28573697,28704769,28835841,29097985,29229057,29425665,29622273,29949953,30081025,30146561,30212097,30277633,30408705,30539777,30670849,30736385,30801921,30932993,30998529,31064065,31129601,31195137,31260673],"hostwindow":[21037057,21889025,27262977,29884421,30605313,30998529,31129601,31260673],"hidedynamicmembers":[30867457],"hosttypecollection":[131075,786435,2686977,3276811,3342341,5701634,5963778,6094850,6225922,6356994,6422530,6488066,6553602,6815750,7077894,7405574,7536646,7929862,18022401,18415618,18677762,19529735,20512769,22413315,29097985,30146561,31064076],"hierarchical":[3276801,3342337,31064065]}
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -1 +1 @@
|
|||
{"just":[29491201],"jscriptengine":[2555907,15007750,15466502,15859718,16252934,16580614,18087939,18284545,18874375,22085635,25296899,28246028,29425665,29491202],"javascrip":[12779521,25755649,28835841],"jscript":[15007745,15466497,15859713,16252929,16580610,18284546,18874373,27131905,28246022,29491202],"javascript":[786433,917505,983041,1048577,1310721,2752513,2818049,2883585,3145729,3211265,3276801,3342338,3473409,3866625,3997697,4128769,4194305,4456449,4521985,4718593,4849665,4915201,4980737,5242881,5308417,5439489,5636097,5767169,5963777,6029313,6094849,6488065,6553601,6619137,6881282,6946817,7208962,7274497,7405569,7602178,7929858,8323074,8650754,8781826,9437186,10223618,17498119,17891331,21561345,22020097,22151170,22282241,22675458,22740993,23199746,23658498,23724033,24182786,24444930,24707075,25034755,25493508,27131908,30146563,30212097,30277635]}
|
||||
{"jscript":[14680065,15007745,15400961,16056322,17301505,19005442,19988485,26017793,30998534,31326210],"javascript":[983041,1048577,1114113,1245185,1638401,2883585,3211265,3276801,3342337,3407874,3538945,3801089,3932161,3997697,4194305,4259841,4325377,4456449,4653057,5046273,5111809,5177345,5373953,5505025,5570561,5767169,5898241,6029313,6160385,6619137,6684673,6750209,6881281,6946817,7012354,7208962,7340033,7602178,7667714,7798786,8650754,8912898,8978434,9502722,18284551,18546691,23396353,23789569,24248321,24510466,24641537,24969218,25427970,25624577,25952258,26017796,26279938,26411010,26607619,27000835,27590660,27918337,28639233,30277633,30343171,31588355],"javascrip":[11337729,25165825,30474241],"jscriptengine":[2752515,14680070,15007750,15400966,16056326,17104899,17301510,19005441,19988487,27262979,29491203,30998540,31260673,31326210],"just":[31326209]}
|
|
@ -1 +1 @@
|
|||
{"keys":[19267585,20316161,20840450,25559047,27394049,28704769,29884418],"kind":[13697025,13959169,14942209,15204353,16318465,16842753,17563649,18153473,30277633],"key":[3080196,7667718,8454150,8716294,9109510,20054017,20381697,20840449,24969222,27000833,27852801,29884421],"keyword":[12779521],"keyvaluepair":[3080198,20840450,27394056,29884432]}
|
||||
{"kind":[13107201,13893633,14614529,15073281,15335425,15663105,16252929,17694721,17760257,18612225,19070977,20250625,30343169],"keys":[21561345,22413313,22544386,27721735,29097985,31064065,31391746],"key":[2818052,7995398,8192006,8781830,9109510,22478849,22544385,22937601,27131910,30081025,30212097,31391749],"keyword":[11337729],"keyvaluepair":[2818054,22544386,29097992,31391760]}
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче