CallSite ccs = new MyCCS(MCS.type(), handler); // trigger call to handler
if (ccs != holder[0]) { thrownew AssertionError("different call site instances");
} for (int i = 0; i < 20_000; i++) {
test(false); // should not throw
}
}
privatestaticvoid testMutableCallSite() throws Throwable { // warm-up for (int i = 0; i < 20000; i++) {
mcs.setTarget(mh_foo);
} // run for (int n = 0; n < 2; n++) {
mcs.setTarget(mh_foo); for (int i = 0; i < 5; i++) {
assertEQ(RESULT1, runMutableCallSite());
}
mcs.setTarget(mh_bar); for (int i = 0; i < 5; i++) {
assertEQ(RESULT2, runMutableCallSite());
}
}
} privatestaticvoid testVolatileCallSite() throws Throwable { // warm-up for (int i = 0; i < 20000; i++) {
vcs.setTarget(mh_foo);
} // run for (int n = 0; n < 2; n++) {
vcs.setTarget(mh_foo); for (int i = 0; i < 5; i++) {
assertEQ(RESULT1, runVolatileCallSite());
}
vcs.setTarget(mh_bar); for (int i = 0; i < 5; i++) {
assertEQ(RESULT2, runVolatileCallSite());
}
}
}
privatestaticint runMutableCallSite() throws Throwable { int sum = 0; for (int i = 0; i < N; i++) {
sum += (int) INDY_mcs().invokeExact(i, i+1);
} return sum;
} privatestaticint runVolatileCallSite() throws Throwable { int sum = 0; for (int i = 0; i < N; i++) {
sum += (int) INDY_vcs().invokeExact(i, i+1);
} return sum;
}
staticint foo(int a, int b) { return a + b; } staticint bar(int a, int b) { return a - b; }
privatestaticvoid shouldNotCallThis() { // if this gets called, the transformation has not taken place thrownew AssertionError("this code should be statically transformed away by Indify");
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-10-11)
¤
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.