Hi all

We're implementing a debugger extension that uses the JDI popframes method to pop the most recent method's stack frame of the stack.
The popframes blurb in the JDI specification gives an example


where it states that any changes made the integer argument passed into the method will not be restored if the method's stack frame is popped. I understand that. What I DON'T understand, is why this is.

If the method argument "int x" is stored in the leaf method's stack frame, and that stack frame is popped with the popframes method, then surely this method argument would also be popped off the stack too, and original value stored in the caller method would be passed back in when the method is re-invoked? I mean, the int is a primitive, and so is passed-by-value into the method.

Any explanation would be hugely appreciated.