From e3e665525a59823563c23babaf5d0e29a44a644a Mon Sep 17 00:00:00 2001 From: Arseny Chernyaev Date: Fri, 13 Jan 2017 15:44:57 +0300 Subject: caching thread state --- Mono.Debugger.Soft/Mono.Debugger.Soft/ThreadMirror.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'Mono.Debugger.Soft') diff --git a/Mono.Debugger.Soft/Mono.Debugger.Soft/ThreadMirror.cs b/Mono.Debugger.Soft/Mono.Debugger.Soft/ThreadMirror.cs index 5dbe5eb..938a4ca 100644 --- a/Mono.Debugger.Soft/Mono.Debugger.Soft/ThreadMirror.cs +++ b/Mono.Debugger.Soft/Mono.Debugger.Soft/ThreadMirror.cs @@ -13,6 +13,8 @@ namespace Mono.Debugger.Soft ManualResetEvent fetchingEvent = new ManualResetEvent (false); ThreadInfo info; StackFrame[] frames; + bool threadStateInvalid = true; + ThreadState threadState; internal ThreadMirror (VirtualMachine vm, long id) : base (vm, id) { } @@ -30,6 +32,7 @@ namespace Mono.Debugger.Soft internal void InvalidateFrames () { cacheInvalid = true; + threadStateInvalid = true; } internal void FetchFrames (bool mustFetch = false) { @@ -91,7 +94,11 @@ namespace Mono.Debugger.Soft public ThreadState ThreadState { get { - return (ThreadState)vm.conn.Thread_GetState (id); + if (threadStateInvalid) { + threadState = (ThreadState) vm.conn.Thread_GetState (id); + threadStateInvalid = false; + } + return threadState; } } -- cgit v1.2.3