Do not attempt to preserve stack frames.
authorRobert Sesek <rsesek@bluestatic.org>
Sun, 12 Apr 2020 16:54:41 +0000 (12:54 -0400)
committerRobert Sesek <rsesek@bluestatic.org>
Sun, 12 Apr 2020 16:54:41 +0000 (12:54 -0400)
Doing so means the variable contents in previously-loaded stack frames
does not update.

Source/DebuggerModel.m

index f409e837543cf8418fc70d02f66479d9a2dcdd2f..3d0bbdf7ca6fc8d22288e8d851629156e4d214e3 100644 (file)
 }
 
 - (void)updateStack:(NSArray<StackFrame*>*)newStack {
-  // Iterate, in reverse order from the bottom to the top, both stacks to find
-  // the point of divergence.
-  NSEnumerator* itNewStack = [newStack reverseObjectEnumerator];
-  NSEnumerator* itOldStack = [self.stack reverseObjectEnumerator];
-
-  StackFrame* frameNew;
-  StackFrame* frameOld = [itOldStack nextObject];
-  NSUInteger oldStackOffset = self.stack.count;
-  while (frameNew = [itNewStack nextObject]) {
-    if ([frameNew isEqual:frameOld]) {
-      --oldStackOffset;
-      frameOld = [itOldStack nextObject];
-    } else {
-      break;
-    }
-  }
-
   [self willChangeValueForKey:@"stack"];
 
-  // Remove any frames from the top of the stack that are not shared with the
-  // new stack.
-  [_stack removeObjectsInRange:NSMakeRange(0, oldStackOffset)];
-
-  // Continue inserting objects to update the stack with the new frames.
-  while (frameNew) {
-    [_stack insertObject:frameNew atIndex:0];
-    frameNew = [itNewStack nextObject];
-  }
+  [_stack removeAllObjects];
+  [_stack addObjectsFromArray:newStack];
 
   // Renumber the stack.
   for (NSUInteger i = 0; i < self.stack.count; ++i)