JVM Language Summit Examples
Doug Simon
doug.simon at oracle.com
Thu Dec 12 12:03:53 PST 2013
Have a look at CipherBlockChainingSubstitutions and AESCryptSubstitutions for examples of how to substitute methods not on the boot class path.
-Doug
On Dec 12, 2013, at 8:49 PM, Curt Albert <falbert9 at vt.edu> wrote:
> Thank you for pointing me to the example. I got it working and am now trying to adapt it to substitute methods for a class of my own. I tried to import the package containing the class but I don't know where to add it to the classpath when it compiles. Whenever I compile I keep getting error package does not exist. Is there something in mx.py that I need to change to add to the classpath?
>
> Thanks,
> Curt Albert
>
>
> On Wed, Dec 11, 2013 at 1:54 AM, Doug Simon <doug.simon at oracle.com> wrote:
>
> On Dec 11, 2013, at 2:17 AM, Christian Thalinger <christian.thalinger at oracle.com> wrote:
>
> > Not everyone has read your paper, Doug ;-)
>
> … which doesn’t even mention this feature ;-)
>
> I was about to add some javadoc to MethodSubstitution but see it’s already there:
>
> /**
> * Denotes a substitute method. A substitute method can call the original/substituted method by
> * making a recursive call to itself.
> */
> @Retention(RetentionPolicy.RUNTIME)
> @Target(ElementType.METHOD)
> public @interface MethodSubstitution {
>
> -Doug
>
> > On Dec 10, 2013, at 2:14 PM, Doug Simon <doug.simon at oracle.com> wrote:
> >
> >> Yes, it’s certainly looks like a bug doesn’t it!
> >>
> >> However, this is the (not so well documented) mechanism to do a partial intrinsification. That is, sometimes (as in this example) you only want to optimize for a subset of the potential arguments that can be passed to a method. A recursive call in such an intrinsification will be translated as a call to the original method.
> >>
> >> -Doug
> >>
> >> On Dec 10, 2013, at 10:53 PM, Doychin Bondzhev <doychin at dsoft-bg.com> wrote:
> >>
> >>> Looking at code for pow I think there is something wrong here.
> >>>
> >>> It could be my mistake but this looks like recursive call of pow from pow. So in case of x and y not in any of the special cases this will result in stack overflow. Probably on the last line of call to pow should be Math.pow instead of just pow.
> >>>
> >>>
> >>> On Tue, Dec 10, 2013 at 11:05 PM, Doug Simon <doug.simon at oracle.com> wrote:
> >>> Hi Curt,
> >>>
> >>> Have a look at MathSubstitutionsX86.pow(double, double)[1] for an example of how intrinsification is done now.
> >>>
> >>> -Doug
> >>>
> >>> [1] http://hg.openjdk.java.net/graal/graal/file/4eacfd0767ed/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/MathSubstitutionsX86.java
> >>>
> >>> On Dec 10, 2013, at 8:33 PM, Curt Albert <falbert9 at vt.edu> wrote:
> >>>
> >>>> I have been trying to look at using graal for compiler
> >>>> optimizations in my java code and found the presentation given at JVM
> >>>> Language Summit 2011. In that presentation there was an example of
> >>>> intrinsificiation called SafeAddNode. I was trying to reproduce this
> >>>> example, but it seems the intrinsification code has moved. Is it still
> >>>> possible to run this same example? If so how?
> >>>>
> >>>>
> >>>>
> >>>> Thanks,
> >>>>
> >>>> Curt Albert
> >>>>
> >>>> Systems Software Research Group
> >>>>
> >>>> Bradley Department of Electrical and Compuer Engineering
> >>>>
> >>>> Virginia Tech
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>
> >
>
>
More information about the graal-dev
mailing list