Added "optimize" flag to settings everywhere

This commit is contained in:
Denis Zharkov
2014-07-11 12:39:14 +04:00
committed by Alexander Udalov
parent 433c9cd4a5
commit 0e683b0b99
28 changed files with 301 additions and 25 deletions
@@ -20,4 +20,5 @@ import org.jetbrains.org.objectweb.asm.Opcodes;
public class OptimizationUtils {
public final static int API = Opcodes.ASM5;
public static final boolean DEFAULT_OPTIMIZATION_FLAG = true;
}
@@ -24,6 +24,7 @@ import org.jetbrains.jet.codegen.binding.CodegenBinding;
import org.jetbrains.jet.codegen.inline.InlineCodegenUtil;
import org.jetbrains.jet.codegen.intrinsics.IntrinsicMethods;
import org.jetbrains.jet.codegen.optimization.OptimizationClassBuilderFactory;
import org.jetbrains.jet.codegen.optimization.OptimizationUtils;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.ScriptDescriptor;
import org.jetbrains.jet.lang.diagnostics.DiagnosticHolder;
@@ -117,7 +118,9 @@ public class GenerationState {
@NotNull List<JetFile> files
) {
this(project, builderFactory, Progress.DEAF, module, bindingContext, files, true, false, GenerateClassFilter.GENERATE_ALL,
InlineCodegenUtil.DEFAULT_INLINE_FLAG, null, null, DiagnosticHolder.DO_NOTHING, null);
InlineCodegenUtil.DEFAULT_INLINE_FLAG, OptimizationUtils.DEFAULT_OPTIMIZATION_FLAG,
null, null, DiagnosticHolder.DO_NOTHING, null
);
}
public GenerationState(
@@ -131,6 +134,7 @@ public class GenerationState {
boolean generateNotNullParamAssertions,
GenerateClassFilter generateClassFilter,
boolean inlineEnabled,
boolean optimizationEnabled,
@Nullable Collection<FqName> packagesWithRemovedFiles,
@Nullable String moduleId,
@NotNull DiagnosticHolder diagnostics,
@@ -152,8 +156,13 @@ public class GenerationState {
this.typeMapper = new JetTypeMapperWithOutDirectory(this.bindingContext, classBuilderMode, outDirectory);
this.intrinsics = new IntrinsicMethods();
if (optimizationEnabled) {
builderFactory = new OptimizationClassBuilderFactory(builderFactory);
}
this.classFileFactory = new ClassFileFactory(this, new BuilderFactoryForDuplicateSignatureDiagnostics(
new OptimizationClassBuilderFactory(builderFactory), this.bindingContext, diagnostics));
builderFactory, this.bindingContext, diagnostics));
this.generateNotNullAssertions = generateNotNullAssertions;
this.generateNotNullParamAssertions = generateNotNullParamAssertions;
@@ -33,7 +33,7 @@ public class CompilerArgumentsUtil {
"false".equalsIgnoreCase(option);
}
public static String getWrongInlineOptionErrorMessage(@Nullable String inline) {
return "Wrong value for inline option: '" + inline + "'. Should be 'on'/'off' or 'true'/'false'";
public static String getWrongCheckOptionErrorMessage(@Nullable String option, @Nullable String value) {
return "Wrong value for " + option + " option: '" + value + "'. Should be 'on'/'off' or 'true'/'false'";
}
}
@@ -79,6 +79,10 @@ public class K2JVMCompilerArguments extends CommonCompilerArguments {
@ValueDescription("{on,off}")
public String inline;
@Argument(value = "optimize", description = "Optimization mode (default is on)")
@ValueDescription("{on,off}")
public String optimize;
@Override
@NotNull
public String executableScriptFileName() {
@@ -39,6 +39,9 @@ public class JVMConfigurationKeys {
public static final CompilerConfigurationKey<Boolean> ENABLE_INLINE =
CompilerConfigurationKey.create("enable inline");
public static final CompilerConfigurationKey<Boolean> ENABLE_OPTIMIZATION =
CompilerConfigurationKey.create("enable optimization");
public static final CompilerConfigurationKey<File> INCREMENTAL_CACHE_BASE_DIR =
CompilerConfigurationKey.create("incremental cache base dir");
@@ -35,6 +35,7 @@ import org.jetbrains.jet.cli.jvm.compiler.KotlinToJVMBytecodeCompiler;
import org.jetbrains.jet.cli.jvm.repl.ReplFromTerminal;
import org.jetbrains.jet.codegen.CompilationException;
import org.jetbrains.jet.codegen.inline.InlineCodegenUtil;
import org.jetbrains.jet.codegen.optimization.OptimizationUtils;
import org.jetbrains.jet.config.CommonConfigurationKeys;
import org.jetbrains.jet.config.CompilerConfiguration;
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
@@ -116,6 +117,8 @@ public class K2JVMCompiler extends CLICompiler<K2JVMCompilerArguments> {
configuration.put(JVMConfigurationKeys.GENERATE_NOT_NULL_PARAMETER_ASSERTIONS, arguments.notNullParamAssertions);
configuration.put(JVMConfigurationKeys.ENABLE_INLINE,
CompilerArgumentsUtil.optionToBooleanFlag(arguments.inline, InlineCodegenUtil.DEFAULT_INLINE_FLAG));
configuration.put(JVMConfigurationKeys.ENABLE_OPTIMIZATION,
CompilerArgumentsUtil.optionToBooleanFlag(arguments.optimize, OptimizationUtils.DEFAULT_OPTIMIZATION_FLAG));
configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector);
@@ -209,7 +212,11 @@ public class K2JVMCompiler extends CLICompiler<K2JVMCompilerArguments> {
super.checkArguments(argument);
if (!CompilerArgumentsUtil.checkOption(argument.inline)) {
throw new IllegalArgumentException(CompilerArgumentsUtil.getWrongInlineOptionErrorMessage(argument.inline));
throw new IllegalArgumentException(CompilerArgumentsUtil.getWrongCheckOptionErrorMessage("inline", argument.inline));
}
if (!CompilerArgumentsUtil.checkOption(argument.optimize)) {
throw new IllegalArgumentException(CompilerArgumentsUtil.getWrongCheckOptionErrorMessage("optimize", argument.optimize));
}
}
@@ -40,6 +40,7 @@ import org.jetbrains.jet.cli.common.messages.MessageCollector;
import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys;
import org.jetbrains.jet.codegen.*;
import org.jetbrains.jet.codegen.inline.InlineCodegenUtil;
import org.jetbrains.jet.codegen.optimization.OptimizationUtils;
import org.jetbrains.jet.codegen.state.GenerationState;
import org.jetbrains.jet.codegen.state.Progress;
import org.jetbrains.jet.config.CommonConfigurationKeys;
@@ -344,6 +345,7 @@ public class KotlinToJVMBytecodeCompiler {
configuration.get(JVMConfigurationKeys.GENERATE_NOT_NULL_PARAMETER_ASSERTIONS, false),
GenerationState.GenerateClassFilter.GENERATE_ALL,
configuration.get(JVMConfigurationKeys.ENABLE_INLINE, InlineCodegenUtil.DEFAULT_INLINE_FLAG),
configuration.get(JVMConfigurationKeys.ENABLE_OPTIMIZATION, OptimizationUtils.DEFAULT_OPTIMIZATION_FLAG),
packagesWithRemovedFiles,
moduleId,
diagnosticHolder,
@@ -7,7 +7,7 @@ ERR:
BUILD FAILED
[TestData]/build.xml:5: org.jetbrains.jet.cli.jvm.compiler.CompileEnvironmentException: Wrong value for inline option: 'wrong'. Should be 'on'/'off' or 'true'/'false'
at org.jetbrains.jet.buildtools.ant.BytecodeCompilerTask.execute(BytecodeCompilerTask.java:147)
at org.jetbrains.jet.buildtools.ant.BytecodeCompilerTask.execute(BytecodeCompilerTask.java:153)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
@@ -297,6 +297,7 @@ public class KotlinJavaFileStubProvider<T extends WithFileStubAndExtraDiagnostic
/*not-null assertions*/false, false,
/*generateClassFilter=*/stubGenerationStrategy.getGenerateClassFilter(),
/*to generate inline flag on methods*/true,
/*optimize*/true,
null,
null,
forExtraDiagnostics,
+1
View File
@@ -15,6 +15,7 @@ where possible options include:
-script Evaluate the script file
-kotlinHome <path> Path to Kotlin compiler home directory, used for annotations and runtime libraries discovery
-inline {on,off} Inlining mode (default is on)
-optimize {on,off} Optimization mode (default is on)
-tags Demarcate each compilation message (error, warning, etc) with an open and close tag
-verbose Enable verbose logging output
-version Display compiler version
+1
View File
@@ -15,6 +15,7 @@ where possible options include:
-script Evaluate the script file
-kotlinHome <path> Path to Kotlin compiler home directory, used for annotations and runtime libraries discovery
-inline {on,off} Inlining mode (default is on)
-optimize {on,off} Optimization mode (default is on)
-tags Demarcate each compilation message (error, warning, etc) with an open and close tag
-verbose Enable verbose logging output
-version Display compiler version
+1
View File
@@ -15,6 +15,7 @@ where possible options include:
-script Evaluate the script file
-kotlinHome <path> Path to Kotlin compiler home directory, used for annotations and runtime libraries discovery
-inline {on,off} Inlining mode (default is on)
-optimize {on,off} Optimization mode (default is on)
-tags Demarcate each compilation message (error, warning, etc) with an open and close tag
-verbose Enable verbose logging output
-version Display compiler version
@@ -16,6 +16,7 @@ where possible options include:
-script Evaluate the script file
-kotlinHome <path> Path to Kotlin compiler home directory, used for annotations and runtime libraries discovery
-inline {on,off} Inlining mode (default is on)
-optimize {on,off} Optimization mode (default is on)
-tags Demarcate each compilation message (error, warning, etc) with an open and close tag
-verbose Enable verbose logging output
-version Display compiler version
@@ -16,6 +16,7 @@ where possible options include:
-script Evaluate the script file
-kotlinHome <path> Path to Kotlin compiler home directory, used for annotations and runtime libraries discovery
-inline {on,off} Inlining mode (default is on)
-optimize {on,off} Optimization mode (default is on)
-tags Demarcate each compilation message (error, warning, etc) with an open and close tag
-verbose Enable verbose logging output
-version Display compiler version
@@ -29,6 +29,7 @@ import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.codegen.forTestCompile.ForTestCompileRuntime;
import org.jetbrains.jet.codegen.inline.InlineCodegenUtil;
import org.jetbrains.jet.codegen.optimization.OptimizationUtils;
import org.jetbrains.jet.codegen.state.GenerationState;
import org.jetbrains.jet.codegen.state.Progress;
import org.jetbrains.jet.config.CompilerConfiguration;
@@ -68,6 +69,7 @@ public class CodegenTestUtil {
configuration.get(JVMConfigurationKeys.GENERATE_NOT_NULL_PARAMETER_ASSERTIONS, true),
GenerationState.GenerateClassFilter.GENERATE_ALL,
configuration.get(JVMConfigurationKeys.ENABLE_INLINE, InlineCodegenUtil.DEFAULT_INLINE_FLAG),
configuration.get(JVMConfigurationKeys.ENABLE_OPTIMIZATION, OptimizationUtils.DEFAULT_OPTIMIZATION_FLAG),
null,
null,
forExtraDiagnostics,