Question on layer/peeling

Michael Barker mikeb01 at
Tue Jan 6 20:38:52 UTC 2015

> The trick can also be coaxed to give semi-plausible semantics to seemingly
> bogus expressions like "x == null" or "x == (Object)y" (for any x).  If "x"
> is a primitive, since autobox conversions never produce "null", then "x ==
> null" and "x == (Object)y" are complicated ways of saying "false".  But
> this doesn't help with nulling assignments like "a[i] = null"; there you
> need "T.null" (my bikeshed preference to "default(T)").

I think allowing x == null (always false) and a[i] = T.null for value types
would certainly make the coding simpler as it would avoid layering for a
number of very common cases.  In the null comparison case I would assume
that Hotspot could easily throw away the condition altogether in the
specialised class.

More information about the valhalla-dev mailing list