public static void AddOrUpdateChild32(FunctionInfo *parent, FunctionInfo *child, Profiler profiler) { int slot = child->Id; while (true) { slot &= parent->LastChildIndex; FunctionInfo *slotContent = (FunctionInfo *)profiler.TranslatePointer(GetChildren32(parent)[slot]); if (slotContent == null || slotContent->Id == child->Id) { GetChildren32(parent)[slot] = profiler.TranslatePointerBack32(child); break; } slot++; } }
public static void AddOrUpdateChild32(FunctionInfo* parent, FunctionInfo* child, Profiler profiler) { int slot = child->Id; while (true) { slot &= parent->LastChildIndex; FunctionInfo* slotContent = (FunctionInfo*)profiler.TranslatePointer(GetChildren32(parent)[slot]); if (slotContent == null || slotContent->Id == child->Id) { GetChildren32(parent)[slot] = profiler.TranslatePointerBack32(child); break; } slot++; } }
internal unsafe override void *TranslatePointer(TargetProcessPointer ptr) { return(profiler.TranslatePointer(ptr)); }