Мой вопрос касается внутреннего типа перечисления System.Threading.StackCrawlMark . Я понимаю, как используется перечисление, но не то, как оно работает.
Согласно справочному источнику:
объявление локального var этого типа перечисления и передача его с помощью ref в функция, которая должна выполнить сканирование стека, предотвратит встраивание вызова и передаст точку ESP для сканирования стека в
Глядя на то, как enum используется в различных классах, я могу видеть, что иногда прошло еще до 4 методов. (Например, см. Использование в MethodInfo.GetCurrentMethod метод.)
Мой вопрос таков: что такое точка ESP и как передача StackCrawlMark в качестве ссылки ref
сохраняет местоположение на каком он был создан? Как только код в конце концов достигает вызова extern
, как он узнает, в каком методе был создан StackCrawlMark?