Switch InterpreterFrame to deterministic unwinding#125182
Conversation
|
Tagging subscribers to this area: @BrzVlad, @janvorli, @kg |
|
I don't think this is going to work. We need to know the callee saved registers value in the |
7903973 to
508674c
Compare
|
@janvorli, good point. The |
fde94ba to
9f2788f
Compare
8b0852b to
64305cd
Compare
|
@am11, I still feel like capturing the non-volatile registers on the non-exceptional path is a perf hit that we would not like to take. Especially since it is done on every instruction interpreted where every added instruction counts. As an alternative, I've been recently experimenting with the WASM-like resume after catch, it is much more tricky than I've thought it would be due to the need of adding personality routine to more helpers than just the InterpreterStub, having to manually unwind the frame in that personality routine (as it gets the context in the function the personality routine is attached to and we need the context of the caller so that we can rethrow the exception from there) and there might be more. I didn't have a chance to progress on that experiment recently, but I'd like to finish that. I still feel like keeping using OS libunwind for Apple OSes wouldn't hurt, as it is always present and it doesn't add any burden over there. And iOS is actually the scenario that needs interpreter and that we care about the most (besides WASM). |
|
@janvorli, your alternative approach sounds like a worthwhile direction. I haven’t done performance testing myself yet to understand the impact. Although we will ship only for iOS at first, we already build this code on all desktop platforms. i.e. we can’t discount it from “last six usages of in-tree libunwind” equation due to linux, FreeBSD and others. |
|
@janvorli, this is awaiting your review. |
@JulieLeeMSFT in the comments above, we have agreed to do it differently. |
|
Superseded by #128728. |
No description provided.