64 位 Windows 程序中的某些类型的事件,例如被零除、空指针引用、堆栈溢出(如果您使用保护页检测到),通常会使用结构化或向量异常来处理(在发现有必要处理它们的程序中) .
在 JIT 编译器的上下文中,结构化异常有点尴尬,因为需要提供展开信息并符合所有函数的展开协议,这可能无法与移动代码块的复制垃圾收集器很好地交互,这表明使用向量异常。
虽然通常期望向量化异常处理程序返回,但将它们用于此目的将涉及使用 longjmp 或一些等效的代码退出处理程序,这些代码会重置堆栈指针而不进行任何展开。
这是合法的,还是我忽略了一些绊脚石?
Unix 中的等价物似乎是合法的,因为它的价值:Longjmp out of signal handler?