void MaybeAddAmbiguousArrayGet(HArrayGet* aget) {
DataType::Type type = aget->GetType();
DCHECK(!DataType::IsFloatingPointType(type)); if (DataType::IsIntOrLongType(type)) {
ambiguous_agets_.push_back(aget);
}
}
void MaybeAddAmbiguousArraySet(HArraySet* aset) {
DataType::Type type = aset->GetValue()->GetType(); if (DataType::IsIntOrLongType(type)) {
ambiguous_asets_.push_back(aset);
}
}
void AddUninitializedString(HNewInstance* string) { // In some rare cases (b/27847265), the same NewInstance may be seen // multiple times. We should only consider it once for removal, so we // ensure it is not added more than once. // Note that we cannot check whether this really is a NewInstance of String // before RTP. We DCHECK that in RemoveRedundantUninitializedStrings. if (!ContainsElement(uninitialized_strings_, string)) {
uninitialized_strings_.push_back(string);
}
}
// Attempts to resolve types of aget(-wide) instructions and type values passed // to aput(-wide) instructions from reference type information on the array // input. Returns false if the type of an array is unknown. bool FixAmbiguousArrayOps();
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.