< prev index next >
src/hotspot/share/opto/type.cpp
Print this page
@@ -3042,10 +3042,14 @@
// 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,10 +3548,15 @@
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,10 +4080,16 @@
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 >