_frame_complete_offset points into the codeBlob behind the instructions setting up the frame.
In C2, this is set by calling C->set_frame_complete() when MachPrologNode is emitted.
Unfortunately, the node is also emitted to find out it's size into a small buffer, also after the real emit. So the _frame_complete_offset ended up being only the offset within the MachPrologNode, missing the MachUepNode.
In the debug build the call at output.cpp:1831 build if (n->size(_regalloc) < (current_offset-instr_offset)) overwrites the proper value.
I also implement setting this on ppc.
In C2, this is set by calling C->set_frame_complete() when MachPrologNode is emitted.
Unfortunately, the node is also emitted to find out it's size into a small buffer, also after the real emit. So the _frame_complete_offset ended up being only the offset within the MachPrologNode, missing the MachUepNode.
In the debug build the call at output.cpp:1831 build if (n->size(_regalloc) < (current_offset-instr_offset)) overwrites the proper value.
I also implement setting this on ppc.
- duplicates
-
JDK-8008415 C2: MachPrologNode::emit may set incorrect frame complete offset from scratch buffer
-
- Closed
-