// The code below is written in a way that would crash // the generated code at the time of submission of this test. // Therefore, changes to the register allocator may // affect the reproducibility of the crash. publicstaticvoid $noinline$foo(int a, int b, int c) { // The division on x86 will take EAX and EDX, leaving ECX // to put the ART current method.
c = c / 42; // We use the empty string for forcing the slow path. // The slow path for charAt, when it is intrinsified, will // move the parameter to ECX and therefore overwrite the ART // current method. "".charAt(c);
// Do more things in the method to prevent inlining.
c = c / 42; "".charAt(c);
c = c / 42; "".charAt(c);
c = c / 42; "".charAt(c);
c = c / 42; "".charAt(c);
c = c / 42; "".charAt(c);
c = c / 42; "".charAt(c);
c = c / 42; "".charAt(c);
c = c / 42; "".charAt(c);
c = c / 42; "".charAt(c);
c = c / 42; "".charAt(c);
c = c / 42; "".charAt(c);
}
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.