mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
7032162: assert(flat != TypePtr::BOTTOM) failed: cannot alias-analyze an untyped ptr
Reviewed-by: kvn
This commit is contained in:
parent
2126589fd0
commit
eb8db40092
2 changed files with 14 additions and 4 deletions
|
@ -194,6 +194,16 @@ bool ciObject::can_be_constant() {
|
|||
// ciObject::should_be_constant()
|
||||
bool ciObject::should_be_constant() {
|
||||
if (ScavengeRootsInCode >= 2) return true; // force everybody to be a constant
|
||||
if (!JavaObjectsInPerm && !is_null_object()) {
|
||||
// We want Strings and Classes to be embeddable by default since
|
||||
// they used to be in the perm world. Not all Strings used to be
|
||||
// embeddable but there's no easy way to distinguish the interned
|
||||
// from the regulars ones so just treat them all that way.
|
||||
ciEnv* env = CURRENT_ENV;
|
||||
if (klass() == env->String_klass() || klass() == env->Class_klass()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return handle() == NULL || !is_scavengable();
|
||||
}
|
||||
|
||||
|
|
|
@ -1172,16 +1172,16 @@ void PhaseStringOpts::int_getChars(GraphKit& kit, Node* arg, Node* char_array, N
|
|||
|
||||
Node* PhaseStringOpts::copy_string(GraphKit& kit, Node* str, Node* char_array, Node* start) {
|
||||
Node* string = str;
|
||||
Node* offset = kit.make_load(NULL,
|
||||
Node* offset = kit.make_load(kit.control(),
|
||||
kit.basic_plus_adr(string, string, java_lang_String::offset_offset_in_bytes()),
|
||||
TypeInt::INT, T_INT, offset_field_idx);
|
||||
Node* count = kit.make_load(NULL,
|
||||
Node* count = kit.make_load(kit.control(),
|
||||
kit.basic_plus_adr(string, string, java_lang_String::count_offset_in_bytes()),
|
||||
TypeInt::INT, T_INT, count_field_idx);
|
||||
const TypeAryPtr* value_type = TypeAryPtr::make(TypePtr::NotNull,
|
||||
TypeAry::make(TypeInt::CHAR,TypeInt::POS),
|
||||
ciTypeArrayKlass::make(T_CHAR), true, 0);
|
||||
Node* value = kit.make_load(NULL,
|
||||
Node* value = kit.make_load(kit.control(),
|
||||
kit.basic_plus_adr(string, string, java_lang_String::value_offset_in_bytes()),
|
||||
value_type, T_OBJECT, value_field_idx);
|
||||
|
||||
|
@ -1342,7 +1342,7 @@ void PhaseStringOpts::replace_string_concat(StringConcat* sc) {
|
|||
}
|
||||
// Node* offset = kit.make_load(NULL, kit.basic_plus_adr(arg, arg, offset_offset),
|
||||
// TypeInt::INT, T_INT, offset_field_idx);
|
||||
Node* count = kit.make_load(NULL, kit.basic_plus_adr(arg, arg, java_lang_String::count_offset_in_bytes()),
|
||||
Node* count = kit.make_load(kit.control(), kit.basic_plus_adr(arg, arg, java_lang_String::count_offset_in_bytes()),
|
||||
TypeInt::INT, T_INT, count_field_idx);
|
||||
length = __ AddI(length, count);
|
||||
string_sizes->init_req(argi, NULL);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue