Sfoglia il codice sorgente

Rename FunctionInstance to Function (#1721)

Marko Lahma 1 anno fa
parent
commit
982a751485
38 ha cambiato i file con 86 aggiunte e 82 eliminazioni
  1. 1 1
      Jint.Tests.PublicInterface/PublicInterfaceTests.cs
  2. 2 2
      Jint.Tests/Runtime/FunctionTests.cs
  3. 16 16
      Jint/Engine.cs
  4. 2 2
      Jint/JsValueExtensions.cs
  5. 2 2
      Jint/Native/Argument/JsArguments.cs
  6. 1 1
      Jint/Native/Constructor.cs
  7. 2 2
      Jint/Native/Function/BindFunction.cs
  8. 2 2
      Jint/Native/Function/EvalFunction.cs
  9. 7 5
      Jint/Native/Function/Function.cs
  10. 1 1
      Jint/Native/Function/FunctionConstructor.cs
  11. 5 3
      Jint/Native/Function/FunctionInstance.Dynamic.cs
  12. 1 1
      Jint/Native/Function/FunctionPrototype.cs
  13. 1 1
      Jint/Native/Function/ScriptFunction.cs
  14. 1 1
      Jint/Native/Function/ThrowTypeError.cs
  15. 2 2
      Jint/Native/Object/ObjectInstance.Private.cs
  16. 3 3
      Jint/Native/Object/ObjectInstance.cs
  17. 2 2
      Jint/Native/Promise/JsPromise.cs
  18. 2 2
      Jint/Native/ShadowRealm/ShadowRealm.cs
  19. 1 1
      Jint/Pooling/ArgumentsInstancePool.cs
  20. 2 2
      Jint/Runtime/CallStack/CallStackElement.cs
  21. 2 2
      Jint/Runtime/CallStack/JintCallStack.cs
  22. 2 2
      Jint/Runtime/Environments/ExecutionContext.cs
  23. 3 3
      Jint/Runtime/Environments/FunctionEnvironment.cs
  24. 1 1
      Jint/Runtime/Environments/JintEnvironment.cs
  25. 1 1
      Jint/Runtime/Interop/ClrFunction.cs
  26. 2 2
      Jint/Runtime/Interop/DefaultTypeConverter.cs
  27. 1 1
      Jint/Runtime/Interop/DelegateWrapper.cs
  28. 1 1
      Jint/Runtime/Interop/GetterFunction.cs
  29. 1 1
      Jint/Runtime/Interop/MethodInfoFunction.cs
  30. 1 1
      Jint/Runtime/Interop/SetterFunction.cs
  31. 2 2
      Jint/Runtime/Interpreter/Expressions/BindingPatternAssignmentExpression.cs
  32. 2 2
      Jint/Runtime/Interpreter/Expressions/JintAssignmentExpression.cs
  33. 2 2
      Jint/Runtime/Interpreter/Expressions/JintCallExpression.cs
  34. 1 1
      Jint/Runtime/Interpreter/Expressions/JintObjectExpression.cs
  35. 2 2
      Jint/Runtime/Interpreter/JintFunctionDefinition.cs
  36. 1 1
      Jint/Runtime/Interpreter/Statements/JintExportDefaultDeclaration.cs
  37. 2 2
      Jint/Runtime/Interpreter/Statements/JintVariableDeclaration.cs
  38. 3 3
      Jint/Runtime/Intrinsics.cs

+ 1 - 1
Jint.Tests.PublicInterface/PublicInterfaceTests.cs

@@ -50,7 +50,7 @@ var coolingObject = {
                     {
                         lock (_engine)
                         {
-                            if (queueEntry is FunctionInstance fi)
+                            if (queueEntry is Function fi)
                             {
                                 _engine.Invoke(fi);
                             }

+ 2 - 2
Jint.Tests/Runtime/FunctionTests.cs

@@ -222,7 +222,7 @@ assertEqual(booleanCount, 1);
                     function foo(a = 123) { return a; }
                     foo()
                 })")
-            .As<FunctionInstance>().Call();
+            .As<Function>().Call();
 
         var result = _engine.Evaluate(@"
                 (function () {
@@ -230,7 +230,7 @@ assertEqual(booleanCount, 1);
                     let f = new Foo()
                     return f.test()
                 })")
-            .As<FunctionInstance>().Call();
+            .As<Function>().Call();
 
         Assert.True(result.IsInteger());
         Assert.Equal(123, result.AsInteger());

+ 16 - 16
Jint/Engine.cs

@@ -448,7 +448,7 @@ namespace Jint
             var (resolve, reject) = promise.CreateResolvingFunctions();
 
 
-            Action<JsValue> SettleWith(FunctionInstance settle) => value =>
+            Action<JsValue> SettleWith(Function settle) => value =>
             {
                 settle.Call(JsValue.Undefined, new[] { value });
                 RunAvailableContinuations();
@@ -759,7 +759,7 @@ namespace Jint
                 // ensure logic is in sync between Call, Construct, engine.Invoke and JintCallExpression!
                 JsValue result;
                 var thisObject = JsValue.FromObject(this, thisObj);
-                if (callable is FunctionInstance functionInstance)
+                if (callable is Function functionInstance)
                 {
                     var callStack = CallStack;
                     callStack.Push(functionInstance, expression: null, ExecutionContext);
@@ -1023,11 +1023,11 @@ namespace Jint
         /// https://tc39.es/ecma262/#sec-functiondeclarationinstantiation
         /// </summary>
         internal JsArguments? FunctionDeclarationInstantiation(
-            FunctionInstance functionInstance,
+            Function function,
             JsValue[] argumentsList)
         {
             var calleeContext = ExecutionContext;
-            var func = functionInstance._functionDefinition;
+            var func = function._functionDefinition;
 
             var env = (FunctionEnvironment) ExecutionContext.LexicalEnvironment;
             var strict = _isStrict || StrictModeScope.IsStrictModeCode;
@@ -1053,7 +1053,7 @@ namespace Jint
                 {
                     // NOTE: mapped argument object is only provided for non-strict functions that don't have a rest parameter,
                     // any parameter default value initializers, or any destructured parameters.
-                    ao = CreateMappedArgumentsObject(functionInstance, parameterNames, argumentsList, env, configuration.HasRestParameter);
+                    ao = CreateMappedArgumentsObject(function, parameterNames, argumentsList, env, configuration.HasRestParameter);
                 }
 
                 if (strict)
@@ -1164,7 +1164,7 @@ namespace Jint
         }
 
         private JsArguments CreateMappedArgumentsObject(
-            FunctionInstance func,
+            Function func,
             Key[] formals,
             JsValue[] argumentsList,
             DeclarativeEnvironment envRec,
@@ -1435,7 +1435,7 @@ namespace Jint
         [MethodImpl(MethodImplOptions.AggressiveInlining)]
         internal JsValue Call(ICallable callable, JsValue thisObject, JsValue[] arguments, JintExpression? expression)
         {
-            if (callable is FunctionInstance functionInstance)
+            if (callable is Function functionInstance)
             {
                 return Call(functionInstance, thisObject, arguments, expression);
             }
@@ -1482,7 +1482,7 @@ namespace Jint
             JsValue newTarget,
             JintExpression? expression)
         {
-            if (constructor is FunctionInstance functionInstance)
+            if (constructor is Function functionInstance)
             {
                 return Construct(functionInstance, arguments, newTarget, expression);
             }
@@ -1490,18 +1490,18 @@ namespace Jint
             return ((IConstructor) constructor).Construct(arguments, newTarget);
         }
 
-        internal JsValue Call(FunctionInstance functionInstance, JsValue thisObject)
-            => Call(functionInstance, thisObject, Arguments.Empty, null);
+        internal JsValue Call(Function function, JsValue thisObject)
+            => Call(function, thisObject, Arguments.Empty, null);
 
         internal JsValue Call(
-            FunctionInstance functionInstance,
+            Function function,
             JsValue thisObject,
             JsValue[] arguments,
             JintExpression? expression)
         {
             // ensure logic is in sync between Call, Construct, engine.Invoke and JintCallExpression!
 
-            var recursionDepth = CallStack.Push(functionInstance, expression, ExecutionContext);
+            var recursionDepth = CallStack.Push(function, expression, ExecutionContext);
 
             if (recursionDepth > Options.Constraints.MaxRecursionDepth)
             {
@@ -1512,7 +1512,7 @@ namespace Jint
             JsValue result;
             try
             {
-                result = functionInstance.Call(thisObject, arguments);
+                result = function.Call(thisObject, arguments);
             }
             finally
             {
@@ -1527,14 +1527,14 @@ namespace Jint
         }
 
         private ObjectInstance Construct(
-            FunctionInstance functionInstance,
+            Function function,
             JsValue[] arguments,
             JsValue newTarget,
             JintExpression? expression)
         {
             // ensure logic is in sync between Call, Construct, engine.Invoke and JintCallExpression!
 
-            var recursionDepth = CallStack.Push(functionInstance, expression, ExecutionContext);
+            var recursionDepth = CallStack.Push(function, expression, ExecutionContext);
 
             if (recursionDepth > Options.Constraints.MaxRecursionDepth)
             {
@@ -1545,7 +1545,7 @@ namespace Jint
             ObjectInstance result;
             try
             {
-                result = ((IConstructor) functionInstance).Construct(arguments, newTarget);
+                result = ((IConstructor) function).Construct(arguments, newTarget);
             }
             finally
             {

+ 2 - 2
Jint/JsValueExtensions.cs

@@ -469,9 +469,9 @@ public static class JsValueExtensions
 
     [Pure]
     [MethodImpl(MethodImplOptions.AggressiveInlining)]
-    public static FunctionInstance AsFunctionInstance(this JsValue value)
+    public static Function AsFunctionInstance(this JsValue value)
     {
-        if (value is not FunctionInstance instance)
+        if (value is not Function instance)
         {
             ThrowWrongTypeException(value, "FunctionInstance");
             return null!;

+ 2 - 2
Jint/Native/Argument/JsArguments.cs

@@ -18,7 +18,7 @@ namespace Jint.Native.Argument
         // cache property container for array iteration for less allocations
         private static readonly ThreadLocal<HashSet<string>> _mappedNamed = new(() => new HashSet<string>(StringComparer.Ordinal));
 
-        private FunctionInstance _func = null!;
+        private Function.Function _func = null!;
         private Key[] _names = null!;
         private JsValue[] _args = null!;
         private DeclarativeEnvironment _env = null!;
@@ -32,7 +32,7 @@ namespace Jint.Native.Argument
         }
 
         internal void Prepare(
-            FunctionInstance func,
+            Function.Function func,
             Key[] names,
             JsValue[] args,
             DeclarativeEnvironment env,

+ 1 - 1
Jint/Native/Constructor.cs

@@ -4,7 +4,7 @@ using Jint.Runtime;
 
 namespace Jint.Native;
 
-public abstract class Constructor : FunctionInstance, IConstructor
+public abstract class Constructor : Function.Function, IConstructor
 {
     protected Constructor(Engine engine, string name) : this(engine, engine.Realm, new JsString(name))
     {

+ 2 - 2
Jint/Native/Function/BindFunction.cs

@@ -42,7 +42,7 @@ namespace Jint.Native.Function
 
         JsValue ICallable.Call(JsValue thisObject, JsValue[] arguments)
         {
-            var f = BoundTargetFunction as FunctionInstance;
+            var f = BoundTargetFunction as Function;
             if (f is null)
             {
                 ExceptionHelper.ThrowTypeError(_realm);
@@ -78,7 +78,7 @@ namespace Jint.Native.Function
 
         internal override bool OrdinaryHasInstance(JsValue v)
         {
-            var f = BoundTargetFunction as FunctionInstance;
+            var f = BoundTargetFunction as Function;
             if (f is null)
             {
                 ExceptionHelper.ThrowTypeError(_realm);

+ 2 - 2
Jint/Native/Function/EvalFunctionInstance.cs → Jint/Native/Function/EvalFunction.cs

@@ -9,14 +9,14 @@ using Environment = Jint.Runtime.Environments.Environment;
 
 namespace Jint.Native.Function;
 
-internal sealed class EvalFunctionInstance : FunctionInstance
+internal sealed class EvalFunction : Function
 {
     private static readonly JsString _functionName = new("eval");
 
     private static readonly ParserOptions _parserOptions = ParserOptions.Default with { Tolerant = true };
     private readonly JavaScriptParser _parser = new(_parserOptions);
 
-    public EvalFunctionInstance(
+    public EvalFunction(
         Engine engine,
         Realm realm,
         FunctionPrototype functionPrototype)

+ 7 - 5
Jint/Native/Function/FunctionInstance.cs → Jint/Native/Function/Function.cs

@@ -12,7 +12,9 @@ using Environment = Jint.Runtime.Environments.Environment;
 namespace Jint.Native.Function
 {
     [DebuggerDisplay("{ToString(),nq}")]
-    public abstract partial class FunctionInstance : ObjectInstance, ICallable
+#pragma warning disable MA0049
+    public abstract partial class Function : ObjectInstance, ICallable
+#pragma warning restore MA0049
     {
         protected PropertyDescriptor? _prototypeDescriptor;
 
@@ -29,7 +31,7 @@ namespace Jint.Native.Function
         internal PrivateEnvironment? _privateEnvironment;
         private readonly IScriptOrModule? _scriptOrModule;
 
-        protected FunctionInstance(
+        protected Function(
             Engine engine,
             Realm realm,
             JsString? name)
@@ -37,7 +39,7 @@ namespace Jint.Native.Function
         {
         }
 
-        internal FunctionInstance(
+        internal Function(
             Engine engine,
             Realm realm,
             JintFunctionDefinition function,
@@ -53,7 +55,7 @@ namespace Jint.Native.Function
             _environment = env;
         }
 
-        internal FunctionInstance(
+        internal Function(
             Engine engine,
             Realm realm,
             JsString? name,
@@ -250,7 +252,7 @@ namespace Jint.Native.Function
         /// </summary>
         internal Realm GetFunctionRealm(JsValue obj)
         {
-            if (obj is FunctionInstance functionInstance && functionInstance._realm is not null)
+            if (obj is Function functionInstance && functionInstance._realm is not null)
             {
                 return functionInstance._realm;
             }

+ 1 - 1
Jint/Native/Function/FunctionConstructor.cs

@@ -47,7 +47,7 @@ namespace Jint.Native.Function
         /// <summary>
         /// https://tc39.es/ecma262/#sec-runtime-semantics-instantiatefunctionobject
         /// </summary>
-        internal FunctionInstance InstantiateFunctionObject(
+        internal Function InstantiateFunctionObject(
             JintFunctionDefinition functionDeclaration,
             Environment scope,
             PrivateEnvironment? privateEnv)

+ 5 - 3
Jint/Native/Function/FunctionInstance.Dynamic.cs

@@ -8,14 +8,16 @@ using Environment = Jint.Runtime.Environments.Environment;
 
 namespace Jint.Native.Function;
 
-public partial class FunctionInstance
+#pragma warning disable MA0049
+public partial class Function
+#pragma warning restore MA0049
 {
     private static readonly JsString _functionNameAnonymous = new JsString("anonymous");
 
     /// <summary>
     /// https://tc39.es/ecma262/#sec-createdynamicfunction
     /// </summary>
-    internal FunctionInstance CreateDynamicFunction(
+    internal Function CreateDynamicFunction(
         ObjectInstance constructor,
         JsValue newTarget,
         FunctionKind kind,
@@ -157,7 +159,7 @@ public partial class FunctionInstance
         PrivateEnvironment? privateEnv = null;
 
         var definition = new JintFunctionDefinition(function);
-        FunctionInstance F = OrdinaryFunctionCreate(proto, definition, function.Strict ? FunctionThisMode.Strict : FunctionThisMode.Global, scope, privateEnv);
+        Function F = OrdinaryFunctionCreate(proto, definition, function.Strict ? FunctionThisMode.Strict : FunctionThisMode.Global, scope, privateEnv);
         F.SetFunctionName(_functionNameAnonymous, force: true);
 
         if (kind == FunctionKind.Generator)

+ 1 - 1
Jint/Native/Function/FunctionPrototype.cs

@@ -13,7 +13,7 @@ namespace Jint.Native.Function
     /// <summary>
     /// https://tc39.es/ecma262/#sec-properties-of-the-function-prototype-object
     /// </summary>
-    internal sealed class FunctionPrototype : FunctionInstance
+    internal sealed class FunctionPrototype : Function
     {
         internal FunctionPrototype(
             Engine engine,

+ 1 - 1
Jint/Native/Function/ScriptFunction.cs

@@ -9,7 +9,7 @@ using Environment = Jint.Runtime.Environments.Environment;
 
 namespace Jint.Native.Function
 {
-    public sealed class ScriptFunction : FunctionInstance, IConstructor
+    public sealed class ScriptFunction : Function, IConstructor
     {
         internal bool _isClassConstructor;
         internal JsValue? _classFieldInitializerName;

+ 1 - 1
Jint/Native/Function/ThrowTypeError.cs

@@ -3,7 +3,7 @@ using Jint.Runtime.Descriptors;
 
 namespace Jint.Native.Function
 {
-    internal sealed class ThrowTypeError : FunctionInstance
+    internal sealed class ThrowTypeError : Function
     {
         public ThrowTypeError(Engine engine, Realm realm)
             : base(engine, realm, null)

+ 2 - 2
Jint/Native/Object/ObjectInstance.Private.cs

@@ -90,7 +90,7 @@ public partial class ObjectInstance
             ExceptionHelper.ThrowTypeError(_engine.Realm, $"'#{property}' was defined without a getter");
         }
 
-        var functionInstance = (FunctionInstance) getter;
+        var functionInstance = (Function.Function) getter;
         var privateGet = functionInstance._engine.Call(functionInstance, this);
         return privateGet;
     }
@@ -144,7 +144,7 @@ internal sealed class ClassFieldDefinition
 
 internal sealed class ClassStaticBlockDefinition
 {
-    public required FunctionInstance BodyFunction { get; set; }
+    public required Function.Function BodyFunction { get; set; }
 }
 
 internal sealed class PrivateElement

+ 3 - 3
Jint/Native/Object/ObjectInstance.cs

@@ -422,7 +422,7 @@ namespace Jint.Native.Object
                 return Undefined;
             }
 
-            var functionInstance = (FunctionInstance) getter;
+            var functionInstance = (Function.Function) getter;
             return functionInstance._engine.Call(functionInstance, thisObject);
         }
 
@@ -614,7 +614,7 @@ namespace Jint.Native.Object
                 }
             }
 
-            if (ownDesc.Set is not FunctionInstance setter)
+            if (ownDesc.Set is not Function.Function setter)
             {
                 return false;
             }
@@ -1646,7 +1646,7 @@ namespace Jint.Native.Object
             if (initializer is not null)
             {
                 initValue = receiver._engine.Call(initializer, receiver);
-                if (initValue is FunctionInstance functionInstance)
+                if (initValue is Function.Function functionInstance)
                 {
                     functionInstance.SetFunctionName(fieldName);
                 }

+ 2 - 2
Jint/Native/Promise/JsPromise.cs

@@ -26,8 +26,8 @@ internal sealed record PromiseReaction(
 );
 
 internal sealed record ResolvingFunctions(
-    FunctionInstance Resolve,
-    FunctionInstance Reject
+    Function.Function Resolve,
+    Function.Function Reject
 );
 
 public sealed record ManualPromise(

+ 2 - 2
Jint/Native/ShadowRealm/ShadowRealm.cs

@@ -288,7 +288,7 @@ public sealed class ShadowRealm : ObjectInstance
         return value;
     }
 
-    private sealed class StepsFunction : FunctionInstance
+    private sealed class StepsFunction : Function.Function
     {
         private readonly string _exportNameString;
 
@@ -331,7 +331,7 @@ public sealed class ShadowRealm : ObjectInstance
         ExceptionHelper.ThrowTypeError(callerRealm, "Cross-Realm Error: " + message);
     }
 
-    private sealed class WrappedFunction : FunctionInstance
+    private sealed class WrappedFunction : Function.Function
     {
         private readonly ObjectInstance _wrappedTargetFunction;
 

+ 1 - 1
Jint/Pooling/ArgumentsInstancePool.cs

@@ -32,7 +32,7 @@ namespace Jint.Pooling
         public JsArguments Rent(JsValue[] argumentsList) => Rent(null, null, argumentsList, null, false);
 
         public JsArguments Rent(
-            FunctionInstance? func,
+            Function? func,
             Key[]? formals,
             JsValue[] argumentsList,
             DeclarativeEnvironment? env,

+ 2 - 2
Jint/Runtime/CallStack/CallStackElement.cs

@@ -8,7 +8,7 @@ namespace Jint.Runtime.CallStack
     internal readonly struct CallStackElement : IEquatable<CallStackElement>
     {
         public CallStackElement(
-            FunctionInstance function,
+            Function function,
             JintExpression? expression,
             in CallStackExecutionContext callingExecutionContext)
         {
@@ -17,7 +17,7 @@ namespace Jint.Runtime.CallStack
             CallingExecutionContext = callingExecutionContext;
         }
 
-        public readonly FunctionInstance Function;
+        public readonly Function Function;
         public readonly JintExpression? Expression;
         public readonly CallStackExecutionContext CallingExecutionContext;
 

+ 2 - 2
Jint/Runtime/CallStack/JintCallStack.cs

@@ -57,9 +57,9 @@ namespace Jint.Runtime.CallStack
             }
         }
 
-        public int Push(FunctionInstance functionInstance, JintExpression? expression, in ExecutionContext executionContext)
+        public int Push(Function function, JintExpression? expression, in ExecutionContext executionContext)
         {
-            var item = new CallStackElement(functionInstance, expression, new CallStackExecutionContext(executionContext));
+            var item = new CallStackElement(function, expression, new CallStackExecutionContext(executionContext));
             _stack.Push(item);
             if (_statistics is not null)
             {

+ 2 - 2
Jint/Runtime/Environments/ExecutionContext.cs

@@ -13,7 +13,7 @@ namespace Jint.Runtime.Environments
             PrivateEnvironment? privateEnvironment,
             Realm realm,
             GeneratorInstance? generator = null,
-            FunctionInstance? function = null)
+            Function? function = null)
         {
             ScriptOrModule = scriptOrModule;
             LexicalEnvironment = lexicalEnvironment;
@@ -29,7 +29,7 @@ namespace Jint.Runtime.Environments
         public readonly Environment VariableEnvironment;
         public readonly PrivateEnvironment? PrivateEnvironment;
         public readonly Realm Realm;
-        public readonly FunctionInstance? Function;
+        public readonly Function? Function;
         public readonly GeneratorInstance? Generator;
 
         public bool Suspended => Generator?._generatorState == GeneratorState.SuspendedYield;

+ 3 - 3
Jint/Runtime/Environments/FunctionEnvironment.cs

@@ -24,11 +24,11 @@ namespace Jint.Runtime.Environments
 
         private JsValue? _thisValue;
         private ThisBindingStatus _thisBindingStatus;
-        internal readonly FunctionInstance _functionObject;
+        internal readonly Function _functionObject;
 
         public FunctionEnvironment(
             Engine engine,
-            FunctionInstance functionObject,
+            Function functionObject,
             JsValue newTarget) : base(engine)
         {
             _functionObject = functionObject;
@@ -345,7 +345,7 @@ namespace Jint.Runtime.Environments
 
                 if (idLeft != null && right.IsFunctionDefinition())
                 {
-                    ((FunctionInstance) argument).SetFunctionName(idLeft.Name);
+                    ((Function) argument).SetFunctionName(idLeft.Name);
                 }
             }
 

+ 1 - 1
Jint/Runtime/Environments/JintEnvironment.cs

@@ -78,7 +78,7 @@ namespace Jint.Runtime.Environments
         /// <summary>
         /// https://tc39.es/ecma262/#sec-newfunctionenvironment
         /// </summary>
-        internal static FunctionEnvironment NewFunctionEnvironment(Engine engine, FunctionInstance f, JsValue newTarget)
+        internal static FunctionEnvironment NewFunctionEnvironment(Engine engine, Function f, JsValue newTarget)
         {
             return new FunctionEnvironment(engine, f, newTarget)
             {

+ 1 - 1
Jint/Runtime/Interop/ClrFunction.cs

@@ -9,7 +9,7 @@ namespace Jint.Runtime.Interop;
 /// <summary>
 /// Wraps a CLR method into a JS function.
 /// </summary>
-public sealed class ClrFunction : FunctionInstance, IEquatable<ClrFunction>
+public sealed class ClrFunction : Function, IEquatable<ClrFunction>
 {
     internal readonly Func<JsValue, JsValue[], JsValue> _func;
     private readonly bool _bubbleExceptions;

+ 2 - 2
Jint/Runtime/Interop/DefaultTypeConverter.cs

@@ -112,7 +112,7 @@ namespace Jint.Runtime.Interop
                     var delegatePropertyKey = "__jint_delegate_" + type.GUID;
 
                     var func = (Func<JsValue, JsValue[], JsValue>) value;
-                    var functionInstance = func.Target as FunctionInstance;
+                    var functionInstance = func.Target as Function;
 
                     var d = functionInstance?.GetHiddenClrObjectProperty(delegatePropertyKey) as Delegate;
 
@@ -268,7 +268,7 @@ namespace Jint.Runtime.Interop
                 }
                 else if (param.Type.IsArray &&
                          arguments[i].GetCustomAttribute<ParamArrayAttribute>() is not null &&
-                         function.Target is FunctionInstance instance)
+                         function.Target is Function instance)
                 {
                     for (var j = 0; j < instance.GetLength(); j++)
                     {

+ 1 - 1
Jint/Runtime/Interop/DelegateWrapper.cs

@@ -10,7 +10,7 @@ namespace Jint.Runtime.Interop
     /// Represents a FunctionInstance wrapper around a CLR method. This is used by user to pass
     /// custom methods to the engine.
     /// </summary>
-    public sealed class DelegateWrapper : FunctionInstance
+    public sealed class DelegateWrapper : Function
     {
         private static readonly JsString _name = new JsString("delegate");
         private readonly Delegate _d;

+ 1 - 1
Jint/Runtime/Interop/GetterFunction.cs

@@ -6,7 +6,7 @@ namespace Jint.Runtime.Interop;
 /// <summary>
 /// Represents a FunctionInstance wrapping a CLR getter.
 /// </summary>
-internal sealed class GetterFunction: FunctionInstance
+internal sealed class GetterFunction: Function
 {
     private static readonly JsString _name = new JsString("get");
     private readonly Func<JsValue, JsValue> _getter;

+ 1 - 1
Jint/Runtime/Interop/MethodInfoFunction.cs

@@ -7,7 +7,7 @@ using Jint.Native.Function;
 
 namespace Jint.Runtime.Interop
 {
-    internal sealed class MethodInfoFunction : FunctionInstance
+    internal sealed class MethodInfoFunction : Function
     {
         private readonly Type _targetType;
         private readonly object? _target;

+ 1 - 1
Jint/Runtime/Interop/SetterFunction.cs

@@ -6,7 +6,7 @@ namespace Jint.Runtime.Interop;
 /// <summary>
 /// Represents a FunctionInstance wrapping a CLR setter.
 /// </summary>
-internal sealed class SetterFunction : FunctionInstance
+internal sealed class SetterFunction : Function
 {
     private static readonly JsString _name = new JsString("set");
     private readonly Action<JsValue, JsValue> _setter;

+ 2 - 2
Jint/Runtime/Interpreter/Expressions/BindingPatternAssignmentExpression.cs

@@ -253,7 +253,7 @@ namespace Jint.Runtime.Interpreter.Expressions
                         {
                             if (assignmentPattern.Right.IsFunctionDefinition())
                             {
-                                ((FunctionInstance) value).SetFunctionName(new JsString(leftIdentifier.Name));
+                                ((Function) value).SetFunctionName(new JsString(leftIdentifier.Name));
                             }
 
                             AssignToIdentifier(engine, leftIdentifier.Name, value, environment, checkReference);
@@ -346,7 +346,7 @@ namespace Jint.Runtime.Interpreter.Expressions
 
                         if (assignmentPattern.Right.IsFunctionDefinition())
                         {
-                            ((FunctionInstance) value).SetFunctionName(target!.Name);
+                            ((Function) value).SetFunctionName(target!.Name);
                         }
 
                         AssignToIdentifier(context.Engine, target!.Name, value, environment, checkReference);

+ 2 - 2
Jint/Runtime/Interpreter/Expressions/JintAssignmentExpression.cs

@@ -327,7 +327,7 @@ namespace Jint.Runtime.Interpreter.Expressions
             var rval = expression.GetValue(context);
             if (expression._expression.IsAnonymousFunctionDefinition() && _left._expression.Type == Nodes.Identifier)
             {
-                ((FunctionInstance) rval).SetFunctionName(((Identifier) _left._expression).Name);
+                ((Function) rval).SetFunctionName(((Identifier) _left._expression).Name);
             }
 
             return rval;
@@ -422,7 +422,7 @@ namespace Jint.Runtime.Interpreter.Expressions
 
                     if (right._expression.IsFunctionDefinition())
                     {
-                        ((FunctionInstance) rval).SetFunctionName(identifier.Value);
+                        ((Function) rval).SetFunctionName(identifier.Value);
                     }
 
                     environmentRecord.SetMutableBinding(identifier, rval, strict);

+ 2 - 2
Jint/Runtime/Interpreter/Expressions/JintCallExpression.cs

@@ -178,7 +178,7 @@ namespace Jint.Runtime.Interpreter.Expressions
             // ensure logic is in sync between Call, Construct and JintCallExpression!
 
             JsValue result;
-            if (callable is FunctionInstance functionInstance)
+            if (callable is Function functionInstance)
             {
                 var callStack = engine.CallStack;
                 var recursionDepth = callStack.Push(functionInstance, _calleeExpression, engine.ExecutionContext);
@@ -242,7 +242,7 @@ namespace Jint.Runtime.Interpreter.Expressions
                 return JsValue.Undefined;
             }
 
-            var evalFunctionInstance = (EvalFunctionInstance) func;
+            var evalFunctionInstance = (EvalFunction) func;
             var evalArg = argList[0];
             var strictCaller = StrictModeScope.IsStrictModeCode;
             var evalRealm = evalFunctionInstance._realm;

+ 1 - 1
Jint/Runtime/Interpreter/Expressions/JintObjectExpression.cs

@@ -214,7 +214,7 @@ namespace Jint.Runtime.Interpreter.Expressions
 
                     if (expr._expression.IsAnonymousFunctionDefinition())
                     {
-                        var closure = (FunctionInstance) propValue;
+                        var closure = (Function) propValue;
                         closure.SetFunctionName(propName);
                     }
 

+ 2 - 2
Jint/Runtime/Interpreter/JintFunctionDefinition.cs

@@ -34,7 +34,7 @@ internal sealed class JintFunctionDefinition
     /// https://tc39.es/ecma262/#sec-ordinarycallevaluatebody
     /// </summary>
     [MethodImpl(MethodImplOptions.AggressiveInlining | (MethodImplOptions) 512)]
-    internal Completion EvaluateBody(EvaluationContext context, FunctionInstance functionObject, JsValue[] argumentsList)
+    internal Completion EvaluateBody(EvaluationContext context, Function functionObject, JsValue[] argumentsList)
     {
         Completion result;
         JsArguments? argumentsInstance = null;
@@ -150,7 +150,7 @@ internal sealed class JintFunctionDefinition
     /// <summary>
     /// https://tc39.es/ecma262/#sec-runtime-semantics-evaluategeneratorbody
     /// </summary>
-    private static Completion EvaluateGeneratorBody(FunctionInstance functionObject, JsValue[] argumentsList)
+    private static Completion EvaluateGeneratorBody(Function functionObject, JsValue[] argumentsList)
     {
         ExceptionHelper.ThrowNotImplementedException("generators not implemented");
         return default;

+ 1 - 1
Jint/Runtime/Interpreter/Statements/JintExportDefaultDeclaration.cs

@@ -67,7 +67,7 @@ internal sealed class JintExportDefaultDeclaration : JintStatement<ExportDefault
             value = _simpleExpression!.GetValue(context);
         }
 
-        if (value is FunctionInstance functionInstance
+        if (value is Function functionInstance
             && string.IsNullOrWhiteSpace(functionInstance._nameDescriptor?._value?.ToString()))
         {
             functionInstance.SetFunctionName("default");

+ 2 - 2
Jint/Runtime/Interpreter/Statements/JintVariableDeclaration.cs

@@ -75,7 +75,7 @@ namespace Jint.Runtime.Interpreter.Statements
                         value = declaration.Init.GetValue(context).Clone();
                         if (declaration.Init._expression.IsFunctionDefinition())
                         {
-                            ((FunctionInstance) value).SetFunctionName(lhs.ReferencedName);
+                            ((Function) value).SetFunctionName(lhs.ReferencedName);
                         }
                     }
 
@@ -114,7 +114,7 @@ namespace Jint.Runtime.Interpreter.Statements
 
                         if (declaration.Init._expression.IsFunctionDefinition())
                         {
-                            ((FunctionInstance) value).SetFunctionName(lhs.ReferencedName);
+                            ((Function) value).SetFunctionName(lhs.ReferencedName);
                         }
 
                         engine.PutValue(lhs, value);

+ 3 - 3
Jint/Runtime/Intrinsics.cs

@@ -62,7 +62,7 @@ namespace Jint.Runtime
         private PromiseConstructor? _promise;
         private ProxyConstructor? _proxy;
         private ReflectInstance? _reflect;
-        private EvalFunctionInstance? _eval;
+        private EvalFunction? _eval;
         private DateConstructor? _date;
         private IteratorPrototype? _iteratorPrototype;
         private MathInstance? _math;
@@ -254,8 +254,8 @@ namespace Jint.Runtime
         internal GeneratorFunctionConstructor GeneratorFunction =>
             _generatorFunction ??= new GeneratorFunctionConstructor(_engine, _realm, Function.PrototypeObject, IteratorPrototype);
 
-        internal EvalFunctionInstance Eval =>
-            _eval ??= new EvalFunctionInstance(_engine, _realm, Function.PrototypeObject);
+        internal EvalFunction Eval =>
+            _eval ??= new EvalFunction(_engine, _realm, Function.PrototypeObject);
 
         public ErrorConstructor Error =>
             _error ??= new ErrorConstructor(_engine, _realm, Function.PrototypeObject, Object.PrototypeObject, _errorFunctionName, static intrinsics => intrinsics.Error.PrototypeObject);