--- old/src/hotspot/share/opto/type.hpp 2018-07-19 17:56:20.382531915 +0200 +++ new/src/hotspot/share/opto/type.hpp 2018-07-19 17:56:11.799515297 +0200 @@ -1087,7 +1087,7 @@ int instance_id() const { return _instance_id; } bool is_known_instance_field() const { return is_known_instance() && _offset.get() >= 0; } - bool can_be_value_type() const { return EnableValhalla && (_klass->is_valuetype() || ((_klass->is_java_lang_Object() || _klass->is_interface()) && !klass_is_exact())); } + virtual bool can_be_value_type() const { return EnableValhalla && (_klass == NULL || _klass->is_valuetype() || ((_klass->is_java_lang_Object() || _klass->is_interface()) && !klass_is_exact())); } virtual intptr_t get_con() const; @@ -1296,6 +1296,8 @@ const TypeAryPtr* with_field_offset(int offset) const; const TypePtr* add_field_offset_and_offset(intptr_t offset) const; + virtual bool can_be_value_type() const { return false; } + // Convenience common pre-built types. static const TypeAryPtr *RANGE; static const TypeAryPtr *OOPS;