So looking at the synchronized uncounting issue at least when it comes to exception handlers. I had a thought in my mind but it went away for a moment. Trying to get it back, but I believe the thought I had was related to the variables possibly being flagged as countable or not-countable incorrectly within an exception handler.
So the error happens in the parent method on the call stack when it tries to
uncount the exception when it was thrown in the sub-method. So either it is
uncounted to much in the child method or in the parent method. When it checks
the exception after an
INVOKEVIRTUAL it does an un-count on the exception
it seems. I think that is not valid?
So the exceptions are placed in the exception register and those are just copied in the exception handler fragments.
Actually, this may just be related to finally blocks because there will be a
finally done implicitly if an exception is thrown within a
loadClass threw an exception... So I think what I actually need is
to record the slices of a popped call, or at least the last one so I know
what that one did.