--- old/src/hotspot/share/runtime/deoptimization.cpp 2020-08-07 00:44:25.000000000 +0300 +++ new/src/hotspot/share/runtime/deoptimization.cpp 2020-08-07 00:44:25.000000000 +0300 @@ -49,6 +49,7 @@ #include "oops/typeArrayOop.inline.hpp" #include "oops/verifyOopClosure.hpp" #include "prims/jvmtiThreadState.hpp" +#include "prims/vectorSupport.hpp" #include "runtime/atomic.hpp" #include "runtime/biasedLocking.hpp" #include "runtime/deoptimization.hpp" @@ -1002,7 +1003,15 @@ #endif // INCLUDE_JVMCI || INCLUDE_AOT InstanceKlass* ik = InstanceKlass::cast(k); if (obj == NULL) { +#ifdef COMPILER2 + if (EnableVectorSupport && VectorSupport::is_vector(ik)) { + obj = VectorSupport::allocate_vector(ik, fr, reg_map, sv, THREAD); + } else { + obj = ik->allocate_instance(THREAD); + } +#else obj = ik->allocate_instance(THREAD); +#endif // COMPILER2 } } else if (k->is_typeArray_klass()) { TypeArrayKlass* ak = TypeArrayKlass::cast(k); @@ -1339,6 +1348,11 @@ continue; } #endif // INCLUDE_JVMCI || INCLUDE_AOT +#ifdef COMPILER2 + if (EnableVectorSupport && VectorSupport::is_vector(k)) { + continue; // skip field reassignment for vectors + } +#endif if (k->is_instance_klass()) { InstanceKlass* ik = InstanceKlass::cast(k); reassign_fields_by_klass(ik, fr, reg_map, sv, 0, obj(), skip_internal);