RFR (S) 8141044: C1 should fold (this == null) to false
rednaxelafx at gmail.com
Mon Nov 2 21:05:27 UTC 2015
C1's HIR switched to using SSA form in JDK6; before that, the C1 in
mainstream HotSpot used to use a more traditional expression-tree kind of
HIR, which also had a "Phi" instruction but not exact in the SSA sense, but
rather, to serve as a placeholder for values on the expression stack on
basic block boundaries.
On Mon, Nov 2, 2015 at 12:57 PM, John Rose <john.r.rose at oracle.com> wrote:
> On Nov 1, 2015, at 4:59 AM, Aleksey Shipilev <aleksey.shipilev at oracle.com>
> Um. I think there is a confusion between "slots" in bytecode and Locals
> in C1. My cursory reading of C1 code tells me that only the receiver and
> arguments are exposed as Local-s in C1: see the patch, where only
> GraphBuilder::state_at_entry creates Locals, and also it is said:
> // A local is a placeholder for an incoming argument to a function call.
> LEAF(Local, Instruction)
> It would seem that we track what instruction had born the value, and
> Local is a placeholder for "look, it was coming from the outside".
> Therefore, I think a subsequent astore_0/aload_0 cannot be confused as
> the receiver.
> That's right, so my concern is not an issue here.
> My knowledge of C1 is out of date (or just plain wrong). I didn't notice
> have Phi functions (like C2 does) to fix these sorts of problems.
> I learn something old every day!
> — John
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the hotspot-compiler-dev