Version 1.0.0.7

svn merge -c 30043 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 30044 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 30045 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 30258 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 30299 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 30303 https://dart.googlecode.com/svn/branches/bleeding_edge trunk

Review URL: https://codereview.chromium.org//72383004

git-svn-id: http://dart.googlecode.com/svn/trunk@30338 260f80e4-7a28-3924-810f-c04153c831b5
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