diff --git a/pkg/pkg.status b/pkg/pkg.status
index a86c987..dc4af2c 100644
--- a/pkg/pkg.status
+++ b/pkg/pkg.status
@@ -32,6 +32,7 @@
 
 [ $compiler == dart2js && $checked && $runtime == ie9 ]
 crypto/test/base64_test: Timeout # Issue 12486
+template_binding/test/template_binding_test: Fail # Issue 15093
 
 [ $runtime == d8 || $runtime == jsshell ]
 unittest/test/unittest_nested_groups_setup_teardown_test: Pass, RuntimeError # http://dartbug.com/10109
diff --git a/runtime/bin/net/nss.gyp b/runtime/bin/net/nss.gyp
index e1c64e1..9cdface 100644
--- a/runtime/bin/net/nss.gyp
+++ b/runtime/bin/net/nss.gyp
@@ -7,7 +7,7 @@
 # BSD-style license that can be found in the LICENSE file.
 
 # This file is a modified copy of Chromium's deps/third_party/nss/nss.gyp.
-# Revision 199075 (this should agree with "nss_rev" in DEPS).
+# Revision 232552 (this should agree with "nss_rev" in DEPS).
 {
   # Added by Dart. All Dart comments refer to the following block or line.
   'includes': [
@@ -660,6 +660,11 @@
         '<(nss_directory)/nss/lib/freebl/blapit.h',
         '<(nss_directory)/nss/lib/freebl/camellia.c',
         '<(nss_directory)/nss/lib/freebl/camellia.h',
+        '<(nss_directory)/nss/lib/freebl/chacha20/chacha20.c',
+        '<(nss_directory)/nss/lib/freebl/chacha20/chacha20.h',
+        '<(nss_directory)/nss/lib/freebl/chacha20/chacha20_vec.c',
+        '<(nss_directory)/nss/lib/freebl/chacha20poly1305.c',
+        '<(nss_directory)/nss/lib/freebl/chacha20poly1305.h',
         '<(nss_directory)/nss/lib/freebl/ctr.c',
         '<(nss_directory)/nss/lib/freebl/ctr.h',
         '<(nss_directory)/nss/lib/freebl/cts.c',
@@ -715,6 +720,9 @@
         '<(nss_directory)/nss/lib/freebl/mpi/mp_gf2m.c',
         '<(nss_directory)/nss/lib/freebl/mpi/mp_gf2m.h',
         '<(nss_directory)/nss/lib/freebl/mpi/primes.c',
+        '<(nss_directory)/nss/lib/freebl/poly1305/poly1305-donna-x64-sse2-incremental-source.c',
+        '<(nss_directory)/nss/lib/freebl/poly1305/poly1305.c',
+        '<(nss_directory)/nss/lib/freebl/poly1305/poly1305.h',
         '<(nss_directory)/nss/lib/freebl/pqg.c',
         '<(nss_directory)/nss/lib/freebl/pqg.h',
         '<(nss_directory)/nss/lib/freebl/rawhash.c',
@@ -1100,10 +1108,6 @@
         'SOFTOKEN_SHLIB_VERSION=\"3\"',
         'USE_UTIL_DIRECTLY',
       ],
-      'defines!': [
-        # Regrettably, NSS can't be compiled with NO_NSPR_10_SUPPORT yet.
-        'NO_NSPR_10_SUPPORT',
-      ],
       'include_dirs': [
         '<(nss_directory)/nss/lib/base',
         '<(nss_directory)/nss/lib/certdb',
@@ -1194,6 +1198,7 @@
             '<(nss_directory)/nss/lib/freebl/mpi/mpi_amd64.c',
           ],
         }],
+        # Added by Dart.
         ['OS=="linux"', {
           'defines': [
             'XP_UNIX',
@@ -1209,6 +1214,17 @@
             '<(nss_directory)/nss/lib/freebl/mpi/mpi_x86_asm.c',
           ],
         }],
+        ['target_arch=="x64" and OS!="win"', {
+          'sources!': [
+            '<(nss_directory)/nss/lib/freebl/chacha20/chacha20.c',
+            '<(nss_directory)/nss/lib/freebl/poly1305/poly1305.c',
+            ],
+        }, { # else: target_arch!="x64" or OS=="win"
+          'sources!': [
+            '<(nss_directory)/nss/lib/freebl/chacha20/chacha20_vec.c',
+            '<(nss_directory)/nss/lib/freebl/poly1305/poly1305-donna-x64-sse2-incremental-source.c',
+            ],
+        }],
         ['OS=="mac" or OS=="ios"', {
           'defines': [
             'XP_UNIX',
diff --git a/runtime/bin/net/sqlite.gyp b/runtime/bin/net/sqlite.gyp
index f194bdc..9949e9c 100644
--- a/runtime/bin/net/sqlite.gyp
+++ b/runtime/bin/net/sqlite.gyp
@@ -7,7 +7,7 @@
 # BSD-style license that can be found in the LICENSE file.
 
 # This file is a modified copy of Chromium's src/third_party/sqlite/sqlite.gyp.
-# Revision 199075 (this should agree with "nss_rev" in DEPS).
+# Revision 232552 (this should agree with "nss_rev" in DEPS).
 {
   # Added by Dart. All Dart comments refer to the following block or line.
   'includes': [
@@ -30,6 +30,7 @@
       # 'SQLITE_ENABLE_ICU',
       'SQLITE_ENABLE_MEMORY_MANAGEMENT',
       'SQLITE_SECURE_DELETE',
+      'SQLITE_SEPARATE_CACHE_POOLS',
       'THREADSAFE',
       '_HAS_EXCEPTIONS=0',
     ],
@@ -61,6 +62,9 @@
 
           'conditions': [
             ['OS == "ios"', {
+              'dependencies': [
+                'sqlite_regexp',
+              ],
               'link_settings': {
                 'libraries': [
                   '$(SDKROOT)/usr/lib/libsqlite3.dylib',
@@ -143,6 +147,13 @@
                 ],
               },
             }],
+            ['OS == "mac" or OS == "ios"', {
+              'link_settings': {
+                'libraries': [
+                  '$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework',
+                ],
+              },
+            }],
             ['OS == "android"', {
               'defines': [
                 'HAVE_USLEEP=1',
@@ -195,13 +206,27 @@
           'sources': [
             '<(sqlite_directory)/src/src/shell.c',
             '<(sqlite_directory)/src/src/shell_icu_linux.c',
+            # Include a dummy c++ file to force linking of libstdc++.
+            '<(sqlite_directory)/build_as_cpp.cc',
           ],
-          'link_settings': {
-            'link_languages': ['c++'],
-          },
         },
       ],
-    },]
+    },],
+    ['OS == "ios"', {
+      'targets': [
+        {
+          'target_name': 'sqlite_regexp',
+          'type': 'static_library',
+          'dependencies': [
+            '../icu/icu.gyp:icui18n',
+            '../icu/icu.gyp:icuuc',
+          ],
+          'sources': [
+            'src/ext/icu/icu.c',
+          ],
+        },
+      ],
+    }],
   ],
   }]],
 }
diff --git a/runtime/bin/net/ssl.gyp b/runtime/bin/net/ssl.gyp
index 294437d..985ce5c 100644
--- a/runtime/bin/net/ssl.gyp
+++ b/runtime/bin/net/ssl.gyp
@@ -7,7 +7,7 @@
 # BSD-style license that can be found in the LICENSE file.
 
 # This file is a modified copy of Chromium's src/net/third_party/nss/ssl.gyp.
-# Revision 199075 (this should agree with "nss_rev" in DEPS).
+# Revision 232552 (this should agree with "nss_rev" in DEPS).
 
 # The following modification was made to make sure we have the same
 # xcode_settings on all configurations (otherwise we can't build with ninja):
@@ -102,8 +102,6 @@
         'USE_UTIL_DIRECTLY',
       ],
       'defines!': [
-        # Regrettably, NSS can't be compiled with NO_NSPR_10_SUPPORT yet.
-        'NO_NSPR_10_SUPPORT',
         'DEBUG',
       ],
       'dependencies': [
@@ -150,10 +148,19 @@
             # See http://crbug.com/138571#c8. In short, sslsecur.c picks up the
             # system's cert.h because cert.h isn't in chromium's repo.
             '-Wno-incompatible-pointer-types',
+
+            # There is a broken header guard in /usr/include/nss/secmod.h:
+            # https://bugzilla.mozilla.org/show_bug.cgi?id=884072
+            '-Wno-header-guard',
           ],
         }],
-        # Added by Dart.
         [ 'OS == "linux"', {
+          'link_settings': {
+            'libraries': [
+              '-ldl',
+            ],
+          },
+          # Added by Dart.
           'defines': [
             'XP_UNIX',
             'NSS_PLATFORM_CLIENT_AUTH',
diff --git a/runtime/bin/net/zlib.gyp b/runtime/bin/net/zlib.gyp
index f3e7bca..7cfdaf4 100644
--- a/runtime/bin/net/zlib.gyp
+++ b/runtime/bin/net/zlib.gyp
@@ -7,7 +7,7 @@
 # BSD-style license that can be found in the LICENSE file.
 
 # This file is a modified copy of src/third_party/zlib/zlib.gyp from Chromium.
-# Revision 199075 (this should agree with "nss_rev" in DEPS).
+# Revision 232552 (this should agree with "nss_rev" in DEPS).
 {
   # Added by Dart. All Dart comments refer to the following block or line.
   'includes': [
@@ -126,7 +126,6 @@
         }],
       ],
     },
-    # Changed by Dart: Omit target 'zip'
   ],
   }]],
 }
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
index 59274b7..3651a03 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
@@ -231,6 +231,8 @@
   TypeMask extendableArrayType;
   TypeMask nonNullType;
 
+  /// Maps special classes to their implementation (JSXxx) class.
+  Map<ClassElement, ClassElement> implementationClasses;
 
   Element getNativeInterceptorMethod;
   bool needToInitializeDispatchProperty = false;
@@ -578,6 +580,14 @@
           compiler.findInterceptor('UnknownJavaScriptObject'),
     ];
 
+    implementationClasses = <ClassElement, ClassElement>{};
+    implementationClasses[compiler.intClass] = jsIntClass;
+    implementationClasses[compiler.boolClass] = jsBoolClass;
+    implementationClasses[compiler.numClass] = jsNumberClass;
+    implementationClasses[compiler.doubleClass] = jsDoubleClass;
+    implementationClasses[compiler.stringClass] = jsStringClass;
+    implementationClasses[compiler.listClass] = jsArrayClass;
+
     jsIndexableClass = compiler.findInterceptor('JSIndexable');
     jsMutableIndexableClass = compiler.findInterceptor('JSMutableIndexable');
 
@@ -1280,22 +1290,22 @@
     }
   }
 
-  Element getImplementationClass(Element element) {
-    if (element == compiler.intClass) {
-      return jsIntClass;
-    } else if (element == compiler.boolClass) {
-      return jsBoolClass;
-    } else if (element == compiler.numClass) {
-      return jsNumberClass;
-    } else if (element == compiler.doubleClass) {
-      return jsDoubleClass;
-    } else if (element == compiler.stringClass) {
-      return jsStringClass;
-    } else if (element == compiler.listClass) {
-      return jsArrayClass;
-    } else {
-      return element;
+  Element getDartClass(Element element) {
+    for (ClassElement dartClass in implementationClasses.keys) {
+      if (element == implementationClasses[dartClass]) {
+        return dartClass;
+      }
     }
+    return element;
+  }
+
+  Element getImplementationClass(Element element) {
+    for (ClassElement dartClass in implementationClasses.keys) {
+      if (element == dartClass) {
+        return implementationClasses[dartClass];
+      }
+    }
+    return element;
   }
 
   /**
@@ -1715,6 +1725,7 @@
    * need to access it.
    */
   bool isNeededForReflection(Element element) {
+    element = getDartClass(element);
     if (hasInsufficientMirrorsUsed) return isTreeShakingDisabled;
     /// Record the name of [element] in [symbolsUsed]. Return true for
     /// convenience.
diff --git a/tests/compiler/dart2js_extra/mirrors_used_native_test.dart b/tests/compiler/dart2js_extra/mirrors_used_native_test.dart
new file mode 100644
index 0000000..f040e5b
--- /dev/null
+++ b/tests/compiler/dart2js_extra/mirrors_used_native_test.dart
@@ -0,0 +1,15 @@
+// Copyright (c) 2013, 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.
+
+@MirrorsUsed(targets: 'List')
+import 'dart:mirrors';
+
+import 'package:expect/expect.dart';
+
+main() {
+  List;  // work-around for a bug in the type-variable handler. TODO(zarah): remove.
+  Expect.equals(3, reflect([1, 2, 3]).getField(#length).reflectee);
+  Expect.throws(() => reflect({"hest": 42}).getField(#length),
+                (e) => e is UnsupportedError);
+}
diff --git a/tools/VERSION b/tools/VERSION
index ef4495b..0b91abc 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -1,4 +1,4 @@
 MAJOR 1
 MINOR 0
 BUILD 0
-PATCH 6
+PATCH 7
