| Index: sdk/lib/_internal/compiler/implementation/ssa/builder.dart
|
| diff --git a/sdk/lib/_internal/compiler/implementation/ssa/builder.dart b/sdk/lib/_internal/compiler/implementation/ssa/builder.dart
|
| index a5158c1c746bdc723659bc71e9b3594b2ea716ac..d76be36cf7f6805fe6a9ac11df78cc783505229a 100644
|
| --- a/sdk/lib/_internal/compiler/implementation/ssa/builder.dart
|
| +++ b/sdk/lib/_internal/compiler/implementation/ssa/builder.dart
|
| @@ -202,7 +202,7 @@ class SsaBuilderTask extends CompilerTask {
|
| new OptionalParameterTypes(signature.optionalParameterCount);
|
| int index = 0;
|
| signature.forEachOptionalParameter((Element parameter) {
|
| - Constant defaultValue = compiler.compileVariable(parameter);
|
| + Constant defaultValue = builder.compileVariable(parameter);
|
| HType type = HGraph.mapConstantTypeToSsaType(defaultValue);
|
| defaultValueTypes.update(index, parameter.name, type);
|
| index++;
|
| @@ -988,6 +988,24 @@ class SsaBuilder extends ResolvedVisitor implements Visitor {
|
| }
|
|
|
| /**
|
| + * Compiles compile-time constants. Never returns [:null:]. If the
|
| + * initial value is not a compile-time constants, it reports an
|
| + * internal error.
|
| + */
|
| + Constant compileConstant(VariableElement element) {
|
| + return compiler.constantHandler.compileConstant(element);
|
| + }
|
| +
|
| + Constant compileVariable(VariableElement element) {
|
| + return compiler.constantHandler.compileVariable(element);
|
| + }
|
| +
|
| + bool isLazilyInitialized(VariableElement element) {
|
| + Constant initialValue = compileVariable(element);
|
| + return initialValue == null;
|
| + }
|
| +
|
| + /**
|
| * Documentation wanted -- johnniwinther
|
| *
|
| * Invariant: [functionElement] must be an implementation element.
|
| @@ -1524,8 +1542,7 @@ class SsaBuilder extends ResolvedVisitor implements Visitor {
|
| // }
|
|
|
| // Fetch the original default value of [element];
|
| - ConstantHandler handler = compiler.constantHandler;
|
| - Constant constant = handler.compileVariable(element);
|
| + Constant constant = compileVariable(element);
|
| HConstant defaultValue = constant == null
|
| ? graph.addConstantNull(constantSystem)
|
| : graph.addConstant(constant);
|
| @@ -2458,11 +2475,11 @@ class SsaBuilder extends ResolvedVisitor implements Visitor {
|
| if (element.isField() && !element.isAssignable()) {
|
| // A static final or const. Get its constant value and inline it if
|
| // the value can be compiled eagerly.
|
| - value = compiler.compileVariable(element);
|
| + value = compileVariable(element);
|
| }
|
| if (value != null) {
|
| stack.add(graph.addConstant(value));
|
| - } else if (element.isField() && compiler.isLazilyInitialized(element)) {
|
| + } else if (element.isField() && isLazilyInitialized(element)) {
|
| push(new HLazyStatic(element));
|
| } else {
|
| // TODO(5346): Try to avoid the need for calling [declaration] before
|
| @@ -2741,14 +2758,14 @@ class SsaBuilder extends ResolvedVisitor implements Visitor {
|
| return pop();
|
| }
|
|
|
| - HInstruction compileConstant(Element parameter) {
|
| + HInstruction handleConstant(Element parameter) {
|
| Constant constant;
|
| TreeElements calleeElements =
|
| compiler.enqueuer.resolution.getCachedElements(element);
|
| if (calleeElements.isParameterChecked(parameter)) {
|
| constant = SentinelConstant.SENTINEL;
|
| } else {
|
| - constant = compiler.compileConstant(parameter);
|
| + constant = compileConstant(parameter);
|
| }
|
| return graph.addConstant(constant);
|
| }
|
| @@ -2757,7 +2774,7 @@ class SsaBuilder extends ResolvedVisitor implements Visitor {
|
| list,
|
| element,
|
| compileArgument,
|
| - compileConstant,
|
| + handleConstant,
|
| compiler);
|
| }
|
|
|
|
|