Restore old behavior in FrameInstance#getCallNode() - #90
Conversation
There was a problem hiding this comment.
What does "next" mean in this context? It means "caller"? Or the node representing the "call site" that invoked the method with this frame instance?
There was a problem hiding this comment.
"The call node that invoked a target to get outside this frame" maybe?
There was a problem hiding this comment.
Better?
/**
* @return the node that represents the caller of the next upper {@link CallTarget target} in
* the stack trace. Null in case there is no upper target or if the target was not
* invoked using a {@link TruffleRuntime#createDirectCallNode(CallTarget) direct} or
* {@link TruffleRuntime#createDirectCallNode(CallTarget) indirect} call node.
*
* @since 0.8 or earlier
**/
Node getCallNode();
There was a problem hiding this comment.
I do not think I understand "outside". Maybe we can at least get some ASCII art visualization of the call stack to help with a common understanding how the frame iteration takes place.
There was a problem hiding this comment.
This PR is there to fix the problems for the languages quickly. But I will prepare nice ASCII art for in the next PR :-).
There was a problem hiding this comment.
Do we call it a call stack of frames or a stack of targets ?
It is a FrameInstanceVisitor so I would think frame.
|
The fix works for me. |
783d047 to
43c60b8
Compare
|
Works for me. Merging when Travis completes. |
Restore old behavior in FrameInstance#getCallNode()
| * @return a node representing the callsite of the next new target on the stack. Null in case | ||
| * there is no upper target or if the target was not invoked using a | ||
| * {@link TruffleRuntime#createDirectCallNode(CallTarget) direct} or | ||
| * {@link TruffleRuntime#createDirectCallNode(CallTarget) indirect} call node. |
There was a problem hiding this comment.
Should be {@link TruffleRuntime#createIndirectCallNode()}
…truffle:instrumentation_source_listeners to master * commit '5c2f517858620e8fdb7ae7682c47666280292063': Fix comment about WeakHashMap. Fix failing safe replace test. Make the wrapper insertion more atomic; cannot check parent node immeditaly after replace. might be racy. Run five times for one second instead of one time for five seconds in the multithreaded test. Fix a node is safely replaceable if the child was not found anymore in the parent. Fix iterator needs to capture the array. Add explicit event classes for source events for better evolvability. Fix unused import. Only use atomic accesses to instrumenterMap. Only mark bindings as disposed when they are invalidated. Implement iterator for AbstractAsyncList and use Collection as an interface for it to make it easier to reuse in the future. Fix typos in javadoc. Fix typo in AbstractAsyncList Fix unnecessary eager initialization of the debugger. Implement source and source section load event listeners; Further refinements to thread-safety. Cleanup event binding. Fix checkstyle. Make instrumentation thread-safe. Add multithreading test for instrumentation.
@chrisseaton please verify that the behavior is now fixed in ruby.