RFR (S) 8141044: C1 should fold (this == null) to false

Krystal Mok 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.

- Kris

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>
> wrote:
>
>
> 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
> they
> 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...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20151102/c76c7f5e/attachment.html>


More information about the hotspot-compiler-dev mailing list