Home » openjdk-7 » com.sun.tools » javac » jvm » [javadoc | source]
public enum class: Target [javadoc | source]
The classfile version target.

This is NOT part of any supported API. If you write code that depends on this, you do so at your own risk. This code and its internal interfaces are subject to change or deletion without notice.
Field Summary
public  Target JDK1_1     
public  Target JDK1_2     
public  Target JDK1_3     
public  Target JDK1_4    J2SE1.4 = Merlin. 
public  Target JSR14    Support for the JSR14 prototype compiler (targeting 1.4 VMs augmented with a few support classes). This is a transitional option that will not be supported in the product. 
public  Target JDK1_4_1    The following are undocumented transitional targets that we had used to test VM fixes in update releases. We do not promise to retain support for them. 
public  Target JDK1_4_2     
public  Target JDK1_5    Tiger. 
public  Target JDK1_6    JDK 6. 
public  Target JDK1_7    JDK 7. 
public final  String name     
public final  int majorVersion     
public final  int minorVersion     
public static final  Target DEFAULT     
Method from com.sun.tools.javac.jvm.Target Summary:
MAX,   MIN,   arrayBinaryCompatibility,   boxWithConstructors,   classLiteralsNoInit,   compilerBootstrap,   generateCLDCStackmap,   generateEmptyAfterBig,   generateStackMapTable,   hasClassLiterals,   hasEnclosingMethodAttribute,   hasInitCause,   hasInvokedynamic,   hasIterable,   hasMethodHandles,   initializeFieldsBeforeSuper,   instance,   interfaceFieldsBinaryCompatibility,   interfaceObjectOverridesBinaryCompatibility,   isPackageInfoSynthetic,   lookup,   obeyBinaryCompatibility,   requiresIproxy,   syntheticNameChar,   useAnnotationFlag,   useBridgeFlag,   useEnumFlag,   useInnerCacheClass,   usePrivateSyntheticFields,   useStringBuilder,   useSyntheticFlag,   useVarargsFlag
Method from com.sun.tools.javac.jvm.Target Detail:
 public static Target MAX() 
 public static Target MIN() 
 public boolean arrayBinaryCompatibility() 
    Starting in 1.5, the compiler uses an array type as the qualifier for method calls (such as clone) where required by the language and VM spec. Earlier versions of the compiler qualified them by Object.
 public boolean boxWithConstructors() 
    For bootstrapping, we use J2SE1.4's wrapper class constructors to implement boxing.
 public boolean classLiteralsNoInit() 
    Although we may not have support for class literals, should we avoid initializing the class that the literal refers to? See 4468823
 public boolean compilerBootstrap(Symbol c) 
    For bootstrapping javac only, we do without java.lang.Enum if necessary.
 public boolean generateCLDCStackmap() 
    Return true if cldc-style stack maps need to be generated.
 public boolean generateEmptyAfterBig() 
    Do we generate "empty" stackmap slots after double and long?
 public boolean generateStackMapTable() 
    Beginning in -target 6, we generate stackmap attribute in compact format.
 public boolean hasClassLiterals() 
    Does the VM have direct support for class literals?
 public boolean hasEnclosingMethodAttribute() 
    In J2SE1.5.0, we introduced the "EnclosingMethod" attribute for improved reflection support.
 public boolean hasInitCause() 
    Although we may not have support for class literals, when we throw a NoClassDefFoundError, should we initialize its cause?
 public boolean hasInvokedynamic() 
    Does the VM support an invokedynamic instruction?
 public boolean hasIterable() 
    For bootstrapping, we use J2SE1.4's java.util.Collection instead of java.lang.Iterable.
 public boolean hasMethodHandles() 
    Does the VM support polymorphic method handle invocation? Affects the linkage information output to the classfile. An alias for {@code hasInvokedynamic}, since all the JSR 292 features appear together.
 public boolean initializeFieldsBeforeSuper() 
    Beginning in 1.4, we take advantage of the possibility of emitting code to initialize fields before calling the superclass constructor. This is allowed by the VM spec, but the verifier refused to allow it until 1.4. This is necesary to translate some code involving inner classes. See, for example, 4030374.
 public static Target instance(Context context) 
 public boolean interfaceFieldsBinaryCompatibility() 
    Beginning after 1.2, we follow the binary compatibility rules for interface fields. The 1.2 VMs had bugs handling interface fields when compiled using binary compatibility (see 4400598), so this is an accommodation to them.
 public boolean interfaceObjectOverridesBinaryCompatibility() 
    Beginning in -target 1.5, we follow the binary compatibility rules for interface methods that redefine Object methods. Earlier VMs had bugs handling such methods compiled using binary compatibility (see 4392595, 4398791, 4392595, 4400415). The VMs were fixed during or soon after 1.4. See 4392595.
 public boolean isPackageInfoSynthetic() 
    Beginning in -target 6, package-info classes are marked synthetic.
 public static Target lookup(String name) 
 public boolean obeyBinaryCompatibility() 
    Beginning with -target 1.2 we obey the JLS rules for binary compatibility, emitting as the qualifying type of a reference to a method or field the type of the qualifier. In earlier targets we use as the qualifying type the class in which the member was found. The following methods named *binaryCompatibility() indicate places where we vary from this general rule.
 public boolean requiresIproxy() 
    In -target 1.1 and earlier, the compiler is required to emit synthetic method definitions in abstract classes for interface methods that are not overridden. We call them "Miranda" methods.
 public char syntheticNameChar() 
    Return the character to be used in constructing synthetic identifiers, where not specified by the JLS.
 public boolean useAnnotationFlag() 
 public boolean useBridgeFlag() 
 public boolean useEnumFlag() 
 public boolean useInnerCacheClass() 
    Sometimes we need to create a field to cache a value like a class literal of the assertions flag. In -target 1.4.2 and later we create a new synthetic class for this instead of using the outermost class. See 4401576.
 public boolean usePrivateSyntheticFields() 
    Beginning in -target 1.4.2, we make synthetic variables package-private instead of private. This is to prevent the necessity of access methods, which effectively relax the protection of the field but bloat the class files and affect execution.
 public boolean useStringBuilder() 
    Beginning in 1.5, we have an unsynchronized version of StringBuffer called StringBuilder that can be used by the compiler for string concatenation.
 public boolean useSyntheticFlag() 
    Beginning in 1.5, we have flag bits we can use instead of marker attributes.
 public boolean useVarargsFlag()