couple questions on method handle combinators
Roland Westrelin
rwestrel at redhat.com
Tue Jun 13 15:39:03 UTC 2017
> Below is a simple test class. Unfortunately running this crashes the VM.
Thanks for putting the test together. C2 fails to inline much of
anything...
2131 126 GWTTest::run_Q_helper (16 bytes)
@ 10 java.lang.invoke.LambdaForm$MH/499105359::invoke_MT (28 bytes) force inline by annotation
@ 9 java.lang.invoke.Invokers::checkGenericType (6 bytes) force inline by annotation
@ 2 java.lang.invoke.MethodHandle::asType (28 bytes) inline (hot)
@ 12 java.lang.invoke.MethodHandle::asTypeCached (21 bytes) inline (hot)
@ 24 java.lang.invoke.MethodHandle::asTypeUncached (59 bytes) too big
@ 16 java.lang.invoke.Invokers::checkCustomized (23 bytes) force inline by annotation
@ 1 java.lang.invoke.MethodHandleImpl::isCompileConstant (2 bytes) (intrinsic)
@ 19 java.lang.invoke.Invokers::maybeCustomize (28 bytes) don't inline by annotation
@ 24 java.lang.invoke.MethodHandle::invokeBasic(LLI)L (0 bytes) receiver not constant
with:
static V run_Q_helper() throws Throwable {
V v = (V) Q_MH_GWT.invoke(Q_V1_ARRAY, Q_V2_ARRAY, 0);
return v;
}
static int run_Q() throws Throwable {
int sum = 0;
for (int i = 0; i < 100_000; i++) {
V v = run_Q_helper();
sum += v.x;
}
return sum;
}
Roland.
More information about the valhalla-dev
mailing list