staticvoid $noinline$testIntervalHole(int arg, boolean test) { // Move the argument to callee save to ensure it is in // a readable register.
moveArgToCalleeSave(); if (test) {
staticField1 = arg; // The environment use of `arg` should not make it live.
doStaticNativeCallLiveVreg();
} else {
staticField2 = arg; // The environment use of `arg` should not make it live.
doStaticNativeCallLiveVreg();
} if (staticField1 == 2) { thrownew Error("");
}
}
// The value of dex register which originally holded "Object[] o = new Object[1];" will not be // live at the call to doStaticNativeCallLiveVreg after code sinking optimizizaion. staticvoid $noinline$testCodeSinking(int x) {
Object[] o = new Object[1];
o[0] = o;
doStaticNativeCallLiveVreg(); if (doThrow) { thrownew Error(o.toString());
}
}
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.