| Index: lib/compiler/implementation/ssa/builder.dart
|
| diff --git a/lib/compiler/implementation/ssa/builder.dart b/lib/compiler/implementation/ssa/builder.dart
|
| index 8a2d33a4108cb9ced2661e73ee6a18dee2b61b65..c923ce3d8d121ac8e7448c076fc6f941bf3d777d 100644
|
| --- a/lib/compiler/implementation/ssa/builder.dart
|
| +++ b/lib/compiler/implementation/ssa/builder.dart
|
| @@ -178,17 +178,29 @@ class SsaBuilderTask extends CompilerTask {
|
|
|
| // If there is an estimate of the parameter types assume these types when
|
| // compiling.
|
| + OptionalParameterTypes defaultValueTypes = null;
|
| + FunctionSignature signature = element.computeSignature(compiler);
|
| + if (signature.optionalParameterCount > 0) {
|
| + defaultValueTypes =
|
| + new OptionalParameterTypes(signature.optionalParameterCount);
|
| + int index = 0;
|
| + signature.forEachOptionalParameter((Element parameter) {
|
| + Constant defaultValue = compiler.compileVariable(parameter);
|
| + HType type = HGraph.mapConstantTypeToSsaType(defaultValue);
|
| + defaultValueTypes.update(index, parameter.name, type);
|
| + index++;
|
| + });
|
| + }
|
| HTypeList parameterTypes =
|
| - backend.optimisticParameterTypes(
|
| - element);
|
| + backend.optimisticParameterTypes(element, defaultValueTypes);
|
| if (!parameterTypes.allUnknown) {
|
| - FunctionSignature signature = element.computeSignature(compiler);
|
| int i = 0;
|
| signature.forEachParameter((Element param) {
|
| builder.parameters[param].guaranteedType = parameterTypes[i++];
|
| });
|
| }
|
| - backend.registerParameterTypesOptimization(element, parameterTypes);
|
| + backend.registerParameterTypesOptimization(
|
| + element, parameterTypes, defaultValueTypes);
|
|
|
| if (compiler.tracer.enabled) {
|
| String name;
|
|
|