< prev index next >

src/hotspot/share/runtime/deoptimization.cpp

Print this page

        

*** 48,57 **** --- 48,58 ---- #include "oops/oop.inline.hpp" #include "oops/fieldStreams.inline.hpp" #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" #include "runtime/fieldDescriptor.hpp" #include "runtime/fieldDescriptor.inline.hpp"
*** 999,1009 **** --- 1000,1018 ---- } } #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); assert(sv->field_size() % type2size[ak->element_type()] == 0, "non-integral array length"); int len = sv->field_size() / type2size[ak->element_type()];
*** 1279,1288 **** --- 1288,1302 ---- // Don't reassign fields of boxes that came from a cache. Caches may be in CDS. if (sv->is_auto_box() && ((AutoBoxObjectValue*) sv)->is_cached()) { 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); } else if (k->is_typeArray_klass()) { TypeArrayKlass* ak = TypeArrayKlass::cast(k);
< prev index next >