4346 } |
4346 } |
4347 return load; |
4347 return load; |
4348 } |
4348 } |
4349 |
4349 |
4350 Node* GraphKit::load_String_coder(Node* ctrl, Node* str) { |
4350 Node* GraphKit::load_String_coder(Node* ctrl, Node* str) { |
4351 if (java_lang_String::has_coder_field()) { |
4351 if (!CompactStrings) { |
4352 if (!CompactStrings) { |
4352 return intcon(java_lang_String::CODER_UTF16); |
4353 return intcon(java_lang_String::CODER_UTF16); |
4353 } |
4354 } |
4354 int coder_offset = java_lang_String::coder_offset_in_bytes(); |
4355 int coder_offset = java_lang_String::coder_offset_in_bytes(); |
4355 const TypeInstPtr* string_type = TypeInstPtr::make(TypePtr::NotNull, C->env()->String_klass(), |
4356 const TypeInstPtr* string_type = TypeInstPtr::make(TypePtr::NotNull, C->env()->String_klass(), |
4356 false, NULL, 0); |
4357 false, NULL, 0); |
4357 const TypePtr* coder_field_type = string_type->add_offset(coder_offset); |
4358 const TypePtr* coder_field_type = string_type->add_offset(coder_offset); |
4358 int coder_field_idx = C->get_alias_index(coder_field_type); |
4359 int coder_field_idx = C->get_alias_index(coder_field_type); |
4359 return make_load(ctrl, basic_plus_adr(str, str, coder_offset), |
4360 return make_load(ctrl, basic_plus_adr(str, str, coder_offset), |
4360 TypeInt::BYTE, T_BYTE, coder_field_idx, MemNode::unordered); |
4361 TypeInt::BYTE, T_BYTE, coder_field_idx, MemNode::unordered); |
|
4362 } else { |
|
4363 return intcon(0); // false |
|
4364 } |
|
4365 } |
4361 } |
4366 |
4362 |
4367 void GraphKit::store_String_value(Node* ctrl, Node* str, Node* value) { |
4363 void GraphKit::store_String_value(Node* ctrl, Node* str, Node* value) { |
4368 int value_offset = java_lang_String::value_offset_in_bytes(); |
4364 int value_offset = java_lang_String::value_offset_in_bytes(); |
4369 const TypeInstPtr* string_type = TypeInstPtr::make(TypePtr::NotNull, C->env()->String_klass(), |
4365 const TypeInstPtr* string_type = TypeInstPtr::make(TypePtr::NotNull, C->env()->String_klass(), |