The Licensed Internal Code options (LICOPT) parameter allows you to specify individual compile-time options.
This parameter is intended for the advanced programmer who understands the potential benefits and drawbacks of each selected type of compiler option.
The following table shows the strings that are recognized by the Licensed Internal Code option (LICOPT) parameter. These strings are not case sensitive, but they are shown as mixed case for readability.
String | Description |
---|---|
AllFieldsVolatile | If set, treats all fields as volatile. |
NoAllFieldsVolatile | If set, no fields are treated as volatile. |
AllowBindingToLoadedClasses | Indicates that temporary class representations that were created as a result of defineClass calls within a running Java™ virtual machine may be tightly bound to other class representations within the same Java virtual machine. |
NoAllowBindingToLoadedClasses | Indicates that temporary class representations that were created as a result of defineClass calls within a running Java virtual machine may not be tightly bound to other class representations within the same Java virtual machine. |
AllowClassCloning | When multiple Java programs are generated for a JAR file, allows copies of classes from one program to be included in the generated code for another program. Facilitates aggressive inlining. |
NoAllowClassCloning | Does not allow copies of classes from one program to be included in the generated code for another program. |
AllowInterJarBinding | Allows tight binding to classes outside the class or JAR file being compiled. Facilitates aggressive optimizations. |
NoAllowInterJarBinding | Does not allow tight binding to classes outside the class or JAR file being compiled. This overrides the presence of the CLASSPATH and JDKVER parameters on CRTJVAPGM. |
AllowMultiThreadedCreate | CRTJVAPGM uses multiple threads, if they are available, during creation. On multiprocessor systems this enables the use of more than one processor at a time, reducing the overall time required for a long CRTJVAPGM operation. However, the CRTJVAPGM will use more system resources, leaving fewer resources available for other applications. |
NoAllowMultiThreadedCreate | Indicates that CRTJVAPGM performs as usual, using only one thread. |
AnalyzeObjectLifetimes | Performs analysis using visible classes to determine which objects are short-lived. A short-lived object does not outlive the method in which it is allocated, and may be subject to more aggressive optimizations. |
NoAnalyzeObjectLifetimes | Does not perform analysis of short-lived objects. |
AllowBindingWithinJar | Indicates that class representations within a ZIP file or JAR file may be tightly bound to other class representations within the same ZIP file or JAR file. |
NoAllowBindingWithinJar | Indicates that class representations within a ZIP file or JAR file may not be tightly bound to other class representations within the same ZIP file or JAR file. |
AllowInlining | Tells the translator that it is permitted to inline local methods. This is the default for optimization levels 30 and 40. |
NoAllowInlining | Does not tell the translator that it is permitted to inline local methods. |
AssumeUnknownFieldsNonvolatile | When the attributes of a field in an external class cannot be determined, this parameter generates code by assuming that the field is non-volatile. |
NoAssumeUnknownFieldsNonvolatile | When the attributes of a field in an external class cannot be determined, this parameter generates code by assuming that the field is volatile. |
BindErrorHandling | Specifies what action should be taken if, as a result of honoring the AssumeUnknownFieldsNonvolatile, PreresolveExtRef, or PreLoadExtRef Licensed Internal Code option, the Java virtual machine class loader detects that a class representation contains method representations, which cannot be used in the current context. |
BindInit | Uses bound call to local init methods. |
NoBindInit | Does not use bound call to local init methods. |
BindSpecial | Uses bound call to local special methods. |
NoBindSpecial | Does not use bound call to local special methods. |
BindStatic | Uses bound call to local static methods. |
NoBindStatic | Does not use bound call to local static methods. |
BindTrivialFields | Binds trivial field references during program creation. |
NoBindTrivialFields | Resolves field references at first touch. |
BindVirtual | Uses bound call to local final virtual methods. |
NoBindVirtual | Does not use bound call to local final virtual methods. |
DeferResolveOnClass | Takes a string parameter that is presumed to be the name of a class (for example, java.lang.Integer). When you set PreresolveExtRef to optimization level 40, classes that are specified with DeferResolveOnClass are not in the preresolve operation. This is useful if some classes in unused paths in the code are not in the CLASSPATH. It allows you to use optimization level 40 regardless of this by specifying a "DeferResolveOnClass='somepath.someclass'" for each missing class. Multiple DeferResolveOnClass entries are allowed. |
DevirtualizeFinalJDK | Allows CRTJVAPGM to use knowledge of the standard JDK to devirtualize calls to those JDK methods that are known to be final methods or members of final classes. It is the default at optimization levels 30 and 40. |
NoDevirtualizeFinalJDK | Does not allow CRTJVAPGM to use knowledge of the standard JDK to devirtualize calls to those JDK methods that are known to be final methods or members of final classes. |
DevirtualizeRecursive | Causes special code to be generated in the case of some recursive methods and eliminates much of the overhead of the recursive method calls. However, additional checking logic is generated on initial entry to the recursive method, so performance may not improve in cases of shallow recursion. |
NoDevirtualizeRecursive | Does not cause special code to be generated in the case of some recursive methods. |
DisableIntCse | Causes certain common subexpression optimizations to be disabled when generating code for certain types of integer expressions. This may improve overall optimization by exposing other optimization opportunities to the Optimizing Translator. |
NoDisableIntCse | Causes certain common subexpression optimizations to not be disabled when generating code for certain types of integer expressions. This generally results in better performing code at lower optimization levels. |
DoExtBlockCSE | Performs extended basic block common subexpression elimination. |
NoDoExtBlockCSE | Does not perform extended basic block common subexpression elimination. |
DoLocalCSE | Performs local common subexpression elimination. |
NoDoLocalCSE | Does not perform local common subexpression elimination. |
EnableCseForCastCheck | If set, generates code for castcheck that can be DAGed to an earlier instance. |
NoEnableCseForCastCheck | Is not set; does not generate code for castcheck that can be DAGed to an earlier instance. |
ErrorReporting | Runtime error reporting field**: Provides the option to fail the compile when encountering verification or class format errors. 0=Report all errors immediately; 0=Report all errors immediately; 1=Defer reporting of bytecode verification errors; 2=Defer reporting of bytecode verification errors and class format errors to runtime. |
HideInternalMethods | Causes methods in cloned classes to be made internal, allowing the methods to be omitted if there are no references to them or if all references are inlined. The default is HideInternalMethods for optimization 40 and NoHideInternalMethods for optimization between 0 and 30. |
InlineArrayCopy | Causes the inlining of the System.arraycopy method in some cases of scalar arrays. |
NoInlineArrayCopy | Prevents the inlining of the System.arraycopy method. |
InlineInit | Inlines init methods for java.lang classes. |
NoInlineInit | Does not inline init methods. |
InlineMiscFloat | Inlines miscellaneous float/double methods from java.lang.Math. |
NoInlineMiscFloat | Does not inline miscellaneous float/double methods. |
InlineMiscInt | Inlines miscellaneous int/long methods from java.lang.Math. |
NoInlineMiscInt | Does not inline miscellaneous int/long methods. |
InlineStringMethods | Permits inlining of certain methods from java/lang/String. |
NoInlineStringMethods | Inhibits inlining of certain methods from java/lang/String. |
InlineTransFloat | Inlines transcendental float/double methods from java.lang.Math. |
NoInlineTransFloat | Does not inline transcendental float/double methods. |
OptimizeJsr | Generates better code for "jsr" bytecodes that have a single target. |
NoOptimizeJsr | Suppresses generation of better code for "jsr" bytecodes that have a single target. |
PreloadExtRef | Indicates that referenced classes may be preloaded (without class initialization) upon method entry. |
NoPreloadExtRef | Indicates that referenced classes may not be preloaded upon method entry. However, the PreresolveExtRef parameter overrides this setting and causes referenced classes to be preloaded and initialized. |
PreresolveExtRef | Preresolves referenced methods at method entry. |
NoPreresolveExtRef | Resolves method references at first touch. Use to resolve "class not found" exceptions on programs that run on other machines. |
ProgramSizeFactor | When a JAR file may be large enough to require multiple Java programs, this numeric value (default 100) is used to determine how large each program can grow. |
ShortCktAthrow | If set, attempt to short-circuit athrows. |
NoShortCktAthrow | Is not set, does not attempt to short-circuit athrows. |
ShortCktExSubclasses | If set, recognizes some subclasses of Exception and short-circuit them directly. |
NoShortCktExSubclasses | If not set, does not recognize some subclasses of Exception and short-circuit them directly. |
StrictFloat | Inhibits floating-point optimizations that are not strictly compliant with the Java specification. |
NoStrictFloat | Permits floating-point optimizations that are not strictly compliant with the Java specification. |
The double asterisk (**) signifies that these strings require a numerical value for input in the syntax of stringname=number (with no spaces in between).