Here's copy of my Skype comments to you, FTR. — John Great slide deck! Error on slide 12: invokespecial *has* a receiver. While I'm tweaking, I suppose you could say "single dispatch (via table)" vs. "single dispatch (via search)", but that's a matter of debate. Slide 13: optional static arguments are probably TMI on the first slide showing a BSM; they might confuse people into thinking they are dynamic (normal) arguments. Suggest a slide 13.5 which introduces static and dynamic arguments at the same time. Slide 49: /vmindex from symbolic link/s/link/reference/ ("symbolic link" is not a spec. term) Slide 54: The javadoc is messy; you quote it correctly. But, while prim/ref conversion is casting (5.5), it is *also* assignment (5.2); the non-error actions are the same in the prim/ref case. (MHs.explicitCastArguments uses additional types of casting.) I think the only reason we mention 5.5 here instead of 5.2 is an accident during spec creation; we may have briefly an erroneous ref-to-ref cast after the boxing operation. Probably it's worth a footnote, saying something like "assignment (5.2)* ... *spec says casting (5.5) which mandates the same behavior for the prim/ref case". Slide 64: Informative rendering of an LF to bytecodes. Wouldn't it be cool to have have a slide 64.5 of a representative MH compiled to MH-customized native code... (That opens up the whole big question of share-vs-customized, but still would be nice to see object code.) Slide 78: invokeExact_000_MT should renumber the temps; you apparently inserted a2/a3 but did not change t2/t3 to t4/t5. Slide 85: s/invokeGeneric linkage/invokeExact linkage/ (there is no invokeGeneric in the spec, though there was at one point) I really like the Grand Plan slide! Slides 86-89: You have just C frames, which don't give enough context. Suggest appending younger frames to the stack trace. 86 -> MHN.linkCallSite -> MHN.linkCallSiteImpl -> CallSite.makeSite -> MH.invoke (on BSM) 87 -> MHN.linkMethodImpl -> Invokers.methodHandleInvokeLinkerMethod -> Invokers.invokeHandleForm (cf. MethodHandles.exactInvoker) 88 -> Lookup.linkMethodHandleConstant -> MHs.getDirectMethodForConstant -> MHs.getDirectMethodNoSecurityManager -> getDirectMethodCommon (cf. Lookup.findVirtual) 89 -> MHN.findMethodHandleType -> MethodType.makeImpl (cf. MethodType.methodType) Slide 90: Maybe give a use case for each annotation? @Hidden : MethodHandleImpl.guardWithCatch @ForceInline : DirectMethodHandle.internalMemberName @DontInline : LambdaForm.interpretWithArguments @Compiled : output of InvokerBytecodeGenerator.generateCustomizedCode
_______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev