Open gacholio opened 5 years ago
Discovered while debugging #5449
While we're at it, both the C and DDR walkers should output the j2iFrame
and i2jState
values at the start of the walk and when they get updated.
In fact, all of the stack commands should take the new optional parameters.
We will want the initial decompilation stack as an extra parameter as well.
Suggest the new parm order be:
thread,pc,sp,a0,pc,literals,decomp,j2iframe,i2jstate
with the last three being optional
The
!jitstack
and!jitstackslots
command in DDR are used to start the stack walk at a JIT frame by providing sufficient root values to walk the stack.Currently, the root values are
vmThread
,SP
,PC
and (optionally)ELS
. For a complete walk, values forj2iFrame
andi2jState
must also be provided (likeELS
, they are currently inferred from the vmThread). The two new args should be added as optional.j2iFrame
is eitherNULL
(if no jit->interp transition has ever taken place) or theBP
value of thej2i
frame.i2jState
starts off pointing to theELS i2jState
, but is updated to point into thej2i
frame each time one is seen.Almost all real-world uses of these extensions target a JIT frame very near the top of the stack, so this has not been an issue.