[LLVMdev] vmkit java annotations

Alexandru Ionut Diaconescu alexandruionutdiaconescu at gmail.com
Mon Jun 17 06:57:07 PDT 2013


Hello Harris,

Thank you for your answer. So it is there a way of annotating variables in
Java Code, so I can see them into LLVM bytecode?

Thank you !


On Mon, Jun 17, 2013 at 3:54 PM, Harris BAKIRAS <h.bakiras at gmail.com> wrote:

>  Hello Alexandru,
>
> No you did nothing wrong.
>
> We are using our own data structure to describe annotations in J3. So it
> is normal that you can not see your Java annotations inside the LLVM
> bytecode produced.
> If I remember well, our implementation of annotations do not rely on LLVM
> annotations.
>
> Regards,
>
> Harris Bakiras
>
> On 06/17/2013 02:19 PM, Alexandru Ionut Diaconescu wrote:
>
>    Hello everyone,
>
>  I am able to work very well with annotations in C/C++, by using
> __attribute__((annotate("MYANNOTATION"))) static int a; . Inside the LLVM
> bytecode I have @llvm.global.annotations and @llvm.var.annotation.
>
>  However, I was trying to test annotations also in Java, with VMKit. These
> are the commands that I run:
>
> javac -Xlint -g -O Main.java
> ../Release+Asserts/bin/vmjc Main
> ../Release+Asserts/bin/j3 Main
> ../../llvm_new/Release+Asserts/bin/llvm-dis < Main.bc > Main_assembly
>
>  My small program is :
>
> import java.lang.annotation.ElementType;
> import java.lang.annotation.Retention;
> import java.lang.annotation.RetentionPolicy;
> import java.lang.annotation.Target;
> import java.lang.reflect.Method;
>
> @Target(ElementType.METHOD)
> @Retention(RetentionPolicy.RUNTIME)
> @interface Red {
>     String info() default "";
> }
>
>
> class Annotated {
>     @Red(info = "AWESOME")
>     public void foo(String myParam) {
>         System.out.println("This is " + myParam);
>     }
> }
>
>
> class TestAnnotationParser {
>     public void parse(Class clazz) throws Exception {
>         Method[] methods = clazz.getMethods();
>
>
>
>     for (Method method : methods) {
>         if (method.isAnnotationPresent(Red.class)) {
>             Red test = method.getAnnotation(Red.class);
>             String info = test.info();
>
>             if ("AWESOME".equals(info)) {
>                  System.out.println("info is awesome!");
>                  // try to invoke the method with param
>                  method.invoke(
>                     Annotated.class.newInstance(),
>                     info
>                  );
>             }
>         }
>     }
> }
>
>
> }
>
>
> public class Main {
>     public static void main(String[] args) throws Exception {
>         TestAnnotationParser parser = new TestAnnotationParser();
>         parser.parse(Annotated.class);
>     }
> }
>
>
>  However, I cannot find the annotations in the bytecode. It is something
> that I did wrong?
>
>  Thank you in advance !
>
>
>
> _______________________________________________
> LLVM Developers mailing listLLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.eduhttp://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
>


-- 
Best regards,
Alexandru Ionut Diaconescu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130617/75f7e6e8/attachment.html>


More information about the llvm-dev mailing list