diff --git a/pkg/front_end/lib/src/api_prototype/experimental_flags.dart b/pkg/front_end/lib/src/api_prototype/experimental_flags.dart
index 3f0c4bc..1441108 100644
--- a/pkg/front_end/lib/src/api_prototype/experimental_flags.dart
+++ b/pkg/front_end/lib/src/api_prototype/experimental_flags.dart
@@ -4,12 +4,17 @@
 
 // TODO(askesc): Generate this file from a flag specification.
 
-enum ExperimentalFlag { setLiterals }
+enum ExperimentalFlag {
+  setLiterals,
+  constantUpdate2018,
+}
 
 ExperimentalFlag parseExperimentalFlag(String flag) {
   switch (flag) {
     case "set-literals":
       return ExperimentalFlag.setLiterals;
+    case "constant-update-2018":
+      return ExperimentalFlag.constantUpdate2018;
   }
   return null;
 }
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_constants.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_constants.dart
new file mode 100644
index 0000000..b7372a5
--- /dev/null
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_constants.dart
@@ -0,0 +1,48 @@
+// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library fasta.kernel_constants;
+
+import 'package:kernel/ast.dart'
+    show
+        Constant,
+        DartType,
+        ListConstant,
+        MapConstant,
+        NullConstant,
+        StaticInvocation,
+        TreeNode;
+
+import 'package:kernel/transformations/constants.dart'
+    show ConstantsBackend, ErrorReporter;
+
+import '../problems.dart' show unimplemented;
+
+class KernelConstantsBackend extends ConstantsBackend {
+  @override
+  Constant lowerListConstant(ListConstant constant) => constant;
+
+  @override
+  Constant lowerMapConstant(MapConstant constant) => constant;
+
+  @override
+  Constant buildConstantForNative(
+      String nativeName,
+      List<DartType> typeArguments,
+      List<Constant> positionalArguments,
+      Map<String, Constant> namedArguments,
+      List<TreeNode> context,
+      StaticInvocation node,
+      ErrorReporter errorReporter,
+      void abortEvaluation()) {
+    // VM-specific names of the fromEnvironment factory constructors.
+    if (nativeName == 'Bool_fromEnvironment' ||
+        nativeName == 'Integer_fromEnvironment' ||
+        nativeName == 'String_fromEnvironment') {
+      return namedArguments['defaultValue'] ?? new NullConstant();
+    }
+    return unimplemented('constant evaluation of ${nativeName}',
+        node.fileOffset, node.location.file);
+  }
+}
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
index e917fb8..39ea072 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
@@ -41,6 +41,11 @@
 
 import 'package:kernel/type_algebra.dart' show substitute;
 
+import 'package:kernel/type_environment.dart' show TypeEnvironment;
+
+import 'package:kernel/transformations/constants.dart' as constants
+    show transformLibraries;
+
 import '../../api_prototype/file_system.dart' show FileSystem;
 
 import '../compiler_context.dart' show CompilerContext;
@@ -64,7 +69,7 @@
         templateMissingImplementationCause,
         templateSuperclassHasNoDefaultConstructor;
 
-import '../problems.dart' show unhandled;
+import '../problems.dart' show unhandled, unimplemented;
 
 import '../severity.dart' show Severity;
 
@@ -93,6 +98,8 @@
         TypeBuilder,
         TypeDeclarationBuilder;
 
+import 'kernel_constants.dart' show KernelConstantsBackend;
+
 import 'metadata_collector.dart' show MetadataCollector;
 
 import 'verifier.dart' show verifyComponent;
@@ -741,12 +748,25 @@
   /// Run all transformations that are needed when building a bundle of
   /// libraries for the first time.
   void runBuildTransformations() {
+    if (loader.target.enableConstantUpdate2018) {
+      constants.transformLibraries(
+          loader.libraries,
+          new KernelConstantsBackend(),
+          loader.coreTypes,
+          new TypeEnvironment(loader.coreTypes, loader.hierarchy,
+              legacyMode: false));
+      ticker.logMs("Evaluated constants");
+    }
     backendTarget.performModularTransformationsOnLibraries(
         component, loader.coreTypes, loader.hierarchy, loader.libraries,
         logger: (String msg) => ticker.logMs(msg));
   }
 
   void runProcedureTransformations(Procedure procedure) {
+    if (loader.target.enableConstantUpdate2018) {
+      unimplemented('constant evaluation during expression evaluation',
+          procedure.fileOffset, procedure.fileUri);
+    }
     backendTarget.performTransformationsOnProcedure(
         loader.coreTypes, loader.hierarchy, procedure,
         logger: (String msg) => ticker.logMs(msg));
diff --git a/pkg/front_end/lib/src/fasta/target_implementation.dart b/pkg/front_end/lib/src/fasta/target_implementation.dart
index 6c8f046..2705f16 100644
--- a/pkg/front_end/lib/src/fasta/target_implementation.dart
+++ b/pkg/front_end/lib/src/fasta/target_implementation.dart
@@ -36,10 +36,13 @@
   Declaration cachedNativeExtensionAnnotation;
 
   bool enableSetLiterals;
+  bool enableConstantUpdate2018;
 
   TargetImplementation(Ticker ticker, this.uriTranslator, this.backendTarget)
       : enableSetLiterals = CompilerContext.current.options
             .isExperimentEnabled(ExperimentalFlag.setLiterals),
+        enableConstantUpdate2018 = CompilerContext.current.options
+            .isExperimentEnabled(ExperimentalFlag.constantUpdate2018),
         super(ticker);
 
   /// Creates a [LibraryBuilder] corresponding to [uri], if one doesn't exist
