< prev index next >

src/hotspot/share/opto/type.cpp

Print this page

        

*** 26,35 **** --- 26,37 ---- #include "ci/ciMethodData.hpp" #include "ci/ciTypeFlow.hpp" #include "classfile/symbolTable.hpp" #include "classfile/systemDictionary.hpp" #include "compiler/compileLog.hpp" + #include "gc/shared/barrierSet.hpp" + #include "gc/shared/c2/barrierSetC2.hpp" #include "libadt/dict.hpp" #include "memory/oopFactory.hpp" #include "memory/resourceArea.hpp" #include "oops/instanceKlass.hpp" #include "oops/instanceMirrorKlass.hpp"
*** 3042,3051 **** --- 3044,3057 ---- // There are no instances of a general oop. // Return self unchanged. return this; } + const TypeOopPtr *TypeOopPtr::cast_to_nonconst() const { + return this; + } + //-----------------------------cast_to_exactness------------------------------- const Type *TypeOopPtr::cast_to_exactness(bool klass_is_exact) const { // There is no such thing as an exact general oop. // Return self unchanged. return this;
*** 3544,3553 **** --- 3550,3564 ---- const TypeOopPtr *TypeInstPtr::cast_to_instance_id(int instance_id) const { if( instance_id == _instance_id ) return this; return make(_ptr, klass(), _klass_is_exact, const_oop(), _offset, instance_id, _speculative, _inline_depth); } + const TypeOopPtr *TypeInstPtr::cast_to_nonconst() const { + if (const_oop() == NULL) return this; + return make(NotNull, klass(), _klass_is_exact, NULL, _offset, _instance_id, _speculative, _inline_depth); + } + //------------------------------xmeet_unloaded--------------------------------- // Compute the MEET of two InstPtrs when at least one is unloaded. // Assume classes are different since called after check for same name/class-loader const TypeInstPtr *TypeInstPtr::xmeet_unloaded(const TypeInstPtr *tinst) const { int off = meet_offset(tinst->offset());
*** 4071,4080 **** --- 4082,4097 ---- const TypeOopPtr *TypeAryPtr::cast_to_instance_id(int instance_id) const { if( instance_id == _instance_id ) return this; return make(_ptr, const_oop(), _ary, klass(), _klass_is_exact, _offset, instance_id, _speculative, _inline_depth); } + const TypeOopPtr *TypeAryPtr::cast_to_nonconst() const { + if (const_oop() == NULL) return this; + return make(NotNull, NULL, _ary, klass(), _klass_is_exact, _offset, _instance_id, _speculative, _inline_depth); + } + + //-----------------------------narrow_size_type------------------------------- // Local cache for arrayOopDesc::max_array_length(etype), // which is kind of slow (and cached elsewhere by other users). static jint max_array_length_cache[T_CONFLICT+1]; static jint max_array_length(BasicType etype) {
< prev index next >