(original) (raw)
Understood, thanks John.
Am I right in my other question regarding when IC needs patching in first place? If I see safepoint due to this, some IC saw a new receiver? Is there a flag (non-debug) to see which call site and what new receiver appeared? I may reorganize code to avoid this if possible.
sent from my phone
On Jun 5, 2015 1:08 PM, "John Rose" <john.r.rose@oracle.com> wrote:
On Jun 5, 2015, at 8:48 AM, Vitaly Davidovich <vitalyd@gmail.com> wrote:Thanks for the insight. Do you know offhand the condition(s) that prevent updating IC call sites atomically?If you look at the structure of an IC, you'll note it consists of a set-constant instruction and a jump instruction.The jump can be patched atomically, but the set-constant cannot be part of the same transaction.The resulting race conditions are made innocuous with lots of fiddling. IC buffering helps do this.The IC's can be un-buffered (to run at speed) only at safepoints.— John