001    package org.bridj.ann;
002    
003    import java.lang.annotation.ElementType;
004    import java.lang.annotation.Retention;
005    import java.lang.annotation.RetentionPolicy;
006    import java.lang.annotation.Target;
007    
008    /**
009     * Forbid direct assembly wiring of a native method.<br>
010     * On select platforms and when some conditions are met, BridJ connects the native code to Java using optimized assembly glues, which might not be as stable as using <a href="http://dyncall.org/">dyncall</a> (BridJ's ffi library).<br>
011     * In case of unexplained crash / bug, one should first try to set the BRIDJ_DIRECT=0 environment variable or set the bridj.direct=false Java property.<br>
012     * If this solves the issue, <a href="http://code.google.com/p/nativelibs4java/issues/entry">a bug should be filed</a> and this annotation can be used as a workaround to selectively disable raw calls for some methods. 
013     * @author ochafik
014     */
015    @Retention(RetentionPolicy.RUNTIME)
016    @Target({ElementType.METHOD, ElementType.TYPE})
017    public @interface DisableDirect { }