--- old/src/hotspot/share/c1/c1_Canonicalizer.cpp 2019-03-11 14:25:03.430356023 +0100 +++ new/src/hotspot/share/c1/c1_Canonicalizer.cpp 2019-03-11 14:25:03.090356027 +0100 @@ -644,11 +644,13 @@ void Canonicalizer::do_TypeCast (TypeCast* x) {} void Canonicalizer::do_Invoke (Invoke* x) {} void Canonicalizer::do_NewInstance (NewInstance* x) {} +void Canonicalizer::do_NewValueTypeInstance(NewValueTypeInstance* x) {} void Canonicalizer::do_NewTypeArray (NewTypeArray* x) {} void Canonicalizer::do_NewObjectArray (NewObjectArray* x) {} void Canonicalizer::do_NewMultiArray (NewMultiArray* x) {} void Canonicalizer::do_CheckCast (CheckCast* x) { - if (x->klass()->is_loaded()) { + if (x->klass()->is_loaded() && !x->is_never_null()) { + // Don't canonicalize for non-nullable types -- we need to throw NPE. Value obj = x->obj(); ciType* klass = obj->exact_type(); if (klass == NULL) {