diff --git a/CHANGELOG.md b/CHANGELOG.md
index 638c5fd..0b35edd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,10 @@
     See https://pub.dartlang.org/packages/resource to learn more. This is
     the last release to contain the Resource class.
 
+* `dart:developer`
+  * Added `Timeline` class for interacting with Observatory's timeline feature.
+  * Added `ServiceExtensionHandler`, `ServiceExtensionResponse`, and `registerExtension` which enable developers to provide their own VM service protocol extensions.
+  
 * `dart:io`
   * **Breaking:** Secure networking has changed, replacing the NSS library
     with the BoringSSL library. `SecureSocket`, `SecureServerSocket`,
diff --git a/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart b/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
index 687bea3..8ac784a 100644
--- a/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
+++ b/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
@@ -423,7 +423,7 @@
                   functionType = returnType;
                 } else if (returnType.treatAsDynamic ||
                     _compiler.types.isSubtype(returnType,
-                        backend.coreTypes.functionType)) {
+                        backend.resolution.coreTypes.functionType)) {
                   if (returnType.isTypedef) {
                     TypedefType typedef = returnType;
                     // TODO(jacobr): can we just use typdef.unaliased instead?
diff --git a/runtime/lib/profiler_sources.gypi b/runtime/lib/profiler_sources.gypi
new file mode 100644
index 0000000..9175427
--- /dev/null
+++ b/runtime/lib/profiler_sources.gypi
@@ -0,0 +1,12 @@
+# Copyright (c) 2015, 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.
+
+# Sources list to keep vm/BUILD.gn generate_core_libraries happy.
+
+{
+  'sources': [
+    'empty_source.dart'
+  ],
+}
+
diff --git a/runtime/vm/BUILD.gn b/runtime/vm/BUILD.gn
index 0afda71..2db9a6e 100644
--- a/runtime/vm/BUILD.gn
+++ b/runtime/vm/BUILD.gn
@@ -193,6 +193,7 @@
     ["isolate", "isolate"],
     ["math", "math"],
     ["mirrors", "mirrors"],
+    ["profiler", "profiler"],
     ["typed_data", "typed_data"],
     ["_vmservice", "vmservice"],
   ]
diff --git a/runtime/vm/bootstrap.cc b/runtime/vm/bootstrap.cc
index c445f4a..85fcf52 100644
--- a/runtime/vm/bootstrap.cc
+++ b/runtime/vm/bootstrap.cc
@@ -67,6 +67,10 @@
                mirrors,
                Bootstrap::mirrors_source_paths_,
                Bootstrap::mirrors_patch_paths_),
+  INIT_LIBRARY(ObjectStore::kProfiler,
+               profiler,
+               Bootstrap::profiler_source_paths_,
+               NULL),
   INIT_LIBRARY(ObjectStore::kTypedData,
                typed_data,
                Bootstrap::typed_data_source_paths_,
diff --git a/runtime/vm/bootstrap.h b/runtime/vm/bootstrap.h
index 4cae370..eb238ed 100644
--- a/runtime/vm/bootstrap.h
+++ b/runtime/vm/bootstrap.h
@@ -30,6 +30,7 @@
   static const char* json_source_paths_[];
   static const char* math_source_paths_[];
   static const char* mirrors_source_paths_[];
+  static const char* profiler_source_paths_[];
   static const char* typed_data_source_paths_[];
   static const char* utf_source_paths_[];
   static const char* _vmservice_source_paths_[];
@@ -44,6 +45,7 @@
   static const char* isolate_patch_paths_[];
   static const char* math_patch_paths_[];
   static const char* mirrors_patch_paths_[];
+  static const char* profiler_patch_paths_[];
   static const char* typed_data_patch_paths_[];
   static const char* _vmservice_patch_paths_[];
 };
diff --git a/runtime/vm/bootstrap_natives.cc b/runtime/vm/bootstrap_natives.cc
index 2e705ec..d0bef86 100644
--- a/runtime/vm/bootstrap_natives.cc
+++ b/runtime/vm/bootstrap_natives.cc
@@ -121,6 +121,11 @@
   library.set_native_entry_resolver(resolver);
   library.set_native_entry_symbol_resolver(symbol_resolver);
 
+  library = Library::ProfilerLibrary();
+  ASSERT(!library.IsNull());
+  library.set_native_entry_resolver(resolver);
+  library.set_native_entry_symbol_resolver(symbol_resolver);
+
   library = Library::TypedDataLibrary();
   ASSERT(!library.IsNull());
   library.set_native_entry_resolver(resolver);
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 6110846..e0247e6 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -10276,6 +10276,11 @@
 }
 
 
+RawLibrary* Library::ProfilerLibrary() {
+  return Isolate::Current()->object_store()->profiler_library();
+}
+
+
 RawLibrary* Library::TypedDataLibrary() {
   return Isolate::Current()->object_store()->typed_data_library();
 }
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 2c94f2d..1193686 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -3468,6 +3468,7 @@
   static RawLibrary* MathLibrary();
   static RawLibrary* MirrorsLibrary();
   static RawLibrary* NativeWrappersLibrary();
+  static RawLibrary* ProfilerLibrary();
   static RawLibrary* TypedDataLibrary();
   static RawLibrary* VMServiceLibrary();
 
diff --git a/runtime/vm/object_store.cc b/runtime/vm/object_store.cc
index e70c76a..d8f2f6c 100644
--- a/runtime/vm/object_store.cc
+++ b/runtime/vm/object_store.cc
@@ -68,6 +68,7 @@
     math_library_(Library::null()),
     mirrors_library_(Library::null()),
     native_wrappers_library_(Library::null()),
+    profiler_library_(Library::null()),
     root_library_(Library::null()),
     typed_data_library_(Library::null()),
     vmservice_library_(Library::null()),
diff --git a/runtime/vm/object_store.h b/runtime/vm/object_store.h
index ed902e0..805b9b1 100644
--- a/runtime/vm/object_store.h
+++ b/runtime/vm/object_store.h
@@ -30,6 +30,7 @@
     kIsolate,
     kMath,
     kMirrors,
+    kProfiler,
     kTypedData,
     kVMService,
   };
@@ -263,6 +264,7 @@
   RawLibrary* isolate_library() const { return isolate_library_; }
   RawLibrary* math_library() const { return math_library_; }
   RawLibrary* mirrors_library() const { return mirrors_library_; }
+  RawLibrary* profiler_library() const { return profiler_library_; }
   RawLibrary* typed_data_library() const { return typed_data_library_; }
   RawLibrary* vmservice_library() const { return vmservice_library_; }
 
@@ -295,6 +297,9 @@
       case kMirrors:
         mirrors_library_ = value.raw();
         break;
+      case kProfiler:
+        profiler_library_ = value.raw();
+        break;
       case kTypedData:
         typed_data_library_ = value.raw();
         break;
@@ -517,6 +522,7 @@
   RawLibrary* math_library_;
   RawLibrary* mirrors_library_;
   RawLibrary* native_wrappers_library_;
+  RawLibrary* profiler_library_;
   RawLibrary* root_library_;
   RawLibrary* typed_data_library_;
   RawLibrary* vmservice_library_;
diff --git a/runtime/vm/vm.gypi b/runtime/vm/vm.gypi
index 3b2e620..9771a91 100644
--- a/runtime/vm/vm.gypi
+++ b/runtime/vm/vm.gypi
@@ -25,6 +25,7 @@
     'math_patch_cc_file': '<(gen_source_dir)/math_patch_gen.cc',
     'mirrors_cc_file': '<(gen_source_dir)/mirrors_gen.cc',
     'mirrors_patch_cc_file': '<(gen_source_dir)/mirrors_patch_gen.cc',
+    'profiler_cc_file': '<(gen_source_dir)/profiler_gen.cc',
     'snapshot_test_dat_file': '<(gen_source_dir)/snapshot_test.dat',
     'snapshot_test_in_dat_file': 'snapshot_test_in.dat',
     'snapshot_test_dart_file': 'snapshot_test.dart',
@@ -180,6 +181,7 @@
         'generate_math_patch_cc_file#host',
         'generate_mirrors_cc_file#host',
         'generate_mirrors_patch_cc_file#host',
+        'generate_profiler_cc_file#host',
         'generate_typed_data_cc_file#host',
         'generate_typed_data_patch_cc_file#host',
         'generate_vmservice_cc_file#host',
@@ -218,6 +220,7 @@
         '<(math_patch_cc_file)',
         '<(mirrors_cc_file)',
         '<(mirrors_patch_cc_file)',
+        '<(profiler_cc_file)',
         '<(typed_data_cc_file)',
         '<(typed_data_patch_cc_file)',
         '<(vmservice_cc_file)',
@@ -970,6 +973,46 @@
       ]
     },
     {
+      'target_name': 'generate_profiler_cc_file',
+      'type': 'none',
+      'toolsets':['host'],
+      'includes': [
+        # Load the shared library sources.
+        '../../sdk/lib/profiler/profiler_sources.gypi',
+      ],
+      'sources/': [
+        # Exclude all .[cc|h] files.
+        # This is only here for reference. Excludes happen after
+        # variable expansion, so the script has to do its own
+        # exclude processing of the sources being passed.
+        ['exclude', '\\.cc|h$'],
+      ],
+      'actions': [
+        {
+          'action_name': 'generate_profiler_cc',
+          'inputs': [
+            '../tools/gen_library_src_paths.py',
+            '<(libgen_in_cc_file)',
+            '<@(_sources)',
+          ],
+          'outputs': [
+            '<(profiler_cc_file)',
+          ],
+          'action': [
+            'python',
+            'tools/gen_library_src_paths.py',
+            '--output', '<(profiler_cc_file)',
+            '--input_cc', '<(libgen_in_cc_file)',
+            '--include', 'vm/bootstrap.h',
+            '--var_name', 'dart::Bootstrap::profiler_source_paths_',
+            '--library_name', 'dart:profiler',
+            '<@(_sources)',
+          ],
+          'message': 'Generating ''<(profiler_cc_file)'' file.'
+        },
+      ]
+    },
+    {
       'target_name': 'generate_developer_cc_file',
       'type': 'none',
       'toolsets':['host'],
diff --git a/sdk/lib/html/dartium/html_dartium.dart b/sdk/lib/html/dartium/html_dartium.dart
index d1f0c7b..109eca3 100644
--- a/sdk/lib/html/dartium/html_dartium.dart
+++ b/sdk/lib/html/dartium/html_dartium.dart
@@ -9495,7 +9495,10 @@
   
 
   DataTransferItem operator[] (int index) {
-    return __getter__(index);
+    // TODO(alanknight): I think that all the __getter__ generators should just
+    // do property access, but that's major surgery. This one is a problem, so
+    // just hard-code it for now.
+    return _blink.Blink_JsNative_DomException.getProperty(unwrap_jso(this), index);
   }
 
 }
@@ -24400,7 +24403,7 @@
   @DomName('Location.ancestorOrigins')
   @DocsEditable()
   @Experimental() // nonstandard
-  List<String> get ancestorOrigins => _blink.BlinkLocation.instance.ancestorOrigins_Getter_(unwrap_jso(this));
+  List<String> get ancestorOrigins => wrap_jso(_blink.BlinkLocation.instance.ancestorOrigins_Getter_(unwrap_jso(this)));
   
   @DomName('Location.hash')
   @DocsEditable()
@@ -35155,7 +35158,7 @@
   @DomName('StorageQuota.supportedTypes')
   @DocsEditable()
   @Experimental() // untriaged
-  List<String> get supportedTypes => _blink.BlinkStorageQuota.instance.supportedTypes_Getter_(unwrap_jso(this));
+  List<String> get supportedTypes => wrap_jso(_blink.BlinkStorageQuota.instance.supportedTypes_Getter_(unwrap_jso(this)));
   
   @DomName('StorageQuota.queryInfo')
   @DocsEditable()
diff --git a/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart b/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart
index 6272bbf..c75130a 100644
--- a/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart
+++ b/sdk/lib/indexed_db/dartium/indexed_db_dartium.dart
@@ -358,7 +358,7 @@
   
   @DomName('IDBDatabase.objectStoreNames')
   @DocsEditable()
-  List<String> get objectStoreNames => _blink.BlinkIDBDatabase.instance.objectStoreNames_Getter_(unwrap_jso(this));
+  List<String> get objectStoreNames => wrap_jso(_blink.BlinkIDBDatabase.instance.objectStoreNames_Getter_(unwrap_jso(this)));
   
   @DomName('IDBDatabase.version')
   @DocsEditable()
@@ -998,7 +998,7 @@
   
   @DomName('IDBObjectStore.indexNames')
   @DocsEditable()
-  List<String> get indexNames => _blink.BlinkIDBObjectStore.instance.indexNames_Getter_(unwrap_jso(this));
+  List<String> get indexNames => wrap_jso(_blink.BlinkIDBObjectStore.instance.indexNames_Getter_(unwrap_jso(this)));
   
   @DomName('IDBObjectStore.keyPath')
   @DocsEditable()
diff --git a/sdk/lib/js/dartium/js_dartium.dart b/sdk/lib/js/dartium/js_dartium.dart
index fde9d40..b01dce0 100644
--- a/sdk/lib/js/dartium/js_dartium.dart
+++ b/sdk/lib/js/dartium/js_dartium.dart
@@ -1177,6 +1177,20 @@
 
   dynamic _apply(List args, {thisArg}) native "JsFunction_apply";
 
+  call([a1 = _UNDEFINED,
+        a2 = _UNDEFINED,
+        a3 = _UNDEFINED,
+        a4 = _UNDEFINED,
+        a5 = _UNDEFINED,
+        a6 = _UNDEFINED,
+        a7 = _UNDEFINED,
+        a8 = _UNDEFINED,
+        a9 = _UNDEFINED,
+        a10 = _UNDEFINED]) {
+    return apply(
+        _stripUndefinedArgs([a1, a2, a3, a4, a5, a6, a7, a8, a9, a10]));
+  }
+
   noSuchMethod(Invocation invocation) {
     if (invocation.isMethod && invocation.memberName == #call) {
       return apply(_buildArgs(invocation));
diff --git a/sdk/lib/profiler/profiler.dart b/sdk/lib/profiler/profiler.dart
new file mode 100644
index 0000000..84add7b
--- /dev/null
+++ b/sdk/lib/profiler/profiler.dart
@@ -0,0 +1,14 @@
+// Copyright (c) 2014, 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.
+
+/// Please see 'dart:developer'.
+@Deprecated("Dart SDK 1.12")
+library dart.profiler;
+
+export 'dart:developer' show getCurrentTag,
+                             Counter,
+                             Gauge,
+                             Metric,
+                             Metrics,
+                             UserTag;
diff --git a/sdk/lib/profiler/profiler_sources.gypi b/sdk/lib/profiler/profiler_sources.gypi
new file mode 100644
index 0000000..910d798
--- /dev/null
+++ b/sdk/lib/profiler/profiler_sources.gypi
@@ -0,0 +1,10 @@
+# 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.
+
+{
+  'sources': [
+    'profiler.dart',
+    # The above file needs to be first if additional parts are added to the lib.
+  ],
+}
diff --git a/tests/html/html.status b/tests/html/html.status
index f5db897..43481ee 100644
--- a/tests/html/html.status
+++ b/tests/html/html.status
@@ -32,6 +32,10 @@
 input_element_test/attributes: Fail # Issue 21555
 wrapping_collections_test: SkipByDesign # Testing an issue that is only relevant to Dartium
 
+[ $compiler == dart2js && $checked ]
+js_function_getter_trust_types_test: Skip # --trust-type-annotations incompatible with --checked
+js_typed_interop_test: Fail # Issue 24822
+
 [ $compiler == dart2js && $csp && $browser ]
 custom/js_custom_test: Fail # Issue 14643
 custom/element_upgrade_test: Fail # Issue 17298
diff --git a/tests/html/js_typed_interop_test.dart b/tests/html/js_typed_interop_test.dart
index 2907142..0e7cd0c 100644
--- a/tests/html/js_typed_interop_test.dart
+++ b/tests/html/js_typed_interop_test.dart
@@ -29,6 +29,10 @@
     multiplyByX: function(arg) { return arg * this.x; },
     // This function can be torn off without having to bind this.
     multiplyBy2: function(arg) { return arg * 2; },
+    multiplyDefault2Function: function(a, b) {
+      if (arguments.length >= 2) return a * b;
+      return a * 2;
+    },
     callClosureWithArg1: function(closure, arg) {
       return closure(arg);
     },
@@ -101,17 +105,21 @@
   external get b;
 }
 
+typedef num MultiplyWithDefault(num a, [num b]);
+
 @JS()
 class Foo {
   external int get x;
   external set x(int v);
   external num multiplyByX(num y);
   external num multiplyBy2(num y);
+  external MultiplyWithDefault get multiplyDefault2Function;
+
   external callClosureWithArgAndThis(Function closure, arg);
   external callClosureWithArg1(Function closure, arg1);
   external callClosureWithArg2(Function closure, arg1, arg2);
   external Bar getBar();
-  external static int multiplyDefault2(int a, [int b]);
+  external static num multiplyDefault2(num a, [num b]);
 }
 
 @anonymous
@@ -237,6 +245,21 @@
       // Tearing off a JS closure doesn't bind this.
       // You will need to use the new method tearoff syntax to bind this.
       expect(multiplyByX(4), isNaN);
+
+      MultiplyWithDefault multiplyWithDefault = foo.multiplyDefault2Function;
+      expect(multiplyWithDefault(6, 6), equals(36));
+      expect(multiplyWithDefault(6), equals(12));
+      Function untypedFunction = foo.multiplyDefault2Function;
+      // Calling with extra bogus arguments has no impact for JavaScript
+      // methods.
+      expect(untypedFunction(6, 6, "ignored", "ignored"), equals(36));
+      expect(untypedFunction(6, 6, "ignored", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), equals(36));
+      // Calling a JavaScript method with too few arguments is also fine and
+      // defaults to JavaScript behavior of setting all unspecified arguments
+      // to undefined resulting in multiplying undefined by 2 == NAN.
+      expect(untypedFunction(), isNaN);
+
     });
   });
 
@@ -244,9 +267,10 @@
     test('call from dart', () {
       expect(Foo.multiplyDefault2(6, 7), equals(42));
       expect(Foo.multiplyDefault2(6), equals(12));
-      Function tearOffMethod = Foo.multiplyDefault2;
+      MultiplyWithDefault tearOffMethod = Foo.multiplyDefault2;
       expect(tearOffMethod(6, 6), equals(36));
       expect(tearOffMethod(6), equals(12));
+      Function untypedTearOff = Foo.multiplyDefault2;
     });
   });
 
diff --git a/tools/VERSION b/tools/VERSION
index aee7ef0..7486ef6 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -28,4 +28,4 @@
 MINOR 13
 PATCH 0
 PRERELEASE 7
-PRERELEASE_PATCH 7
+PRERELEASE_PATCH 8
diff --git a/tools/create_sdk.py b/tools/create_sdk.py
index bdb69f2..f377798 100755
--- a/tools/create_sdk.py
+++ b/tools/create_sdk.py
@@ -145,7 +145,7 @@
   PACKAGES_FILE = join(DARTDOC, '.packages')
   packages_file = open(PACKAGES_FILE, 'w')
   packages_file.write('dartdoc:.')
-  packages_file.close()
+  packages_file.close() 
 
 
 def Main():
@@ -232,7 +232,7 @@
                   join('html', 'dart2js'), join('html', 'dartium'),
                   join('html', 'html_common'),
                   join('indexed_db', 'dart2js'), join('indexed_db', 'dartium'),
-                  'js', 'math', 'mirrors', 'typed_data',
+                  'js', 'math', 'mirrors', 'profiler', 'typed_data',
                   join('svg', 'dart2js'), join('svg', 'dartium'),
                   join('web_audio', 'dart2js'), join('web_audio', 'dartium'),
                   join('web_gl', 'dart2js'), join('web_gl', 'dartium'),
diff --git a/tools/dom/scripts/generator.py b/tools/dom/scripts/generator.py
index 6f31a7d..2cdc750 100644
--- a/tools/dom/scripts/generator.py
+++ b/tools/dom/scripts/generator.py
@@ -1447,7 +1447,7 @@
             return_type == 'SqlDatabase' or # renamed to Database
             return_type == 'HTMLElement' or
             return_type == 'MutationObserver' or
-            return_type.endswith('[]'))
+            (return_type.endswith('[]') and return_type != 'DOMString[]'))
 
 def wrap_type_blink(return_type, type_registry):
     """Returns True if the type is a blink type that requires wrap_jso but
diff --git a/tools/dom/scripts/systemnative.py b/tools/dom/scripts/systemnative.py
index 0e16172..3fc0638 100644
--- a/tools/dom/scripts/systemnative.py
+++ b/tools/dom/scripts/systemnative.py
@@ -1753,9 +1753,7 @@
                 elif wrap_unwrap_list[0]:
                     jso_util_method = 'wrap_jso'
 
-                # Always return List<String> unwrapped.
-                if return_type != 'List<String>':
-                  emit_template = emit_jso_template % jso_util_method
+                emit_template = emit_jso_template % jso_util_method
 
             if caller_emitter:
               caller_emitter.Emit(emit_template,
diff --git a/tools/dom/templates/html/impl/impl_DataTransferItemList.darttemplate b/tools/dom/templates/html/impl/impl_DataTransferItemList.darttemplate
index 54acce1..31455d6 100644
--- a/tools/dom/templates/html/impl/impl_DataTransferItemList.darttemplate
+++ b/tools/dom/templates/html/impl/impl_DataTransferItemList.darttemplate
@@ -12,7 +12,10 @@
 $if DART2JS
     return JS('DataTransferItem', '#[#]', this, index);
 $else
-    return __getter__(index);
+    // TODO(alanknight): I think that all the __getter__ generators should just
+    // do property access, but that's major surgery. This one is a problem, so
+    // just hard-code it for now.
+    return _blink.Blink_JsNative_DomException.getProperty(unwrap_jso(this), index);
 $endif
   }
 
