< prev index next >

src/hotspot/share/classfile/javaClasses.inline.hpp

Print this page

109   }
110   int arr_length = value->length();
111   if (!is_latin1(java_string)) {
112     assert((arr_length & 1) == 0, "should be even for UTF16 string");
113     arr_length >>= 1; // convert number of bytes to number of elements
114   }
115   return arr_length;
116 }
117 
118 int java_lang_String::length(oop java_string) {
119   assert(_initialized, "Must be initialized");
120   assert(is_instance(java_string), "must be java_string");
121   typeArrayOop value = java_lang_String::value_no_keepalive(java_string);
122   return length(java_string, value);
123 }
124 
125 bool java_lang_String::is_instance(oop obj) {
126   return obj != nullptr && obj->klass() == vmClasses::String_klass();
127 }
128 







129 // Accessors
130 
131 oop java_lang_ref_Reference::weak_referent_no_keepalive(oop ref) {
132   assert(java_lang_ref_Reference::is_weak(ref) || java_lang_ref_Reference::is_soft(ref), "must be Weak or Soft Reference");
133   return ref->obj_field_access<ON_WEAK_OOP_REF | AS_NO_KEEPALIVE>(_referent_offset);
134 }
135 
136 oop java_lang_ref_Reference::weak_referent(oop ref) {
137   assert(java_lang_ref_Reference::is_weak(ref) || java_lang_ref_Reference::is_soft(ref), "must be Weak or Soft Reference");
138   return ref->obj_field_access<ON_WEAK_OOP_REF>(_referent_offset);
139 }
140 
141 oop java_lang_ref_Reference::phantom_referent_no_keepalive(oop ref) {
142   assert(java_lang_ref_Reference::is_phantom(ref), "must be Phantom Reference");
143   return ref->obj_field_access<ON_PHANTOM_OOP_REF | AS_NO_KEEPALIVE>(_referent_offset);
144 }
145 
146 oop java_lang_ref_Reference::unknown_referent_no_keepalive(oop ref) {
147   return ref->obj_field_access<ON_UNKNOWN_OOP_REF | AS_NO_KEEPALIVE>(_referent_offset);
148 }

109   }
110   int arr_length = value->length();
111   if (!is_latin1(java_string)) {
112     assert((arr_length & 1) == 0, "should be even for UTF16 string");
113     arr_length >>= 1; // convert number of bytes to number of elements
114   }
115   return arr_length;
116 }
117 
118 int java_lang_String::length(oop java_string) {
119   assert(_initialized, "Must be initialized");
120   assert(is_instance(java_string), "must be java_string");
121   typeArrayOop value = java_lang_String::value_no_keepalive(java_string);
122   return length(java_string, value);
123 }
124 
125 bool java_lang_String::is_instance(oop obj) {
126   return obj != nullptr && obj->klass() == vmClasses::String_klass();
127 }
128 
129 // We need to be able to check if this is a string even when we are in an
130 // erroneous state where the klass is corrupted/can't be read safely.
131 // This happens when printing an oop during GC error reporting.
132 bool java_lang_String::is_instance_without_asserts(oop obj) {
133   return obj != nullptr && obj->klass_without_asserts() == vmClasses::String_klass();
134 }
135 
136 // Accessors
137 
138 oop java_lang_ref_Reference::weak_referent_no_keepalive(oop ref) {
139   assert(java_lang_ref_Reference::is_weak(ref) || java_lang_ref_Reference::is_soft(ref), "must be Weak or Soft Reference");
140   return ref->obj_field_access<ON_WEAK_OOP_REF | AS_NO_KEEPALIVE>(_referent_offset);
141 }
142 
143 oop java_lang_ref_Reference::weak_referent(oop ref) {
144   assert(java_lang_ref_Reference::is_weak(ref) || java_lang_ref_Reference::is_soft(ref), "must be Weak or Soft Reference");
145   return ref->obj_field_access<ON_WEAK_OOP_REF>(_referent_offset);
146 }
147 
148 oop java_lang_ref_Reference::phantom_referent_no_keepalive(oop ref) {
149   assert(java_lang_ref_Reference::is_phantom(ref), "must be Phantom Reference");
150   return ref->obj_field_access<ON_PHANTOM_OOP_REF | AS_NO_KEEPALIVE>(_referent_offset);
151 }
152 
153 oop java_lang_ref_Reference::unknown_referent_no_keepalive(oop ref) {
154   return ref->obj_field_access<ON_UNKNOWN_OOP_REF | AS_NO_KEEPALIVE>(_referent_offset);
155 }
< prev index next >