publicclass Main { publicstaticint foo(int start, int[] array) { int result = 0; // We will create HDeoptimize nodes for this first loop, and a phi // for the array length which will only be used within the loop. for (int i = start; i < 3; i++) {
result += array[i]; for (int j = 0; j < 2; ++j) { // The HBoundsCheck for this array access will be updated to access // the array length phi created for the deoptimization checks of the // first loop. This crashed the compiler which used to DCHECK an array // length in a bounds check cannot be a phi.
result += array[j];
}
} return result;
}
publicstaticint bar(int start, int[] array) { int result = 0; for (int i = start; i < 3; i++) {
result += array[i]; for (int j = 0; j < 2; ++j) {
result += array[j]; // The following operations would lead to BCE wanting to add another // deoptimization, but it crashed assuming the input of a `HBoundsCheck` // must be a `HArrayLength`.
result += array[0];
result += array[1];
result += array[2];
}
} return result;
}
publicstaticvoid main(String[] args) { int[] a = newint[] { 1, 2, 3, 4, 5 }; int result = foo(1, a); if (result != 11) { thrownew Error("Got " + result + ", expected " + 11);
}
result = bar(1, a); if (result != 35) { thrownew Error("Got " + result + ", expected " + 35);
}
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-29)
¤
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.