< prev index next >
src/hotspot/share/opto/type.cpp
Print this page
*** 3042,3051 ****
--- 3042,3055 ----
// 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 ****
--- 3548,3562 ----
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 ****
--- 4080,4095 ----
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 >