예제 #1
0
 public override void Clear()
 {
     localsProvider.Clear();
     extraLocals.Clear();
     localsProvider     = null !;
     realLocalVariables = null !;
     localVariables     = null !;
 }
예제 #2
0
 public InterpreterLocalsProvider(DebuggerRuntimeImpl runtime)
 {
     localsProvider     = null !;
     realLocalVariables = null !;
     localVariables     = null !;
     this.runtime       = runtime;
     extraLocals        = new Dictionary <int, DbgDotNetValue>();
 }
예제 #3
0
		public override void Initialize(DbgEvaluationContext context, DbgStackFrame frame, VariablesProvider argumentsProvider, VariablesProvider localsProvider, bool canFuncEval, CancellationToken cancellationToken) {
			Debug.Assert(this.context == null);
			if (this.context != null)
				throw new InvalidOperationException();
			this.context = context;
			this.frame = frame;
			this.cancellationToken = cancellationToken;
			this.canFuncEval = canFuncEval;
			this.argumentsProvider = argumentsProvider ?? DefaultArgumentsProvider;
			this.localsProvider = localsProvider ?? DefaultLocalsProvider;
			Debug.Assert(valuesToDispose.Count == 0);
		}
예제 #4
0
 public override void Initialize(DbgEvaluationInfo evalInfo, DmdMethodBody realMethodBody, VariablesProvider argumentsProvider, VariablesProvider localsProvider, bool canFuncEval)
 {
     Debug.Assert(this.evalInfo == null);
     if (this.evalInfo != null)
     {
         throw new InvalidOperationException();
     }
     this.evalInfo          = evalInfo;
     this.canFuncEval       = canFuncEval;
     this.argumentsProvider = argumentsProvider ?? DefaultArgumentsProvider;
     interpreterLocalsProvider.Initialize(realMethodBody, localsProvider ?? DefaultLocalsProvider);
     Debug.Assert(valuesToDispose.Count == 0);
 }
예제 #5
0
		public override void Clear(DbgDotNetValue returnValue) {
			context = null;
			frame = null;
			cancellationToken = default;
			canFuncEval = false;
			foreach (var v in valuesToDispose) {
				if (v != returnValue && argumentsProvider.CanDispose(v) && localsProvider.CanDispose(v))
					v.Dispose();
			}
			valuesToDispose.Clear();
			argumentsProvider.Clear();
			localsProvider.Clear();
			argumentsProvider = null;
			localsProvider = null;
			reflectionAppDomain = null;
		}
예제 #6
0
 public override void Clear(DbgDotNetValue returnValue)
 {
     evalInfo    = null;
     canFuncEval = false;
     foreach (var v in valuesToDispose)
     {
         if (v != returnValue && argumentsProvider.CanDispose(v) && interpreterLocalsProvider.CanDispose(v))
         {
             v.Dispose();
         }
     }
     valuesToDispose.Clear();
     argumentsProvider.Clear();
     interpreterLocalsProvider.Clear();
     argumentsProvider = null;
 }
예제 #7
0
 public abstract DbgDotNetValueResult Execute(DbgEvaluationContext context, DbgStackFrame frame, IList <DmdType> genericTypeArguments, IList <DmdType> genericMethodArguments, VariablesProvider argumentsProvider, VariablesProvider localsProvider, DbgDotNetILInterpreterState state, string typeName, string methodName, DbgEvaluationOptions options, out DmdType expectedType, CancellationToken cancellationToken);
예제 #8
0
 internal void Initialize(DmdMethodBody?realMethodBody, VariablesProvider localsProvider)
 {
     Debug.Assert(extraLocals.Count == 0);
     realLocalVariables  = realMethodBody?.LocalVariables ?? emptyLocalVariableInfos;
     this.localsProvider = localsProvider;
 }
예제 #9
0
 public abstract DbgDotNetValueResult Execute(DbgEvaluationInfo evalInfo, IList <DmdType> genericTypeArguments, IList <DmdType> genericMethodArguments, VariablesProvider argumentsProvider, VariablesProvider localsProvider, DbgDotNetILInterpreterState state, string typeName, string methodName, DbgEvaluationOptions options, out DmdType expectedType);
예제 #10
0
 public abstract void Initialize(DbgEvaluationContext context, DbgStackFrame frame, DmdMethodBody realMethodBody, VariablesProvider argumentsProvider, VariablesProvider localsProvider, bool canFuncEval, CancellationToken cancellationToken);
예제 #11
0
 public abstract void Initialize(DbgEvaluationInfo evalInfo, DmdMethodBody realMethodBody, VariablesProvider argumentsProvider, VariablesProvider localsProvider, bool canFuncEval);