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 { }