Version 1.5.0-dev.4.5

svn merge -c 36989 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 36993 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 37101 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 37107 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 37142 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 37145 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 37146 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
svn merge -c 37154 https://dart.googlecode.com/svn/branches/bleeding_edge trunk

Merged all dartium.deps changes up to and including revision 37120
Merged https://codereview.chromium.org/326663003/ to fix editor missing file

R=kasperl@google.com

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

git-svn-id: http://dart.googlecode.com/svn/trunk@37161 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/runtime/vm/code_generator.cc b/runtime/vm/code_generator.cc
index 72706ac..417a905 100644
--- a/runtime/vm/code_generator.cc
+++ b/runtime/vm/code_generator.cc
@@ -633,10 +633,12 @@
     caller_code.SetStaticCallTargetCodeAt(caller_frame->pc(), target_code);
   }
   if (FLAG_trace_patching) {
-    OS::PrintErr("PatchStaticCall: patching from %#" Px " to '%s' %#" Px "\n",
+    OS::PrintErr("PatchStaticCall: patching caller pc %#" Px ""
+        " to '%s' new entry point %#" Px " (%s)\n",
         caller_frame->pc(),
         target_function.ToFullyQualifiedCString(),
-        target_code.EntryPoint());
+        target_code.EntryPoint(),
+        target_code.is_optimized() ? "optimized" : "unoptimized");
   }
   arguments.SetReturn(target_code);
 }
@@ -1293,9 +1295,11 @@
     caller_code.SetStaticCallTargetCodeAt(frame->pc(), current_target_code);
   }
   if (FLAG_trace_patching) {
-    OS::PrintErr("FixCallersTarget: patching from %#" Px " to '%s' %#" Px "\n",
+    OS::PrintErr("FixCallersTarget: caller %#" Px " "
+        "target '%s' %#" Px " -> %#" Px "\n",
         frame->pc(),
         target_function.ToFullyQualifiedCString(),
+        target_code.EntryPoint(),
         current_target_code.EntryPoint());
   }
   arguments.SetReturn(current_target_code);
diff --git a/runtime/vm/code_patcher.cc b/runtime/vm/code_patcher.cc
index 7aca73d..9ecc06c 100644
--- a/runtime/vm/code_patcher.cc
+++ b/runtime/vm/code_patcher.cc
@@ -52,8 +52,7 @@
 // The patch code buffer contains the jmp code which will be inserted at
 // entry point.
 void CodePatcher::PatchEntry(const Code& code) {
-  const uword patch_addr = code.GetPcForDeoptId(Isolate::kNoDeoptId,
-                                                PcDescriptors::kEntryPatch);
+  const uword patch_addr = code.GetEntryPatchPc();
   ASSERT(patch_addr != 0);
   JumpPattern jmp_entry(patch_addr, code);
   ASSERT(!jmp_entry.IsValid());
@@ -77,8 +76,7 @@
 // The entry point is a jmp instruction, the patch code buffer contains
 // original code, the entry point contains the jump instruction.
 void CodePatcher::RestoreEntry(const Code& code) {
-  const uword patch_addr = code.GetPcForDeoptId(Isolate::kNoDeoptId,
-                                                PcDescriptors::kEntryPatch);
+  const uword patch_addr = code.GetEntryPatchPc();
   ASSERT(patch_addr != 0);
   JumpPattern jmp_entry(patch_addr, code);
   ASSERT(jmp_entry.IsValid());
@@ -102,8 +100,7 @@
 
 
 bool CodePatcher::IsEntryPatched(const Code& code) {
-  const uword patch_addr = code.GetPcForDeoptId(Isolate::kNoDeoptId,
-                                                PcDescriptors::kEntryPatch);
+  const uword patch_addr = code.GetEntryPatchPc();
   if (patch_addr == 0) {
     return false;
   }
@@ -113,9 +110,8 @@
 
 
 bool CodePatcher::CodeIsPatchable(const Code& code) {
-  const uword patch_addr = code.GetPcForDeoptId(Isolate::kNoDeoptId,
-                                                PcDescriptors::kEntryPatch);
-  // kEntryPatch may not exist which means the function is not patchable.
+  const uword patch_addr = code.GetEntryPatchPc();
+  // Zero means means that the function is not patchable.
   if (patch_addr == 0) {
     return false;
   }
diff --git a/runtime/vm/compiler.cc b/runtime/vm/compiler.cc
index da3feb1..b8805f8 100644
--- a/runtime/vm/compiler.cc
+++ b/runtime/vm/compiler.cc
@@ -59,6 +59,7 @@
     "Enable compiler verification assertions");
 
 DECLARE_FLAG(bool, trace_failed_optimization_attempts);
+DECLARE_FLAG(bool, trace_patching);
 DECLARE_FLAG(bool, warn_on_javascript_compatibility);
 DECLARE_FLAG(bool, warning_as_error);
 
@@ -556,8 +557,12 @@
         if (optimized) {
           if (osr_id == Isolate::kNoDeoptId) {
             CodePatcher::PatchEntry(Code::Handle(function.CurrentCode()));
-            if (FLAG_trace_compiler) {
-              OS::Print("--> patching entry %#" Px "\n",
+            if (FLAG_trace_compiler || FLAG_trace_patching) {
+              if (FLAG_trace_compiler) {
+                OS::Print("  ");
+              }
+              OS::Print("Patch unoptimized '%s' entry point %#" Px "\n",
+                  function.ToFullyQualifiedCString(),
                   Code::Handle(function.unoptimized_code()).EntryPoint());
             }
           }
@@ -575,11 +580,10 @@
           ASSERT(CodePatcher::CodeIsPatchable(code));
         }
         if (parsed_function->HasDeferredPrefixes()) {
-          GrowableObjectArray* prefixes = parsed_function->DeferredPrefixes();
-          LibraryPrefix& prefix = LibraryPrefix::Handle();
-          for (intptr_t i = 0; i < prefixes->Length(); i++) {
-            prefix ^= prefixes->At(i);
-            prefix.RegisterDependentCode(code);
+          ZoneGrowableArray<const LibraryPrefix*>* prefixes =
+              parsed_function->deferred_prefixes();
+          for (intptr_t i = 0; i < prefixes->length(); i++) {
+            (*prefixes)[i]->RegisterDependentCode(code);
           }
         }
       }
diff --git a/runtime/vm/flow_graph.cc b/runtime/vm/flow_graph.cc
index afaffa1..c0c74a6 100644
--- a/runtime/vm/flow_graph.cc
+++ b/runtime/vm/flow_graph.cc
@@ -42,7 +42,8 @@
     use_far_branches_(false),
     loop_headers_(NULL),
     loop_invariant_loads_(NULL),
-    guarded_fields_(builder.guarded_fields()) {
+    guarded_fields_(builder.guarded_fields()),
+    deferred_prefixes_(builder.deferred_prefixes()) {
   DiscoverBlocks();
 }
 
@@ -63,6 +64,21 @@
 }
 
 
+void FlowGraph::AddToDeferredPrefixes(
+    ZoneGrowableArray<const LibraryPrefix*>* from) {
+  ZoneGrowableArray<const LibraryPrefix*>* to = deferred_prefixes();
+  for (intptr_t i = 0; i < from->length(); i++) {
+    const  LibraryPrefix* prefix = (*from)[i];
+    for (intptr_t j = 0; j < to->length(); j++) {
+      if ((*to)[j]->raw() == prefix->raw()) {
+        return;
+      }
+    }
+    to->Add(prefix);
+  }
+}
+
+
 bool FlowGraph::ShouldReorderBlocks(const Function& function,
                                     bool is_optimized) {
   return is_optimized && FLAG_reorder_basic_blocks && !function.is_intrinsic();
diff --git a/runtime/vm/flow_graph.h b/runtime/vm/flow_graph.h
index 9d2d42e..1868d0a 100644
--- a/runtime/vm/flow_graph.h
+++ b/runtime/vm/flow_graph.h
@@ -216,11 +216,16 @@
 
   static void AddToGuardedFields(ZoneGrowableArray<const Field*>* array,
                                  const Field* field);
+  void AddToDeferredPrefixes(ZoneGrowableArray<const LibraryPrefix*>* from);
 
   ZoneGrowableArray<const Field*>* guarded_fields() const {
     return guarded_fields_;
   }
 
+  ZoneGrowableArray<const LibraryPrefix*>* deferred_prefixes() const {
+    return deferred_prefixes_;
+  }
+
  private:
   friend class IfConverter;
   friend class BranchSimplifier;
@@ -300,6 +305,7 @@
   ZoneGrowableArray<BlockEntryInstr*>* loop_headers_;
   ZoneGrowableArray<BitVector*>* loop_invariant_loads_;
   ZoneGrowableArray<const Field*>* guarded_fields_;
+  ZoneGrowableArray<const LibraryPrefix*>* deferred_prefixes_;
 };
 
 
diff --git a/runtime/vm/flow_graph_builder.cc b/runtime/vm/flow_graph_builder.cc
index c0eff97..374ccb4 100644
--- a/runtime/vm/flow_graph_builder.cc
+++ b/runtime/vm/flow_graph_builder.cc
@@ -109,7 +109,7 @@
   NestedStatement* outer_;
 
   JoinEntryInstr* break_target_;
-  intptr_t try_index_;
+  const intptr_t try_index_;
 };
 
 
diff --git a/runtime/vm/flow_graph_builder.h b/runtime/vm/flow_graph_builder.h
index 7632971..8467cb5 100644
--- a/runtime/vm/flow_graph_builder.h
+++ b/runtime/vm/flow_graph_builder.h
@@ -199,6 +199,10 @@
     return guarded_fields_;
   }
 
+  ZoneGrowableArray<const LibraryPrefix*>* deferred_prefixes() const {
+    return parsed_function_->deferred_prefixes();
+  }
+
   intptr_t temp_count() const { return temp_count_; }
   intptr_t AllocateTemp() { return temp_count_++; }
   void DeallocateTemps(intptr_t count) {
diff --git a/runtime/vm/flow_graph_compiler.cc b/runtime/vm/flow_graph_compiler.cc
index 3a6c97e..45b54ef 100644
--- a/runtime/vm/flow_graph_compiler.cc
+++ b/runtime/vm/flow_graph_compiler.cc
@@ -103,7 +103,10 @@
           Library::Handle(Library::CoreLibrary()).
               LookupClass(Symbols::List()))),
       parallel_move_resolver_(this),
-      pending_deoptimization_env_(NULL) {
+      pending_deoptimization_env_(NULL),
+      entry_patch_pc_offset_(Code::kInvalidPc),
+      patch_code_pc_offset_(Code::kInvalidPc),
+      lazy_deopt_pc_offset_(Code::kInvalidPc) {
   ASSERT(assembler != NULL);
   ASSERT(!list_class_.IsNull());
 }
@@ -700,6 +703,9 @@
       pc_descriptors_list_->FinalizePcDescriptors(code.EntryPoint()));
   if (!is_optimizing_) descriptors.Verify(parsed_function_.function());
   code.set_pc_descriptors(descriptors);
+  code.set_entry_patch_pc_offset(entry_patch_pc_offset_);
+  code.set_patch_code_pc_offset(patch_code_pc_offset_);
+  code.set_lazy_deopt_pc_offset(lazy_deopt_pc_offset_);
 }
 
 
diff --git a/runtime/vm/flow_graph_compiler.h b/runtime/vm/flow_graph_compiler.h
index 6950ce3..6546ff8 100644
--- a/runtime/vm/flow_graph_compiler.h
+++ b/runtime/vm/flow_graph_compiler.h
@@ -594,6 +594,10 @@
   // In future AddDeoptStub should be moved out of the instruction template.
   Environment* pending_deoptimization_env_;
 
+  intptr_t entry_patch_pc_offset_;
+  intptr_t patch_code_pc_offset_;
+  intptr_t lazy_deopt_pc_offset_;
+
   DISALLOW_COPY_AND_ASSIGN(FlowGraphCompiler);
 };
 
diff --git a/runtime/vm/flow_graph_compiler_arm.cc b/runtime/vm/flow_graph_compiler_arm.cc
index 542ac99..45b72ca 100644
--- a/runtime/vm/flow_graph_compiler_arm.cc
+++ b/runtime/vm/flow_graph_compiler_arm.cc
@@ -973,9 +973,8 @@
     __ mov(PP, Operand(R7));
 
     // Patch point is after the eventually inlined function object.
-    AddCurrentDescriptor(PcDescriptors::kEntryPatch,
-                         Isolate::kNoDeoptId,
-                         0);  // No token position.
+    entry_patch_pc_offset_ = assembler()->CodeSize();
+
     intptr_t threshold = FLAG_optimization_counter_threshold;
     __ ldr(R7, FieldAddress(function_reg,
                             Function::usage_counter_offset()));
@@ -992,9 +991,7 @@
     ASSERT(function_reg == R6);
     __ Branch(&StubCode::OptimizeFunctionLabel(), GE);
   } else if (!flow_graph().IsCompiledForOsr()) {
-    AddCurrentDescriptor(PcDescriptors::kEntryPatch,
-                         Isolate::kNoDeoptId,
-                         0);  // No token position.
+    entry_patch_pc_offset_ = assembler()->CodeSize();
   }
   __ Comment("Enter frame");
   if (flow_graph().IsCompiledForOsr()) {
@@ -1097,14 +1094,13 @@
   GenerateDeferredCode();
   // Emit function patching code. This will be swapped with the first 3
   // instructions at entry point.
-  AddCurrentDescriptor(PcDescriptors::kPatchCode,
-                       Isolate::kNoDeoptId,
-                       0);  // No token position.
+  patch_code_pc_offset_ = assembler()->CodeSize();
   __ BranchPatchable(&StubCode::FixCallersTargetLabel());
-  AddCurrentDescriptor(PcDescriptors::kLazyDeoptJump,
-                       Isolate::kNoDeoptId,
-                       0);  // No token position.
-  __ Branch(&StubCode::DeoptimizeLazyLabel());
+
+  if (is_optimizing()) {
+    lazy_deopt_pc_offset_ = assembler()->CodeSize();
+    __ Branch(&StubCode::DeoptimizeLazyLabel());
+  }
 }
 
 
diff --git a/runtime/vm/flow_graph_compiler_arm64.cc b/runtime/vm/flow_graph_compiler_arm64.cc
index c4ac888..09a20f3 100644
--- a/runtime/vm/flow_graph_compiler_arm64.cc
+++ b/runtime/vm/flow_graph_compiler_arm64.cc
@@ -970,9 +970,8 @@
     __ LoadObject(function_reg, function, new_pp);
 
     // Patch point is after the eventually inlined function object.
-    AddCurrentDescriptor(PcDescriptors::kEntryPatch,
-                         Isolate::kNoDeoptId,
-                         0);  // No token position.
+    entry_patch_pc_offset_ = assembler()->CodeSize();
+
     intptr_t threshold = FLAG_optimization_counter_threshold;
     __ LoadFieldFromOffset(
         R7, function_reg, Function::usage_counter_offset(), new_pp);
@@ -999,9 +998,7 @@
     // Set up pool pointer in new_pp.
     __ LoadPoolPointer(new_pp);
 
-    AddCurrentDescriptor(PcDescriptors::kEntryPatch,
-                         Isolate::kNoDeoptId,
-                         0);  // No token position.
+    entry_patch_pc_offset_ = assembler()->CodeSize();
   }
   __ Comment("Enter frame");
   if (flow_graph().IsCompiledForOsr()) {
@@ -1102,17 +1099,16 @@
 
   __ hlt(0);
   GenerateDeferredCode();
+
   // Emit function patching code. This will be swapped with the first 3
   // instructions at entry point.
-  AddCurrentDescriptor(PcDescriptors::kPatchCode,
-                       Isolate::kNoDeoptId,
-                       0);  // No token position.
+  patch_code_pc_offset_ = assembler()->CodeSize();
   __ BranchPatchable(&StubCode::FixCallersTargetLabel());
 
-  AddCurrentDescriptor(PcDescriptors::kLazyDeoptJump,
-                       Isolate::kNoDeoptId,
-                       0);  // No token position.
+  if (is_optimizing()) {
+    lazy_deopt_pc_offset_ = assembler()->CodeSize();
   __ BranchPatchable(&StubCode::DeoptimizeLazyLabel());
+  }
 }
 
 
diff --git a/runtime/vm/flow_graph_compiler_ia32.cc b/runtime/vm/flow_graph_compiler_ia32.cc
index b58ded0..247e537 100644
--- a/runtime/vm/flow_graph_compiler_ia32.cc
+++ b/runtime/vm/flow_graph_compiler_ia32.cc
@@ -987,10 +987,10 @@
       (!is_optimizing() || may_reoptimize())) {
     const Register function_reg = EDI;
     __ LoadObject(function_reg, function);
+
     // Patch point is after the eventually inlined function object.
-    AddCurrentDescriptor(PcDescriptors::kEntryPatch,
-                         Isolate::kNoDeoptId,
-                         0);  // No token position.
+    entry_patch_pc_offset_ = assembler()->CodeSize();
+
     if (is_optimizing()) {
       // Reoptimization of an optimized function is triggered by counting in
       // IC stubs, but not at the entry of the function.
@@ -1004,9 +1004,7 @@
     ASSERT(function_reg == EDI);
     __ j(GREATER_EQUAL, &StubCode::OptimizeFunctionLabel());
   } else if (!flow_graph().IsCompiledForOsr()) {
-    AddCurrentDescriptor(PcDescriptors::kEntryPatch,
-                         Isolate::kNoDeoptId,
-                         0);  // No token position.
+    entry_patch_pc_offset_ = assembler()->CodeSize();
   }
   __ Comment("Enter frame");
   if (flow_graph().IsCompiledForOsr()) {
@@ -1106,14 +1104,13 @@
   GenerateDeferredCode();
   // Emit function patching code. This will be swapped with the first 5 bytes
   // at entry point.
-  AddCurrentDescriptor(PcDescriptors::kPatchCode,
-                       Isolate::kNoDeoptId,
-                       0);  // No token position.
+  patch_code_pc_offset_ = assembler()->CodeSize();
   __ jmp(&StubCode::FixCallersTargetLabel());
-  AddCurrentDescriptor(PcDescriptors::kLazyDeoptJump,
-                       Isolate::kNoDeoptId,
-                       0);  // No token position.
-  __ jmp(&StubCode::DeoptimizeLazyLabel());
+
+  if (is_optimizing()) {
+    lazy_deopt_pc_offset_ = assembler()->CodeSize();
+    __ jmp(&StubCode::DeoptimizeLazyLabel());
+  }
 }
 
 
diff --git a/runtime/vm/flow_graph_compiler_mips.cc b/runtime/vm/flow_graph_compiler_mips.cc
index 68538fe..afc9132 100644
--- a/runtime/vm/flow_graph_compiler_mips.cc
+++ b/runtime/vm/flow_graph_compiler_mips.cc
@@ -1002,9 +1002,8 @@
     __ mov(PP, T1);
 
     // Patch point is after the eventually inlined function object.
-    AddCurrentDescriptor(PcDescriptors::kEntryPatch,
-                         Isolate::kNoDeoptId,
-                         0);  // No token position.
+    entry_patch_pc_offset_ = assembler()->CodeSize();
+
     intptr_t threshold = FLAG_optimization_counter_threshold;
     __ lw(T1, FieldAddress(function_reg, Function::usage_counter_offset()));
     if (is_optimizing()) {
@@ -1026,9 +1025,7 @@
     __ Bind(&dont_branch);
 
   } else if (!flow_graph().IsCompiledForOsr()) {
-    AddCurrentDescriptor(PcDescriptors::kEntryPatch,
-                         Isolate::kNoDeoptId,
-                         0);  // No token position.
+    entry_patch_pc_offset_ = assembler()->CodeSize();
   }
   __ Comment("Enter frame");
   if (flow_graph().IsCompiledForOsr()) {
@@ -1133,14 +1130,13 @@
   GenerateDeferredCode();
   // Emit function patching code. This will be swapped with the first 5 bytes
   // at entry point.
-  AddCurrentDescriptor(PcDescriptors::kPatchCode,
-                       Isolate::kNoDeoptId,
-                       0);  // No token position.
+  patch_code_pc_offset_ = assembler()->CodeSize();
   __ BranchPatchable(&StubCode::FixCallersTargetLabel());
-  AddCurrentDescriptor(PcDescriptors::kLazyDeoptJump,
-                       Isolate::kNoDeoptId,
-                       0);  // No token position.
-  __ Branch(&StubCode::DeoptimizeLazyLabel());
+
+  if (is_optimizing()) {
+    lazy_deopt_pc_offset_ = assembler()->CodeSize();
+    __ Branch(&StubCode::DeoptimizeLazyLabel());
+  }
 }
 
 
diff --git a/runtime/vm/flow_graph_compiler_x64.cc b/runtime/vm/flow_graph_compiler_x64.cc
index be3a6b0..01629ea 100644
--- a/runtime/vm/flow_graph_compiler_x64.cc
+++ b/runtime/vm/flow_graph_compiler_x64.cc
@@ -1000,9 +1000,8 @@
     __ LoadObject(function_reg, function, new_pp);
 
     // Patch point is after the eventually inlined function object.
-    AddCurrentDescriptor(PcDescriptors::kEntryPatch,
-                         Isolate::kNoDeoptId,
-                         0);  // No token position.
+    entry_patch_pc_offset_ = assembler()->CodeSize();
+
     if (is_optimizing()) {
       // Reoptimization of an optimized function is triggered by counting in
       // IC stubs, but not at the entry of the function.
@@ -1042,9 +1041,8 @@
 
     // Load callee's pool pointer.
     __ movq(new_pp, Address(new_pc, -object_pool_pc_dist - offset));
-    AddCurrentDescriptor(PcDescriptors::kEntryPatch,
-                         Isolate::kNoDeoptId,
-                         0);  // No token position.
+
+    entry_patch_pc_offset_ = assembler()->CodeSize();
   }
   __ Comment("Enter frame");
   if (flow_graph().IsCompiledForOsr()) {
@@ -1142,17 +1140,15 @@
   GenerateDeferredCode();
   // Emit function patching code. This will be swapped with the first 13 bytes
   // at entry point.
-  AddCurrentDescriptor(PcDescriptors::kPatchCode,
-                       Isolate::kNoDeoptId,
-                       0);  // No token position.
+  patch_code_pc_offset_ = assembler()->CodeSize();
   // This is patched up to a point in FrameEntry where the PP for the
   // current function is in R13 instead of PP.
   __ JmpPatchable(&StubCode::FixCallersTargetLabel(), R13);
 
-  AddCurrentDescriptor(PcDescriptors::kLazyDeoptJump,
-                       Isolate::kNoDeoptId,
-                       0);  // No token position.
-  __ Jmp(&StubCode::DeoptimizeLazyLabel(), PP);
+  if (is_optimizing()) {
+    lazy_deopt_pc_offset_ = assembler()->CodeSize();
+    __ Jmp(&StubCode::DeoptimizeLazyLabel(), PP);
+  }
 }
 
 
diff --git a/runtime/vm/flow_graph_inliner.cc b/runtime/vm/flow_graph_inliner.cc
index b07c635..11fedc1 100644
--- a/runtime/vm/flow_graph_inliner.cc
+++ b/runtime/vm/flow_graph_inliner.cc
@@ -802,6 +802,9 @@
         FlowGraph::AddToGuardedFields(caller_graph_->guarded_fields(),
                                       (*callee_graph->guarded_fields())[i]);
       }
+      // When inlined, we add the deferred prefixes of the callee to the
+      // caller's list of deferred prefixes.
+      caller_graph()->AddToDeferredPrefixes(callee_graph->deferred_prefixes());
 
       // We allocate a ZoneHandle for the unoptimized code so that it cannot be
       // disconnected from its function during the rest of compilation.
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 2f9559b..af12f93 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -2523,6 +2523,13 @@
         if (!CodePatcher::IsEntryPatched(code)) {
           CodePatcher::PatchEntry(code);
         }
+      } else if (!function.HasCode() && (code.GetEntryPatchPc() != 0)) {
+        // The code has already been disconnected, make it invalid. Do not
+        // bother with OSR compiled code that has no valid entry-patch.
+        ReportSwitchingCode(code);
+        if (!CodePatcher::IsEntryPatched(code)) {
+          CodePatcher::PatchEntry(code);
+        }
       }
     }
   }
@@ -10129,9 +10136,6 @@
 const char* PcDescriptors::KindAsStr(intptr_t index) const {
   switch (DescriptorKind(index)) {
     case PcDescriptors::kDeopt:           return "deopt        ";
-    case PcDescriptors::kEntryPatch:      return "entry-patch  ";
-    case PcDescriptors::kPatchCode:       return "patch        ";
-    case PcDescriptors::kLazyDeoptJump:   return "lazy-deopt   ";
     case PcDescriptors::kIcCall:          return "ic-call      ";
     case PcDescriptors::kOptStaticCall:   return "opt-call     ";
     case PcDescriptors::kUnoptStaticCall: return "unopt-call   ";
@@ -11618,6 +11622,9 @@
     result.set_is_alive(false);
     result.set_comments(Comments::New(0));
     result.set_compile_timestamp(0);
+    result.set_entry_patch_pc_offset(kInvalidPc);
+    result.set_patch_code_pc_offset(kInvalidPc);
+    result.set_lazy_deopt_pc_offset(kInvalidPc);
     result.set_pc_descriptors(Object::empty_descriptors());
   }
   return result.raw();
@@ -11897,15 +11904,21 @@
 }
 
 
+uword Code::GetEntryPatchPc() const {
+  return (entry_patch_pc_offset() != kInvalidPc)
+      ? EntryPoint() + entry_patch_pc_offset() : 0;
+}
+
+
 uword Code::GetPatchCodePc() const {
-  const PcDescriptors& descriptors = PcDescriptors::Handle(pc_descriptors());
-  return descriptors.GetPcForKind(PcDescriptors::kPatchCode);
+  return (patch_code_pc_offset() != kInvalidPc)
+      ? EntryPoint() + patch_code_pc_offset() : 0;
 }
 
 
 uword Code::GetLazyDeoptPc() const {
-  const PcDescriptors& descriptors = PcDescriptors::Handle(pc_descriptors());
-  return descriptors.GetPcForKind(PcDescriptors::kLazyDeoptJump);
+  return (lazy_deopt_pc_offset() != kInvalidPc)
+      ? EntryPoint() + lazy_deopt_pc_offset() : 0;
 }
 
 
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 6c7182e..de55423 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -2970,9 +2970,6 @@
  public:
   enum Kind {
     kDeopt,            // Deoptimization continuation point.
-    kEntryPatch,       // Location where to patch entry.
-    kPatchCode,        // Buffer for patching code entry.
-    kLazyDeoptJump,    // Lazy deoptimization trampoline.
     kIcCall,           // IC call.
     kOptStaticCall,    // Call directly to known target, e.g. static call.
     kUnoptStaticCall,  // Call to a known target via a stub.
@@ -3631,7 +3628,6 @@
   static const intptr_t kMaxElements = kSmiMax / kBytesPerElement;
 
   static intptr_t InstanceSize() {
-    ASSERT(sizeof(RawCode) == OFFSET_OF(RawCode, data_));
     return 0;
   }
   static intptr_t InstanceSize(intptr_t len) {
@@ -3653,10 +3649,17 @@
   }
   intptr_t GetTokenIndexOfPC(uword pc) const;
 
-  // Find pc, return 0 if not found.
+  enum {
+    kInvalidPc = -1
+  };
+
+  // Returns 0 if code is not patchable
+  uword GetEntryPatchPc() const;
   uword GetPatchCodePc() const;
+
   uword GetLazyDeoptPc() const;
 
+  // Find pc, return 0 if not found.
   uword GetPcForDeoptId(intptr_t deopt_id, PcDescriptors::Kind kind) const;
   intptr_t GetDeoptIdForOsr(uword pc) const;
 
@@ -3680,6 +3683,29 @@
     return raw_ptr()->compile_timestamp_;
   }
 
+  intptr_t entry_patch_pc_offset() const {
+    return raw_ptr()->entry_patch_pc_offset_;
+  }
+  void set_entry_patch_pc_offset(intptr_t pc) const {
+    raw_ptr()->entry_patch_pc_offset_ = pc;
+  }
+
+
+  intptr_t patch_code_pc_offset() const {
+    return raw_ptr()->patch_code_pc_offset_;
+  }
+  void set_patch_code_pc_offset(intptr_t pc) const {
+    raw_ptr()->patch_code_pc_offset_ = pc;
+  }
+
+
+  intptr_t lazy_deopt_pc_offset() const {
+    return raw_ptr()->lazy_deopt_pc_offset_;
+  }
+  void set_lazy_deopt_pc_offset(intptr_t pc) const {
+    raw_ptr()->lazy_deopt_pc_offset_ = pc;
+  }
+
  private:
   void set_state_bits(intptr_t bits) const;
 
diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc
index 8667c20..c41e5c1 100644
--- a/runtime/vm/parser.cc
+++ b/runtime/vm/parser.cc
@@ -135,16 +135,12 @@
 void ParsedFunction::AddDeferredPrefix(const LibraryPrefix& prefix) {
   ASSERT(prefix.is_deferred_load());
   ASSERT(!prefix.is_loaded());
-  if (deferred_prefixes_ == NULL) {
-    deferred_prefixes_ =
-        &GrowableObjectArray::ZoneHandle(GrowableObjectArray::New());
-  }
-  for (intptr_t i = 0; i < deferred_prefixes_->Length(); i++) {
-    if (deferred_prefixes_->At(i) == prefix.raw()) {
+  for (intptr_t i = 0; i < deferred_prefixes_->length(); i++) {
+    if ((*deferred_prefixes_)[i]->raw() == prefix.raw()) {
       return;
     }
   }
-  deferred_prefixes_->Add(prefix);
+  deferred_prefixes_->Add(&LibraryPrefix::ZoneHandle(I, prefix.raw()));
 }
 
 
diff --git a/runtime/vm/parser.h b/runtime/vm/parser.h
index f187032..15de41f 100644
--- a/runtime/vm/parser.h
+++ b/runtime/vm/parser.h
@@ -47,7 +47,7 @@
         saved_current_context_var_(NULL),
         saved_entry_context_var_(NULL),
         expression_temp_var_(NULL),
-        deferred_prefixes_(NULL),
+        deferred_prefixes_(new ZoneGrowableArray<const LibraryPrefix*>()),
         first_parameter_index_(0),
         first_stack_local_index_(0),
         num_copied_params_(0),
@@ -110,8 +110,10 @@
   static LocalVariable* CreateExpressionTempVar(intptr_t token_pos);
   LocalVariable* EnsureExpressionTemp();
 
-  bool HasDeferredPrefixes() const { return deferred_prefixes_ != NULL; }
-  GrowableObjectArray* DeferredPrefixes() const { return deferred_prefixes_; }
+  bool HasDeferredPrefixes() const { return deferred_prefixes_->length() != 0; }
+  ZoneGrowableArray<const LibraryPrefix*>* deferred_prefixes() const {
+    return deferred_prefixes_;
+  }
   void AddDeferredPrefix(const LibraryPrefix& prefix);
 
   int first_parameter_index() const { return first_parameter_index_; }
@@ -132,7 +134,7 @@
   LocalVariable* saved_current_context_var_;
   LocalVariable* saved_entry_context_var_;
   LocalVariable* expression_temp_var_;
-  GrowableObjectArray* deferred_prefixes_;
+  ZoneGrowableArray<const LibraryPrefix*>* deferred_prefixes_;
 
   int first_parameter_index_;
   int first_stack_local_index_;
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index 523151b..363a42c 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -840,6 +840,11 @@
   // architectures.
   intptr_t state_bits_;  // state, is_optimized, is_alive.
 
+  // PC offsets for code patching.
+  intptr_t entry_patch_pc_offset_;
+  intptr_t patch_code_pc_offset_;
+  intptr_t lazy_deopt_pc_offset_;
+
   // Variable length data follows here.
   int32_t data_[0];
 
diff --git a/sdk/lib/_blink/dartium/_blink_dartium.dart b/sdk/lib/_blink/dartium/_blink_dartium.dart
index 749a403..f32673f 100644
--- a/sdk/lib/_blink/dartium/_blink_dartium.dart
+++ b/sdk/lib/_blink/dartium/_blink_dartium.dart
@@ -127,8 +127,6 @@
 
 Native_TimedItem_player_Getter(mthis) native "TimedItem_player_Getter";
 
-Native_TimedItem_specified_Getter(mthis) native "TimedItem_specified_Getter";
-
 Native_TimedItem_startTime_Getter(mthis) native "TimedItem_startTime_Getter";
 
   // Generated overload resolver
@@ -217,10 +215,6 @@
 
 Native_AudioBuffer_duration_Getter(mthis) native "AudioBuffer_duration_Getter";
 
-Native_AudioBuffer_gain_Getter(mthis) native "AudioBuffer_gain_Getter";
-
-Native_AudioBuffer_gain_Setter(mthis, value) native "AudioBuffer_gain_Setter";
-
 Native_AudioBuffer_length_Getter(mthis) native "AudioBuffer_length_Getter";
 
 Native_AudioBuffer_numberOfChannels_Getter(mthis) native "AudioBuffer_numberOfChannels_Getter";
@@ -233,8 +227,6 @@
 
 Native_AudioBufferSourceNode_buffer_Setter(mthis, value) native "AudioBufferSourceNode_buffer_Setter";
 
-Native_AudioBufferSourceNode_gain_Getter(mthis) native "AudioBufferSourceNode_gain_Getter";
-
 Native_AudioBufferSourceNode_loop_Getter(mthis) native "AudioBufferSourceNode_loop_Getter";
 
 Native_AudioBufferSourceNode_loop_Setter(mthis, value) native "AudioBufferSourceNode_loop_Setter";
@@ -249,8 +241,6 @@
 
 Native_AudioBufferSourceNode_playbackRate_Getter(mthis) native "AudioBufferSourceNode_playbackRate_Getter";
 
-Native_AudioBufferSourceNode_playbackState_Getter(mthis) native "AudioBufferSourceNode_playbackState_Getter";
-
 Native_AudioBufferSourceNode_noteGrainOn_Callback(mthis, when, grainOffset, grainDuration) native "AudioBufferSourceNode_noteGrainOn_Callback_RESOLVER_STRING_3_double_double_double";
 
 Native_AudioBufferSourceNode_noteOff_Callback(mthis, when) native "AudioBufferSourceNode_noteOff_Callback_RESOLVER_STRING_1_double";
@@ -304,8 +294,6 @@
 
 Native_AudioContext__create_1constructorCallback() native "AudioContext_constructorCallback_RESOLVER_STRING_0_";
 
-Native_AudioContext_activeSourceCount_Getter(mthis) native "AudioContext_activeSourceCount_Getter";
-
 Native_AudioContext_currentTime_Getter(mthis) native "AudioContext_currentTime_Getter";
 
 Native_AudioContext_destination_Getter(mthis) native "AudioContext_destination_Getter";
@@ -320,8 +308,6 @@
 
 Native_AudioContext_createBuffer_Callback(mthis, numberOfChannels, numberOfFrames, sampleRate) native "AudioContext_createBuffer_Callback_RESOLVER_STRING_3_unsigned long_unsigned long_float";
 
-Native_AudioContext_createBufferFromBuffer_Callback(mthis, buffer, mixToMono) native "AudioContext_createBuffer_Callback_RESOLVER_STRING_2_ArrayBuffer_boolean";
-
 Native_AudioContext_createBufferSource_Callback(mthis) native "AudioContext_createBufferSource_Callback_RESOLVER_STRING_0_";
 
   // Generated overload resolver
@@ -362,41 +348,10 @@
 
 Native_AudioContext__createDelay_2_Callback(mthis) native "AudioContext_createDelay_Callback_RESOLVER_STRING_0_";
 
-  // Generated overload resolver
-Native_AudioContext_createDelayNode(mthis, maxDelayTime) {
-    if (maxDelayTime != null) {
-      return Native_AudioContext__createDelayNode_1_Callback(mthis, maxDelayTime);
-    }
-    return Native_AudioContext__createDelayNode_2_Callback(mthis);
-  }
-
-Native_AudioContext__createDelayNode_1_Callback(mthis, maxDelayTime) native "AudioContext_createDelayNode_Callback_RESOLVER_STRING_1_double";
-
-Native_AudioContext__createDelayNode_2_Callback(mthis) native "AudioContext_createDelayNode_Callback_RESOLVER_STRING_0_";
-
 Native_AudioContext_createDynamicsCompressor_Callback(mthis) native "AudioContext_createDynamicsCompressor_Callback_RESOLVER_STRING_0_";
 
 Native_AudioContext_createGain_Callback(mthis) native "AudioContext_createGain_Callback_RESOLVER_STRING_0_";
 
-Native_AudioContext_createGainNode_Callback(mthis) native "AudioContext_createGainNode_Callback_RESOLVER_STRING_0_";
-
-  // Generated overload resolver
-Native_AudioContext_createJavaScriptNode(mthis, bufferSize, numberOfInputChannels, numberOfOutputChannels) {
-    if (numberOfOutputChannels != null) {
-      return Native_AudioContext__createJavaScriptNode_1_Callback(mthis, bufferSize, numberOfInputChannels, numberOfOutputChannels);
-    }
-    if (numberOfInputChannels != null) {
-      return Native_AudioContext__createJavaScriptNode_2_Callback(mthis, bufferSize, numberOfInputChannels);
-    }
-    return Native_AudioContext__createJavaScriptNode_3_Callback(mthis, bufferSize);
-  }
-
-Native_AudioContext__createJavaScriptNode_1_Callback(mthis, bufferSize, numberOfInputChannels, numberOfOutputChannels) native "AudioContext_createJavaScriptNode_Callback_RESOLVER_STRING_3_unsigned long_unsigned long_unsigned long";
-
-Native_AudioContext__createJavaScriptNode_2_Callback(mthis, bufferSize, numberOfInputChannels) native "AudioContext_createJavaScriptNode_Callback_RESOLVER_STRING_2_unsigned long_unsigned long";
-
-Native_AudioContext__createJavaScriptNode_3_Callback(mthis, bufferSize) native "AudioContext_createJavaScriptNode_Callback_RESOLVER_STRING_1_unsigned long";
-
 Native_AudioContext_createMediaElementSource_Callback(mthis, mediaElement) native "AudioContext_createMediaElementSource_Callback_RESOLVER_STRING_1_HTMLMediaElement";
 
 Native_AudioContext_createMediaStreamDestination_Callback(mthis) native "AudioContext_createMediaStreamDestination_Callback_RESOLVER_STRING_0_";
@@ -475,8 +430,6 @@
 
 Native_AudioParam_setTargetAtTime_Callback(mthis, target, time, timeConstant) native "AudioParam_setTargetAtTime_Callback_RESOLVER_STRING_3_float_double_double";
 
-Native_AudioParam_setTargetValueAtTime_Callback(mthis, targetValue, time, timeConstant) native "AudioParam_setTargetValueAtTime_Callback_RESOLVER_STRING_3_float_double_double";
-
 Native_AudioParam_setValueAtTime_Callback(mthis, value, time) native "AudioParam_setValueAtTime_Callback_RESOLVER_STRING_2_float_double";
 
 Native_AudioParam_setValueCurveAtTime_Callback(mthis, values, time, duration) native "AudioParam_setValueCurveAtTime_Callback";
@@ -517,8 +470,6 @@
 
 Native_BarProp_visible_Getter(mthis) native "BarProp_visible_Getter";
 
-Native_BeforeLoadEvent_url_Getter(mthis) native "BeforeLoadEvent_url_Getter";
-
 Native_BeforeUnloadEvent_returnValue_Getter(mthis) native "BeforeUnloadEvent_returnValue_Getter";
 
 Native_BeforeUnloadEvent_returnValue_Setter(mthis, value) native "BeforeUnloadEvent_returnValue_Setter";
@@ -765,10 +716,6 @@
 
 Native_CanvasRenderingContext_canvas_Getter(mthis) native "CanvasRenderingContext2D_canvas_Getter";
 
-Native_CanvasRenderingContext2D_currentPath_Getter(mthis) native "CanvasRenderingContext2D_currentPath_Getter";
-
-Native_CanvasRenderingContext2D_currentPath_Setter(mthis, value) native "CanvasRenderingContext2D_currentPath_Setter";
-
 Native_CanvasRenderingContext2D_currentTransform_Getter(mthis) native "CanvasRenderingContext2D_currentTransform_Getter";
 
 Native_CanvasRenderingContext2D_currentTransform_Setter(mthis, value) native "CanvasRenderingContext2D_currentTransform_Setter";
@@ -1047,7 +994,7 @@
 
 Native_CanvasRenderingContext2D_scale_Callback(mthis, sx, sy) native "CanvasRenderingContext2D_scale_Callback_RESOLVER_STRING_2_float_float";
 
-Native_CanvasRenderingContext2D_setLineDash_Callback(mthis, dash) native "CanvasRenderingContext2D_setLineDash_Callback_RESOLVER_STRING_1_sequence<float>";
+Native_CanvasRenderingContext2D_setLineDash_Callback(mthis, dash) native "CanvasRenderingContext2D_setLineDash_Callback_RESOLVER_STRING_1_sequence<unrestricted float>";
 
 Native_CanvasRenderingContext2D_setTransform_Callback(mthis, m11, m12, m21, m22, dx, dy) native "CanvasRenderingContext2D_setTransform_Callback_RESOLVER_STRING_6_float_float_float_float_float_float";
 
@@ -1073,25 +1020,6 @@
 
 Native_CanvasRenderingContext2D_translate_Callback(mthis, tx, ty) native "CanvasRenderingContext2D_translate_Callback_RESOLVER_STRING_2_float_float";
 
-Native_CanvasRenderingContext2D_webkitGetImageDataHD_Callback(mthis, sx, sy, sw, sh) native "CanvasRenderingContext2D_webkitGetImageDataHD_Callback_RESOLVER_STRING_4_float_float_float_float";
-
-  // Generated overload resolver
-Native_CanvasRenderingContext2D_putImageDataHD(mthis, imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) {
-    if ((dy is num || dy == null) && (dx is num || dx == null) && (imagedata is ImageData || imagedata == null) && dirtyX == null && dirtyY == null && dirtyWidth == null && dirtyHeight == null) {
-      Native_CanvasRenderingContext2D__webkitPutImageDataHD_1_Callback(mthis, imagedata, dx, dy);
-      return;
-    }
-    if ((dirtyHeight is num || dirtyHeight == null) && (dirtyWidth is num || dirtyWidth == null) && (dirtyY is num || dirtyY == null) && (dirtyX is num || dirtyX == null) && (dy is num || dy == null) && (dx is num || dx == null) && (imagedata is ImageData || imagedata == null)) {
-      Native_CanvasRenderingContext2D__webkitPutImageDataHD_2_Callback(mthis, imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
-      return;
-    }
-    throw new ArgumentError("Incorrect number or type of arguments");
-  }
-
-Native_CanvasRenderingContext2D__webkitPutImageDataHD_1_Callback(mthis, imagedata, dx, dy) native "CanvasRenderingContext2D_webkitPutImageDataHD_Callback_RESOLVER_STRING_3_ImageData_float_float";
-
-Native_CanvasRenderingContext2D__webkitPutImageDataHD_2_Callback(mthis, imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) native "CanvasRenderingContext2D_webkitPutImageDataHD_Callback_RESOLVER_STRING_7_ImageData_float_float_float_float_float_float";
-
 Native_ClientRect_bottom_Getter(mthis) native "ClientRect_bottom_Getter";
 
 Native_ClientRect_height_Getter(mthis) native "ClientRect_height_Getter";
@@ -1277,8 +1205,6 @@
 
 Native_DOMFileSystem_root_Getter(mthis) native "DOMFileSystem_root_Getter";
 
-Native_DOMImplementation_createCSSStyleSheet_Callback(mthis, title, media) native "DOMImplementation_createCSSStyleSheet_Callback_RESOLVER_STRING_2_DOMString_DOMString";
-
 Native_DOMImplementation_createDocument_Callback(mthis, namespaceURI, qualifiedName, doctype) native "DOMImplementation_createDocument_Callback_RESOLVER_STRING_3_DOMString_DOMString_DocumentType";
 
 Native_DOMImplementation_createDocumentType_Callback(mthis, qualifiedName, publicId, systemId) native "DOMImplementation_createDocumentType_Callback_RESOLVER_STRING_3_DOMString_DOMString_DOMString";
@@ -1448,8 +1374,6 @@
 
 Native_WorkerGlobalScope_self_Getter(mthis) native "WorkerGlobalScope_self_Getter";
 
-Native_WorkerGlobalScope_webkitNotifications_Getter(mthis) native "WorkerGlobalScope_webkitNotifications_Getter";
-
 Native_WorkerGlobalScope_close_Callback(mthis) native "WorkerGlobalScope_close_Callback_RESOLVER_STRING_0_";
 
 Native_WorkerGlobalScope_openDatabase_Callback(mthis, name, version, displayName, estimatedSize, creationCallback) native "WorkerGlobalScope_openDatabase_Callback_RESOLVER_STRING_5_DOMString_DOMString_DOMString_unsigned long_DatabaseCallback";
@@ -2130,7 +2054,7 @@
 
 Native_Gamepad_axes_Getter(mthis) native "Gamepad_axes_Getter";
 
-Native_Gamepad_buttons_Getter(mthis) native "Gamepad_buttons_Getter";
+Native_Gamepad_buttons_Getter(mthis) native "WebKitGamepad_buttons_Getter";
 
 Native_Gamepad_id_Getter(mthis) native "Gamepad_id_Getter";
 
@@ -2722,7 +2646,7 @@
 
 Native_HTMLFormElement_checkValidity_Callback(mthis) native "HTMLFormElement_checkValidity_Callback_RESOLVER_STRING_0_";
 
-Native_HTMLFormElement_requestAutocomplete_Callback(mthis) native "HTMLFormElement_requestAutocomplete_Callback_RESOLVER_STRING_0_";
+Native_HTMLFormElement_requestAutocomplete_Callback(mthis, details) native "HTMLFormElement_requestAutocomplete_Callback_RESOLVER_STRING_1_Dictionary";
 
 Native_HTMLFormElement_reset_Callback(mthis) native "HTMLFormElement_reset_Callback_RESOLVER_STRING_0_";
 
@@ -2960,14 +2884,6 @@
 
 Native_HTMLInputElement_webkitEntries_Getter(mthis) native "HTMLInputElement_webkitEntries_Getter";
 
-Native_HTMLInputElement_webkitGrammar_Getter(mthis) native "HTMLInputElement_webkitGrammar_Getter";
-
-Native_HTMLInputElement_webkitGrammar_Setter(mthis, value) native "HTMLInputElement_webkitGrammar_Setter";
-
-Native_HTMLInputElement_webkitSpeech_Getter(mthis) native "HTMLInputElement_webkitSpeech_Getter";
-
-Native_HTMLInputElement_webkitSpeech_Setter(mthis, value) native "HTMLInputElement_webkitSpeech_Setter";
-
 Native_HTMLInputElement_webkitdirectory_Getter(mthis) native "HTMLInputElement_webkitdirectory_Getter";
 
 Native_HTMLInputElement_webkitdirectory_Setter(mthis, value) native "HTMLInputElement_webkitdirectory_Setter";
@@ -4511,8 +4427,6 @@
 
 Native_OscillatorNode_frequency_Getter(mthis) native "OscillatorNode_frequency_Getter";
 
-Native_OscillatorNode_playbackState_Getter(mthis) native "OscillatorNode_playbackState_Getter";
-
 Native_OscillatorNode_type_Getter(mthis) native "OscillatorNode_type_Getter";
 
 Native_OscillatorNode_type_Setter(mthis, value) native "OscillatorNode_type_Setter";
@@ -5293,8 +5207,6 @@
 
 Native_SVGClipPathElement_clipPathUnits_Getter(mthis) native "SVGClipPathElement_clipPathUnits_Getter";
 
-Native_SVGElementInstance_childNodes_Getter(mthis) native "SVGElementInstance_childNodes_Getter";
-
 Native_SVGElementInstance_correspondingElement_Getter(mthis) native "SVGElementInstance_correspondingElement_Getter";
 
 Native_SVGElementInstance_correspondingUseElement_Getter(mthis) native "SVGElementInstance_correspondingUseElement_Getter";
@@ -6273,14 +6185,6 @@
 
 Native_SVGZoomAndPan_zoomAndPan_Setter(mthis, value) native "SVGZoomAndPan_zoomAndPan_Setter";
 
-Native_SVGSVGElement_contentScriptType_Getter(mthis) native "SVGSVGElement_contentScriptType_Getter";
-
-Native_SVGSVGElement_contentScriptType_Setter(mthis, value) native "SVGSVGElement_contentScriptType_Setter";
-
-Native_SVGSVGElement_contentStyleType_Getter(mthis) native "SVGSVGElement_contentStyleType_Getter";
-
-Native_SVGSVGElement_contentStyleType_Setter(mthis, value) native "SVGSVGElement_contentStyleType_Setter";
-
 Native_SVGSVGElement_currentScale_Getter(mthis) native "SVGSVGElement_currentScale_Getter";
 
 Native_SVGSVGElement_currentScale_Setter(mthis, value) native "SVGSVGElement_currentScale_Setter";
@@ -6465,13 +6369,13 @@
 
 Native_SVGUseElement_y_Getter(mthis) native "SVGUseElement_y_Getter";
 
-Native_SVGUseElement_requiredExtensions_Getter(mthis) native "SVGUseElement_requiredExtensions_Getter";
+Native_SVGUseElement_requiredExtensions_Getter(mthis) native "SVGGraphicsElement_requiredExtensions_Getter";
 
-Native_SVGUseElement_requiredFeatures_Getter(mthis) native "SVGUseElement_requiredFeatures_Getter";
+Native_SVGUseElement_requiredFeatures_Getter(mthis) native "SVGGraphicsElement_requiredFeatures_Getter";
 
-Native_SVGUseElement_systemLanguage_Getter(mthis) native "SVGUseElement_systemLanguage_Getter";
+Native_SVGUseElement_systemLanguage_Getter(mthis) native "SVGGraphicsElement_systemLanguage_Getter";
 
-Native_SVGUseElement_hasExtension_Callback(mthis, extension) native "SVGUseElement_hasExtension_Callback_RESOLVER_STRING_1_DOMString";
+Native_SVGUseElement_hasExtension_Callback(mthis, extension) native "SVGGraphicsElement_hasExtension_Callback_RESOLVER_STRING_1_DOMString";
 
 Native_SVGUseElement_href_Getter(mthis) native "SVGUseElement_href_Getter";
 
@@ -6615,10 +6519,6 @@
 
 Native_ShadowRoot_activeElement_Getter(mthis) native "ShadowRoot_activeElement_Getter";
 
-Native_ShadowRoot_applyAuthorStyles_Getter(mthis) native "ShadowRoot_applyAuthorStyles_Getter";
-
-Native_ShadowRoot_applyAuthorStyles_Setter(mthis, value) native "ShadowRoot_applyAuthorStyles_Setter";
-
 Native_ShadowRoot_host_Getter(mthis) native "ShadowRoot_host_Getter";
 
 Native_ShadowRoot_innerHTML_Getter(mthis) native "ShadowRoot_innerHTML_Getter";
@@ -6770,12 +6670,6 @@
 
 Native_SpeechGrammarList_item_Callback(mthis, index) native "SpeechGrammarList_item_Callback_RESOLVER_STRING_1_unsigned long";
 
-Native_SpeechInputEvent_results_Getter(mthis) native "SpeechInputEvent_results_Getter";
-
-Native_SpeechInputResult_confidence_Getter(mthis) native "SpeechInputResult_confidence_Getter";
-
-Native_SpeechInputResult_utterance_Getter(mthis) native "SpeechInputResult_utterance_Getter";
-
 Native_SpeechInputResultList_length_Getter(mthis) native "SpeechInputResultList_length_Getter";
 
 Native_SpeechInputResultList_NativeIndexed_Getter(mthis, index) native "SpeechInputResultList_item_Callback_RESOLVER_STRING_1_unsigned long";
@@ -8182,8 +8076,6 @@
 
 Native_Worker_terminate_Callback(mthis) native "Worker_terminate_Callback_RESOLVER_STRING_0_";
 
-Native_WorkerCrypto_getRandomValues_Callback(mthis, array) native "WorkerCrypto_getRandomValues_Callback";
-
 Native_WorkerPerformance_now_Callback(mthis) native "WorkerPerformance_now_Callback_RESOLVER_STRING_0_";
 
 Native_XMLHttpRequest_constructorCallback() native "XMLHttpRequest_constructorCallback";
diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart
index 050e4c0..3a1e464 100644
--- a/sdk/lib/html/dart2js/html_dart2js.dart
+++ b/sdk/lib/html/dart2js/html_dart2js.dart
@@ -715,10 +715,6 @@
 class BeforeLoadEvent extends Event native "BeforeLoadEvent" {
   // To suppress missing implicit constructor warnings.
   factory BeforeLoadEvent._() { throw new UnsupportedError("Not supported"); }
-
-  @DomName('BeforeLoadEvent.url')
-  @DocsEditable()
-  final String url;
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
@@ -1403,21 +1399,6 @@
   // To suppress missing implicit constructor warnings.
   factory CanvasRenderingContext2D._() { throw new UnsupportedError("Not supported"); }
 
-  /**
-   * The current default path of this canvas context, if there is one.
-   *
-   * ## Other resources
-   *
-   * * [Current default path]
-   * (http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#current-default-path)
-   * from WHATWG.
-   */
-  @DomName('CanvasRenderingContext2D.currentPath')
-  @DocsEditable()
-  // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#path-objects
-  @Experimental()
-  Path currentPath;
-
   @DomName('CanvasRenderingContext2D.currentTransform')
   @DocsEditable()
   @Experimental() // untriaged
@@ -1707,57 +1688,6 @@
   @DocsEditable()
   void translate(num tx, num ty) native;
 
-  @DomName('CanvasRenderingContext2D.webkitGetImageDataHD')
-  @DocsEditable()
-  @SupportedBrowser(SupportedBrowser.CHROME)
-  @SupportedBrowser(SupportedBrowser.SAFARI)
-  @Experimental()
-  @Creates('ImageData|=Object')
-  ImageData getImageDataHD(num sx, num sy, num sw, num sh) {
-    return convertNativeToDart_ImageData(_getImageDataHD_1(sx, sy, sw, sh));
-  }
-  @JSName('webkitGetImageDataHD')
-  @DomName('CanvasRenderingContext2D.webkitGetImageDataHD')
-  @DocsEditable()
-  @SupportedBrowser(SupportedBrowser.CHROME)
-  @SupportedBrowser(SupportedBrowser.SAFARI)
-  @Experimental()
-  @Creates('ImageData|=Object')
-  _getImageDataHD_1(sx, sy, sw, sh) native;
-
-  @DomName('CanvasRenderingContext2D.webkitPutImageDataHD')
-  @DocsEditable()
-  @SupportedBrowser(SupportedBrowser.CHROME)
-  @SupportedBrowser(SupportedBrowser.SAFARI)
-  @Experimental()
-  void putImageDataHD(ImageData imagedata, num dx, num dy, [num dirtyX, num dirtyY, num dirtyWidth, num dirtyHeight]) {
-    if (dirtyX == null && dirtyY == null && dirtyWidth == null && dirtyHeight == null) {
-      var imagedata_1 = convertDartToNative_ImageData(imagedata);
-      _putImageDataHD_1(imagedata_1, dx, dy);
-      return;
-    }
-    if (dirtyHeight != null && dirtyWidth != null && dirtyY != null && dirtyX != null) {
-      var imagedata_2 = convertDartToNative_ImageData(imagedata);
-      _putImageDataHD_2(imagedata_2, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
-      return;
-    }
-    throw new ArgumentError("Incorrect number or type of arguments");
-  }
-  @JSName('webkitPutImageDataHD')
-  @DomName('CanvasRenderingContext2D.webkitPutImageDataHD')
-  @DocsEditable()
-  @SupportedBrowser(SupportedBrowser.CHROME)
-  @SupportedBrowser(SupportedBrowser.SAFARI)
-  @Experimental()
-  void _putImageDataHD_1(imagedata, dx, dy) native;
-  @JSName('webkitPutImageDataHD')
-  @DomName('CanvasRenderingContext2D.webkitPutImageDataHD')
-  @DocsEditable()
-  @SupportedBrowser(SupportedBrowser.CHROME)
-  @SupportedBrowser(SupportedBrowser.SAFARI)
-  @Experimental()
-  void _putImageDataHD_2(imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) native;
-
 
   /**
    * Sets the color used inside shapes.
@@ -8015,12 +7945,6 @@
   // To suppress missing implicit constructor warnings.
   factory DomImplementation._() { throw new UnsupportedError("Not supported"); }
 
-  @JSName('createCSSStyleSheet')
-  @DomName('DOMImplementation.createCSSStyleSheet')
-  @DocsEditable()
-  @Experimental() // non-standard
-  CssStyleSheet createCssStyleSheet(String title, String media) native;
-
   @DomName('DOMImplementation.createDocument')
   @DocsEditable()
   XmlDocument createDocument(String namespaceURI, String qualifiedName, _DocumentType doctype) native;
@@ -13401,7 +13325,17 @@
   @DocsEditable()
   // http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2012-October/037711.html
   @Experimental()
-  void requestAutocomplete() native;
+  void requestAutocomplete(Map details) {
+    var details_1 = convertDartToNative_Dictionary(details);
+    _requestAutocomplete_1(details_1);
+    return;
+  }
+  @JSName('requestAutocomplete')
+  @DomName('HTMLFormElement.requestAutocomplete')
+  @DocsEditable()
+  // http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2012-October/037711.html
+  @Experimental()
+  void _requestAutocomplete_1(details) native;
 
   @DomName('HTMLFormElement.reset')
   @DocsEditable()
@@ -15846,24 +15780,6 @@
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#concept-input-type-file-selected
   final List<Entry> entries;
 
-  @JSName('webkitGrammar')
-  @DomName('HTMLInputElement.webkitGrammar')
-  @DocsEditable()
-  @SupportedBrowser(SupportedBrowser.CHROME)
-  @SupportedBrowser(SupportedBrowser.SAFARI)
-  @Experimental()
-  // http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#attrib-grammar
-  bool grammar;
-
-  @JSName('webkitSpeech')
-  @DomName('HTMLInputElement.webkitSpeech')
-  @DocsEditable()
-  @SupportedBrowser(SupportedBrowser.CHROME)
-  @SupportedBrowser(SupportedBrowser.SAFARI)
-  @Experimental()
-  // http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#attrib-speech
-  bool speech;
-
   @JSName('webkitdirectory')
   @DomName('HTMLInputElement.webkitdirectory')
   @DocsEditable()
@@ -23371,11 +23287,6 @@
   @DocsEditable()
   final Element activeElement;
 
-  @JSName('applyAuthorStyles')
-  @DomName('ShadowRoot.applyAuthorStyles')
-  @DocsEditable()
-  bool _applyAuthorStyles;
-
   @DomName('ShadowRoot.host')
   @DocsEditable()
   @Experimental() // untriaged
@@ -23435,20 +23346,39 @@
   static bool get supported =>
       JS('bool', '!!(Element.prototype.webkitCreateShadowRoot)');
 
-  @deprecated
-  bool get resetStyleInheritance => this._resetStyleInheritance;
-
-  @deprecated
-  void set resetStyleInheritance(bool value) {
-    this._resetStyleInheritance = value;
+  static bool _shadowRootDeprecationReported = false;
+  static void _shadowRootDeprecationReport() {
+    if (!_shadowRootDeprecationReported) {
+      window.console.warn('''
+ShadowRoot.resetStyleInheritance and ShadowRoot.applyAuthorStyles now deprecated in dart:html.
+Please remove them from your code.
+''');
+      _shadowRootDeprecationReported = true;
+    }
   }
 
   @deprecated
-  bool get applyAuthorStyles => this._applyAuthorStyles;
+  bool get resetStyleInheritance {
+    _shadowRootDeprecationReport();
+    // Default value from when it was specified.
+    return false;
+  }
+
+  @deprecated
+  void set resetStyleInheritance(bool value) {
+    _shadowRootDeprecationReport();
+  }
+
+  @deprecated
+  bool get applyAuthorStyles {
+    _shadowRootDeprecationReport();
+    // Default value from when it was specified.
+    return false;
+  }
 
   @deprecated
   void set applyAuthorStyles(bool value) {
-    this._applyAuthorStyles = value;
+    _shadowRootDeprecationReport();
   }
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -23865,12 +23795,6 @@
 class SpeechInputEvent extends Event native "SpeechInputEvent" {
   // To suppress missing implicit constructor warnings.
   factory SpeechInputEvent._() { throw new UnsupportedError("Not supported"); }
-
-  @DomName('SpeechInputEvent.results')
-  @DocsEditable()
-  @Returns('_SpeechInputResultList')
-  @Creates('_SpeechInputResultList')
-  final List<SpeechInputResult> results;
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
@@ -23884,14 +23808,6 @@
 class SpeechInputResult extends Interceptor native "SpeechInputResult" {
   // To suppress missing implicit constructor warnings.
   factory SpeechInputResult._() { throw new UnsupportedError("Not supported"); }
-
-  @DomName('SpeechInputResult.confidence')
-  @DocsEditable()
-  final double confidence;
-
-  @DomName('SpeechInputResult.utterance')
-  @DocsEditable()
-  final String utterance;
 }
 // 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
@@ -25824,11 +25740,6 @@
   @Experimental() // untriaged
   final Player player;
 
-  @DomName('TimedItem.specified')
-  @DocsEditable()
-  @Experimental() // untriaged
-  final Timing specified;
-
   @DomName('TimedItem.startTime')
   @DocsEditable()
   @Experimental() // untriaged
@@ -29527,13 +29438,6 @@
 class WorkerCrypto extends Interceptor native "WorkerCrypto" {
   // To suppress missing implicit constructor warnings.
   factory WorkerCrypto._() { throw new UnsupportedError("Not supported"); }
-
-  @DomName('WorkerCrypto.getRandomValues')
-  @DocsEditable()
-  @Experimental() // untriaged
-  @Creates('TypedData')
-  @Returns('TypedData|Null')
-  TypedData getRandomValues(TypedData array) native;
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
@@ -29603,15 +29507,6 @@
   @Experimental() // untriaged
   final WorkerGlobalScope self;
 
-  @JSName('webkitNotifications')
-  @DomName('WorkerGlobalScope.webkitNotifications')
-  @DocsEditable()
-  @SupportedBrowser(SupportedBrowser.CHROME)
-  @SupportedBrowser(SupportedBrowser.SAFARI)
-  @Experimental()
-  @Experimental() // untriaged
-  final _NotificationCenter _webkitNotifications;
-
   @DomName('WorkerGlobalScope.close')
   @DocsEditable()
   @Experimental() // untriaged
diff --git a/sdk/lib/html/dartium/html_dartium.dart b/sdk/lib/html/dartium/html_dartium.dart
index c93a3d7..b7ff13b 100644
--- a/sdk/lib/html/dartium/html_dartium.dart
+++ b/sdk/lib/html/dartium/html_dartium.dart
@@ -1226,10 +1226,6 @@
   // To suppress missing implicit constructor warnings.
   factory BeforeLoadEvent._() { throw new UnsupportedError("Not supported"); }
 
-  @DomName('BeforeLoadEvent.url')
-  @DocsEditable()
-  String get url => _blink.Native_BeforeLoadEvent_url_Getter(this);
-
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
@@ -1962,36 +1958,6 @@
   // To suppress missing implicit constructor warnings.
   factory CanvasRenderingContext2D._() { throw new UnsupportedError("Not supported"); }
 
-  /**
-   * The current default path of this canvas context, if there is one.
-   *
-   * ## Other resources
-   *
-   * * [Current default path]
-   * (http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#current-default-path)
-   * from WHATWG.
-   */
-  @DomName('CanvasRenderingContext2D.currentPath')
-  @DocsEditable()
-  // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#path-objects
-  @Experimental()
-  Path get currentPath => _blink.Native_CanvasRenderingContext2D_currentPath_Getter(this);
-
-  /**
-   * The current default path of this canvas context, if there is one.
-   *
-   * ## Other resources
-   *
-   * * [Current default path]
-   * (http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#current-default-path)
-   * from WHATWG.
-   */
-  @DomName('CanvasRenderingContext2D.currentPath')
-  @DocsEditable()
-  // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#path-objects
-  @Experimental()
-  void set currentPath(Path value) => _blink.Native_CanvasRenderingContext2D_currentPath_Setter(this, value);
-
   @DomName('CanvasRenderingContext2D.currentTransform')
   @DocsEditable()
   @Experimental() // untriaged
@@ -2319,15 +2285,6 @@
   @DocsEditable()
   void translate(num tx, num ty) => _blink.Native_CanvasRenderingContext2D_translate_Callback(this, tx, ty);
 
-  @DomName('CanvasRenderingContext2D.webkitGetImageDataHD')
-  @DocsEditable()
-  @SupportedBrowser(SupportedBrowser.CHROME)
-  @SupportedBrowser(SupportedBrowser.SAFARI)
-  @Experimental()
-  ImageData getImageDataHD(num sx, num sy, num sw, num sh) => _blink.Native_CanvasRenderingContext2D_webkitGetImageDataHD_Callback(this, sx, sy, sw, sh);
-
-  void putImageDataHD(ImageData imagedata, num dx, num dy, [num dirtyX, num dirtyY, num dirtyWidth, num dirtyHeight]) => _blink.Native_CanvasRenderingContext2D_putImageDataHD(this, imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
-
 
   /**
    * Sets the color used inside shapes.
@@ -8525,11 +8482,6 @@
   // To suppress missing implicit constructor warnings.
   factory DomImplementation._() { throw new UnsupportedError("Not supported"); }
 
-  @DomName('DOMImplementation.createCSSStyleSheet')
-  @DocsEditable()
-  @Experimental() // non-standard
-  CssStyleSheet createCssStyleSheet(String title, String media) => _blink.Native_DOMImplementation_createCSSStyleSheet_Callback(this, title, media);
-
   @DomName('DOMImplementation.createDocument')
   @DocsEditable()
   XmlDocument createDocument(String namespaceURI, String qualifiedName, _DocumentType doctype) => _blink.Native_DOMImplementation_createDocument_Callback(this, namespaceURI, qualifiedName, doctype);
@@ -13684,7 +13636,7 @@
   @DocsEditable()
   // http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2012-October/037711.html
   @Experimental()
-  void requestAutocomplete() => _blink.Native_HTMLFormElement_requestAutocomplete_Callback(this);
+  void requestAutocomplete(Map details) => _blink.Native_HTMLFormElement_requestAutocomplete_Callback(this, details);
 
   @DomName('HTMLFormElement.reset')
   @DocsEditable()
@@ -16976,38 +16928,6 @@
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#concept-input-type-file-selected
   List<Entry> get entries => _blink.Native_HTMLInputElement_webkitEntries_Getter(this);
 
-  @DomName('HTMLInputElement.webkitGrammar')
-  @DocsEditable()
-  @SupportedBrowser(SupportedBrowser.CHROME)
-  @SupportedBrowser(SupportedBrowser.SAFARI)
-  @Experimental()
-  // http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#attrib-grammar
-  bool get grammar => _blink.Native_HTMLInputElement_webkitGrammar_Getter(this);
-
-  @DomName('HTMLInputElement.webkitGrammar')
-  @DocsEditable()
-  @SupportedBrowser(SupportedBrowser.CHROME)
-  @SupportedBrowser(SupportedBrowser.SAFARI)
-  @Experimental()
-  // http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#attrib-grammar
-  void set grammar(bool value) => _blink.Native_HTMLInputElement_webkitGrammar_Setter(this, value);
-
-  @DomName('HTMLInputElement.webkitSpeech')
-  @DocsEditable()
-  @SupportedBrowser(SupportedBrowser.CHROME)
-  @SupportedBrowser(SupportedBrowser.SAFARI)
-  @Experimental()
-  // http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#attrib-speech
-  bool get speech => _blink.Native_HTMLInputElement_webkitSpeech_Getter(this);
-
-  @DomName('HTMLInputElement.webkitSpeech')
-  @DocsEditable()
-  @SupportedBrowser(SupportedBrowser.CHROME)
-  @SupportedBrowser(SupportedBrowser.SAFARI)
-  @Experimental()
-  // http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html#attrib-speech
-  void set speech(bool value) => _blink.Native_HTMLInputElement_webkitSpeech_Setter(this, value);
-
   @DomName('HTMLInputElement.webkitdirectory')
   @DocsEditable()
   @SupportedBrowser(SupportedBrowser.CHROME)
@@ -24841,14 +24761,6 @@
   @DocsEditable()
   Element get activeElement => _blink.Native_ShadowRoot_activeElement_Getter(this);
 
-  @DomName('ShadowRoot.applyAuthorStyles')
-  @DocsEditable()
-  bool get _applyAuthorStyles => _blink.Native_ShadowRoot_applyAuthorStyles_Getter(this);
-
-  @DomName('ShadowRoot.applyAuthorStyles')
-  @DocsEditable()
-  void set _applyAuthorStyles(bool value) => _blink.Native_ShadowRoot_applyAuthorStyles_Setter(this, value);
-
   @DomName('ShadowRoot.host')
   @DocsEditable()
   @Experimental() // untriaged
@@ -25407,10 +25319,6 @@
   // To suppress missing implicit constructor warnings.
   factory SpeechInputEvent._() { throw new UnsupportedError("Not supported"); }
 
-  @DomName('SpeechInputEvent.results')
-  @DocsEditable()
-  List<SpeechInputResult> get results => _blink.Native_SpeechInputEvent_results_Getter(this);
-
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
@@ -25427,14 +25335,6 @@
   // To suppress missing implicit constructor warnings.
   factory SpeechInputResult._() { throw new UnsupportedError("Not supported"); }
 
-  @DomName('SpeechInputResult.confidence')
-  @DocsEditable()
-  double get confidence => _blink.Native_SpeechInputResult_confidence_Getter(this);
-
-  @DomName('SpeechInputResult.utterance')
-  @DocsEditable()
-  String get utterance => _blink.Native_SpeechInputResult_utterance_Getter(this);
-
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
@@ -27525,11 +27425,6 @@
   @Experimental() // untriaged
   Player get player => _blink.Native_TimedItem_player_Getter(this);
 
-  @DomName('TimedItem.specified')
-  @DocsEditable()
-  @Experimental() // untriaged
-  Timing get specified => _blink.Native_TimedItem_specified_Getter(this);
-
   @DomName('TimedItem.startTime')
   @DocsEditable()
   @Experimental() // untriaged
@@ -31048,11 +30943,6 @@
   // To suppress missing implicit constructor warnings.
   factory WorkerCrypto._() { throw new UnsupportedError("Not supported"); }
 
-  @DomName('WorkerCrypto.getRandomValues')
-  @DocsEditable()
-  @Experimental() // untriaged
-  TypedData getRandomValues(TypedData array) => _blink.Native_WorkerCrypto_getRandomValues_Callback(this, array);
-
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
@@ -31124,14 +31014,6 @@
   @Experimental() // untriaged
   WorkerGlobalScope get self => _blink.Native_WorkerGlobalScope_self_Getter(this);
 
-  @DomName('WorkerGlobalScope.webkitNotifications')
-  @DocsEditable()
-  @SupportedBrowser(SupportedBrowser.CHROME)
-  @SupportedBrowser(SupportedBrowser.SAFARI)
-  @Experimental()
-  @Experimental() // untriaged
-  _NotificationCenter get _webkitNotifications => _blink.Native_WorkerGlobalScope_webkitNotifications_Getter(this);
-
   @DomName('WorkerGlobalScope.close')
   @DocsEditable()
   @Experimental() // untriaged
diff --git a/sdk/lib/svg/dart2js/svg_dart2js.dart b/sdk/lib/svg/dart2js/svg_dart2js.dart
index 41d6ae1..c3ddd80 100644
--- a/sdk/lib/svg/dart2js/svg_dart2js.dart
+++ b/sdk/lib/svg/dart2js/svg_dart2js.dart
@@ -1120,12 +1120,6 @@
   @DocsEditable()
   static const EventStreamProvider<Event> unloadEvent = const EventStreamProvider<Event>('unload');
 
-  @DomName('SVGElementInstance.childNodes')
-  @DocsEditable()
-  @Returns('_ElementInstanceList')
-  @Creates('_ElementInstanceList')
-  final List<ElementInstance> childNodes;
-
   @DomName('SVGElementInstance.correspondingElement')
   @DocsEditable()
   final SvgElement correspondingElement;
@@ -6012,14 +6006,6 @@
    */
   SvgSvgElement.created() : super.created();
 
-  @DomName('SVGSVGElement.contentScriptType')
-  @DocsEditable()
-  String contentScriptType;
-
-  @DomName('SVGSVGElement.contentStyleType')
-  @DocsEditable()
-  String contentStyleType;
-
   @DomName('SVGSVGElement.currentScale')
   @DocsEditable()
   num currentScale;
diff --git a/sdk/lib/svg/dartium/svg_dartium.dart b/sdk/lib/svg/dartium/svg_dartium.dart
index d36bb4d..ebfc7e4 100644
--- a/sdk/lib/svg/dartium/svg_dartium.dart
+++ b/sdk/lib/svg/dartium/svg_dartium.dart
@@ -1366,10 +1366,6 @@
   @DocsEditable()
   static const EventStreamProvider<Event> unloadEvent = const EventStreamProvider<Event>('unload');
 
-  @DomName('SVGElementInstance.childNodes')
-  @DocsEditable()
-  List<ElementInstance> get childNodes => _blink.Native_SVGElementInstance_childNodes_Getter(this);
-
   @DomName('SVGElementInstance.correspondingElement')
   @DocsEditable()
   SvgElement get correspondingElement => _blink.Native_SVGElementInstance_correspondingElement_Getter(this);
@@ -6775,22 +6771,6 @@
    */
   SvgSvgElement.created() : super.created();
 
-  @DomName('SVGSVGElement.contentScriptType')
-  @DocsEditable()
-  String get contentScriptType => _blink.Native_SVGSVGElement_contentScriptType_Getter(this);
-
-  @DomName('SVGSVGElement.contentScriptType')
-  @DocsEditable()
-  void set contentScriptType(String value) => _blink.Native_SVGSVGElement_contentScriptType_Setter(this, value);
-
-  @DomName('SVGSVGElement.contentStyleType')
-  @DocsEditable()
-  String get contentStyleType => _blink.Native_SVGSVGElement_contentStyleType_Getter(this);
-
-  @DomName('SVGSVGElement.contentStyleType')
-  @DocsEditable()
-  void set contentStyleType(String value) => _blink.Native_SVGSVGElement_contentStyleType_Setter(this, value);
-
   @DomName('SVGSVGElement.currentScale')
   @DocsEditable()
   num get currentScale => _blink.Native_SVGSVGElement_currentScale_Getter(this);
diff --git a/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart b/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart
index 4de5e85..cc56742 100644
--- a/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart
+++ b/sdk/lib/web_audio/dart2js/web_audio_dart2js.dart
@@ -82,10 +82,6 @@
   @DocsEditable()
   final double duration;
 
-  @DomName('AudioBuffer.gain')
-  @DocsEditable()
-  num gain;
-
   @DomName('AudioBuffer.length')
   @DocsEditable()
   final int length;
@@ -186,10 +182,6 @@
   @DocsEditable()
   AudioBuffer buffer;
 
-  @DomName('AudioBufferSourceNode.gain')
-  @DocsEditable()
-  final AudioParam gain;
-
   @DomName('AudioBufferSourceNode.loop')
   @DocsEditable()
   bool loop;
@@ -206,10 +198,6 @@
   @DocsEditable()
   final AudioParam playbackRate;
 
-  @DomName('AudioBufferSourceNode.playbackState')
-  @DocsEditable()
-  final int playbackState;
-
   @DomName('AudioBufferSourceNode.noteGrainOn')
   @DocsEditable()
   void noteGrainOn(num when, num grainOffset, num grainDuration) native;
@@ -254,10 +242,6 @@
   /// Checks if this type is supported on the current platform.
   static bool get supported => JS('bool', '!!(window.AudioContext || window.webkitAudioContext)');
 
-  @DomName('AudioContext.activeSourceCount')
-  @DocsEditable()
-  final int activeSourceCount;
-
   @DomName('AudioContext.currentTime')
   @DocsEditable()
   final double currentTime;
@@ -286,11 +270,6 @@
   @DocsEditable()
   AudioBuffer createBuffer(int numberOfChannels, int numberOfFrames, num sampleRate) native;
 
-  @JSName('createBuffer')
-  @DomName('AudioContext.createBuffer')
-  @DocsEditable()
-  AudioBuffer createBufferFromBuffer(ByteBuffer buffer, bool mixToMono) native;
-
   @DomName('AudioContext.createBufferSource')
   @DocsEditable()
   AudioBufferSourceNode createBufferSource() native;
@@ -311,22 +290,10 @@
   @DocsEditable()
   DelayNode createDelay([num maxDelayTime]) native;
 
-  @DomName('AudioContext.createDelayNode')
-  @DocsEditable()
-  DelayNode createDelayNode([num maxDelayTime]) native;
-
   @DomName('AudioContext.createDynamicsCompressor')
   @DocsEditable()
   DynamicsCompressorNode createDynamicsCompressor() native;
 
-  @DomName('AudioContext.createGainNode')
-  @DocsEditable()
-  GainNode createGainNode() native;
-
-  @DomName('AudioContext.createJavaScriptNode')
-  @DocsEditable()
-  ScriptProcessorNode createJavaScriptNode(int bufferSize, [int numberOfInputChannels, int numberOfOutputChannels]) native;
-
   @DomName('AudioContext.createMediaElementSource')
   @DocsEditable()
   MediaElementAudioSourceNode createMediaElementSource(MediaElement mediaElement) native;
@@ -567,10 +534,6 @@
   @DocsEditable()
   void setTargetAtTime(num target, num time, num timeConstant) native;
 
-  @DomName('AudioParam.setTargetValueAtTime')
-  @DocsEditable()
-  void setTargetValueAtTime(num targetValue, num time, num timeConstant) native;
-
   @DomName('AudioParam.setValueAtTime')
   @DocsEditable()
   void setValueAtTime(num value, num time) native;
@@ -937,10 +900,6 @@
   @DocsEditable()
   final AudioParam frequency;
 
-  @DomName('OscillatorNode.playbackState')
-  @DocsEditable()
-  final int playbackState;
-
   @DomName('OscillatorNode.type')
   @DocsEditable()
   String type;
diff --git a/sdk/lib/web_audio/dartium/web_audio_dartium.dart b/sdk/lib/web_audio/dartium/web_audio_dartium.dart
index 10748a5..7719807 100644
--- a/sdk/lib/web_audio/dartium/web_audio_dartium.dart
+++ b/sdk/lib/web_audio/dartium/web_audio_dartium.dart
@@ -128,14 +128,6 @@
   @DocsEditable()
   double get duration => _blink.Native_AudioBuffer_duration_Getter(this);
 
-  @DomName('AudioBuffer.gain')
-  @DocsEditable()
-  num get gain => _blink.Native_AudioBuffer_gain_Getter(this);
-
-  @DomName('AudioBuffer.gain')
-  @DocsEditable()
-  void set gain(num value) => _blink.Native_AudioBuffer_gain_Setter(this, value);
-
   @DomName('AudioBuffer.length')
   @DocsEditable()
   int get length => _blink.Native_AudioBuffer_length_Getter(this);
@@ -214,10 +206,6 @@
   @DocsEditable()
   void set buffer(AudioBuffer value) => _blink.Native_AudioBufferSourceNode_buffer_Setter(this, value);
 
-  @DomName('AudioBufferSourceNode.gain')
-  @DocsEditable()
-  AudioParam get gain => _blink.Native_AudioBufferSourceNode_gain_Getter(this);
-
   @DomName('AudioBufferSourceNode.loop')
   @DocsEditable()
   bool get loop => _blink.Native_AudioBufferSourceNode_loop_Getter(this);
@@ -246,10 +234,6 @@
   @DocsEditable()
   AudioParam get playbackRate => _blink.Native_AudioBufferSourceNode_playbackRate_Getter(this);
 
-  @DomName('AudioBufferSourceNode.playbackState')
-  @DocsEditable()
-  int get playbackState => _blink.Native_AudioBufferSourceNode_playbackState_Getter(this);
-
   @DomName('AudioBufferSourceNode.noteGrainOn')
   @DocsEditable()
   void noteGrainOn(num when, num grainOffset, num grainDuration) => _blink.Native_AudioBufferSourceNode_noteGrainOn_Callback(this, when, grainOffset, grainDuration);
@@ -302,10 +286,6 @@
   /// Checks if this type is supported on the current platform.
   static bool get supported => true;
 
-  @DomName('AudioContext.activeSourceCount')
-  @DocsEditable()
-  int get activeSourceCount => _blink.Native_AudioContext_activeSourceCount_Getter(this);
-
   @DomName('AudioContext.currentTime')
   @DocsEditable()
   double get currentTime => _blink.Native_AudioContext_currentTime_Getter(this);
@@ -334,10 +314,6 @@
   @DocsEditable()
   AudioBuffer createBuffer(int numberOfChannels, int numberOfFrames, num sampleRate) => _blink.Native_AudioContext_createBuffer_Callback(this, numberOfChannels, numberOfFrames, sampleRate);
 
-  @DomName('AudioContext.createBufferFromBuffer')
-  @DocsEditable()
-  AudioBuffer createBufferFromBuffer(ByteBuffer buffer, bool mixToMono) => _blink.Native_AudioContext_createBufferFromBuffer_Callback(this, buffer, mixToMono);
-
   @DomName('AudioContext.createBufferSource')
   @DocsEditable()
   AudioBufferSourceNode createBufferSource() => _blink.Native_AudioContext_createBufferSource_Callback(this);
@@ -352,8 +328,6 @@
 
   DelayNode createDelay([num maxDelayTime]) => _blink.Native_AudioContext_createDelay(this, maxDelayTime);
 
-  DelayNode createDelayNode([num maxDelayTime]) => _blink.Native_AudioContext_createDelayNode(this, maxDelayTime);
-
   @DomName('AudioContext.createDynamicsCompressor')
   @DocsEditable()
   DynamicsCompressorNode createDynamicsCompressor() => _blink.Native_AudioContext_createDynamicsCompressor_Callback(this);
@@ -362,12 +336,6 @@
   @DocsEditable()
   GainNode createGain() => _blink.Native_AudioContext_createGain_Callback(this);
 
-  @DomName('AudioContext.createGainNode')
-  @DocsEditable()
-  GainNode createGainNode() => _blink.Native_AudioContext_createGainNode_Callback(this);
-
-  ScriptProcessorNode createJavaScriptNode(int bufferSize, [int numberOfInputChannels, int numberOfOutputChannels]) => _blink.Native_AudioContext_createJavaScriptNode(this, bufferSize, numberOfInputChannels, numberOfOutputChannels);
-
   @DomName('AudioContext.createMediaElementSource')
   @DocsEditable()
   MediaElementAudioSourceNode createMediaElementSource(MediaElement mediaElement) => _blink.Native_AudioContext_createMediaElementSource_Callback(this, mediaElement);
@@ -612,10 +580,6 @@
   @DocsEditable()
   void setTargetAtTime(num target, num time, num timeConstant) => _blink.Native_AudioParam_setTargetAtTime_Callback(this, target, time, timeConstant);
 
-  @DomName('AudioParam.setTargetValueAtTime')
-  @DocsEditable()
-  void setTargetValueAtTime(num targetValue, num time, num timeConstant) => _blink.Native_AudioParam_setTargetValueAtTime_Callback(this, targetValue, time, timeConstant);
-
   @DomName('AudioParam.setValueAtTime')
   @DocsEditable()
   void setValueAtTime(num value, num time) => _blink.Native_AudioParam_setValueAtTime_Callback(this, value, time);
@@ -1036,10 +1000,6 @@
   @DocsEditable()
   AudioParam get frequency => _blink.Native_OscillatorNode_frequency_Getter(this);
 
-  @DomName('OscillatorNode.playbackState')
-  @DocsEditable()
-  int get playbackState => _blink.Native_OscillatorNode_playbackState_Getter(this);
-
   @DomName('OscillatorNode.type')
   @DocsEditable()
   String get type => _blink.Native_OscillatorNode_type_Getter(this);
diff --git a/tools/VERSION b/tools/VERSION
index cd798b5c..e9abb99 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -28,4 +28,4 @@
 MINOR 5
 PATCH 0
 PRERELEASE 4
-PRERELEASE_PATCH 4
+PRERELEASE_PATCH 5
diff --git a/tools/dom/idl/dart/dart.idl b/tools/dom/idl/dart/dart.idl
index cdf46f3..cfb832b 100644
--- a/tools/dom/idl/dart/dart.idl
+++ b/tools/dom/idl/dart/dart.idl
@@ -394,4 +394,95 @@
     boolean lockOrientation(sequence<DOMString> orientations);
 };
 
+[Supplemental] interface CanvasRenderingContext2D {
+    [Suppressed] void webkitPutImageDataHD(ImageData? imagedata, float dx, float dy);
+    [Suppressed] void webkitPutImageDataHD(ImageData? imagedata, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight);
+    [Suppressed] ImageData webkitGetImageDataHD(float sx, float sy, float sw, float sh);
+    [Suppressed] attribute Path currentPath;
+};
+
+[Supplemental] interface AudioParam {
+    [Suppressed] void setTargetValueAtTime(float target, double time, double timeConstant);
+    void setTargetAtTime(float target, double time, double timeConstant);
+};
+
+[Supplemental] interface AudioContext {
+    // Number of AudioBufferSourceNodes that are currently playing.
+    [Suppressed] readonly attribute unsigned long activeSourceCount;
+    [Suppressed] ScriptProcessorNode createJavaScriptNode(unsigned long bufferSize, optional unsigned long numberOfInputChannels, optional unsigned long numberOfOutputChannels);
+    [Suppressed] AudioBuffer createBuffer(ArrayBuffer? buffer, boolean mixToMono);
+    [Suppressed] GainNode createGainNode();
+    [Suppressed] DelayNode createDelayNode(optional double maxDelayTime);
+};
+
+[Supplemental] interface HTMLInputElement {
+    [Suppressed] attribute boolean webkitSpeech;
+    [Suppressed] attribute boolean webkitGrammar;
+};
+
+[Supplemental] interface ShadowRoot {
+    [Suppressed] attribute boolean applyAuthorStyles;
+};
+
+[Supplemental] interface BeforeLoadEvent {
+    [Suppressed] readonly attribute DOMString url;
+};
+
+[Supplemental] interface OscillatorNode {
+    [Suppressed] readonly attribute unsigned short playbackState;
+};
+
+[Supplemental] interface SVGElementInstance {
+    [Suppressed] readonly attribute SVGElementInstanceList childNodes;
+};
+
+[Supplemental] interface TimedItem {
+    [Suppressed] readonly attribute Timing specified;
+};
+
+[Supplemental] interface DOMImplementation {
+    [Suppressed]
+    CSSStyleSheet createCSSStyleSheet([Default=Undefined] optional DOMString title,
+                                      [Default=Undefined] optional DOMString media);
+};
+
+[Supplemental] interface SVGSVGElement {
+    [Suppressed] attribute DOMString contentStyleType;
+    [Suppressed] attribute DOMString contentScriptType;
+};
+
+[Supplemental] interface WorkerGlobalScope {
+    [Suppressed] readonly attribute NotificationCenter webkitNotifications;
+};
+
+[Supplemental] interface AudioBuffer {
+    [Suppressed] attribute float gain;
+};
+
+[Supplemental] interface WorkerCrypto {
+    [Suppressed] ArrayBufferView getRandomValues(ArrayBufferView array);
+};
+
+[Supplemental] interface HTMLFormElement {
+    void requestAutocomplete([Default=Undefined] optional Dictionary details);
+    [Suppressed] void requestAutocomplete();
+};
+
+[Supplemental] interface AudioBufferSourceNode {
+    [Suppressed] readonly attribute unsigned short playbackState;
+};
+
+[Supplemental] interface SpeechInputResult {
+    [Suppressed] readonly attribute DOMString utterance;
+    [Suppressed] readonly attribute float confidence;
+};
+
+[Supplemental] interface SpeechInputEvent : Event {
+    [Suppressed] readonly attribute SpeechInputResultList results;
+};
+
+[Supplemental] interface AudioBufferSourceNode : AudioSourceNode {
+    [Suppressed] readonly attribute AudioParam gain;
+};
+
 Element implements GlobalEventHandlers;
diff --git a/tools/dom/scripts/systemnative.py b/tools/dom/scripts/systemnative.py
index 88a2655..a513aa7 100644
--- a/tools/dom/scripts/systemnative.py
+++ b/tools/dom/scripts/systemnative.py
@@ -33,7 +33,22 @@
     # We don't know how to get GLenum to show up as the correct type in this
     # script and don't want to bother fixing it the right way.
     'WebGLDrawBuffers_drawBuffersWEBGL_Callback_RESOLVER_STRING_1_sequence<GLenum>' :
-        'WebGLDrawBuffers_drawBuffersWEBGL_Callback_RESOLVER_STRING_1_sequence<unsigned long>'
+        'WebGLDrawBuffers_drawBuffersWEBGL_Callback_RESOLVER_STRING_1_sequence<unsigned long>',
+    # Blink 36 fixes.
+    'CanvasRenderingContext2D_setLineDash_Callback_RESOLVER_STRING_1_sequence<float>' :
+        'CanvasRenderingContext2D_setLineDash_Callback_RESOLVER_STRING_1_sequence<unrestricted float>',
+
+    # SVGGraphicsElement is base class.
+    'SVGUseElement_hasExtension_Callback_RESOLVER_STRING_1_DOMString' :
+        'SVGGraphicsElement_hasExtension_Callback_RESOLVER_STRING_1_DOMString',
+    'SVGUseElement_systemLanguage_Getter' :
+        'SVGGraphicsElement_systemLanguage_Getter',
+    'SVGUseElement_requiredFeatures_Getter' :
+        'SVGGraphicsElement_requiredFeatures_Getter',
+    'SVGUseElement_requiredExtensions_Getter' :
+        'SVGGraphicsElement_requiredExtensions_Getter',
+
+    'Gamepad_buttons_Getter' : 'WebKitGamepad_buttons_Getter',
 }
 
 # TODO(vsm): This logic needs to pulled from the source IDL.  These tables are
diff --git a/tools/dom/templates/html/impl/impl_ShadowRoot.darttemplate b/tools/dom/templates/html/impl/impl_ShadowRoot.darttemplate
index 2d518ba..559ba25 100644
--- a/tools/dom/templates/html/impl/impl_ShadowRoot.darttemplate
+++ b/tools/dom/templates/html/impl/impl_ShadowRoot.darttemplate
@@ -15,7 +15,6 @@
   static final bool supported = true;
 $endif
 
-$if DART_USE_BLINK
   static bool _shadowRootDeprecationReported = false;
   static void _shadowRootDeprecationReport() {
     if (!_shadowRootDeprecationReported) {
@@ -50,21 +49,4 @@
   void set applyAuthorStyles(bool value) {
     _shadowRootDeprecationReport();
   }
-$else
-  @deprecated
-  bool get resetStyleInheritance => this._resetStyleInheritance;
-
-  @deprecated
-  void set resetStyleInheritance(bool value) {
-    this._resetStyleInheritance = value;
-  }
-
-  @deprecated
-  bool get applyAuthorStyles => this._applyAuthorStyles;
-
-  @deprecated
-  void set applyAuthorStyles(bool value) {
-    this._applyAuthorStyles = value;
-  }
-$endif
 }