| Index: src/heap.cc
 | 
| diff --git a/src/heap.cc b/src/heap.cc
 | 
| index 0455a84b8b6cd795e6e09b167e451a4048c0cc92..4bd11a8a93f5b6601610e489d6699eccad0e1601 100644
 | 
| --- a/src/heap.cc
 | 
| +++ b/src/heap.cc
 | 
| @@ -6965,6 +6965,7 @@ bool Heap::CreateHeapObjects() {
 | 
|    native_contexts_list_ = undefined_value();
 | 
|    array_buffers_list_ = undefined_value();
 | 
|    allocation_sites_list_ = undefined_value();
 | 
| +  weak_object_to_code_ = undefined_value();
 | 
|    return true;
 | 
|  }
 | 
|  
 | 
| @@ -7108,6 +7109,27 @@ void Heap::RemoveGCEpilogueCallback(GCEpilogueCallback callback) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| +MaybeObject* Heap::AddWeakObjectToCodeDependency(Object* obj,
 | 
| +                                                 DependentCode* dep) {
 | 
| +  ASSERT(!InNewSpace(obj));
 | 
| +  ASSERT(!InNewSpace(dep));
 | 
| +  MaybeObject* maybe_obj =
 | 
| +      WeakHashTable::cast(weak_object_to_code_)->Put(obj, dep);
 | 
| +  WeakHashTable* table;
 | 
| +  if (!maybe_obj->To(&table)) return maybe_obj;
 | 
| +  set_weak_object_to_code(table);
 | 
| +  ASSERT_EQ(dep, WeakHashTable::cast(weak_object_to_code_)->Lookup(obj));
 | 
| +  return weak_object_to_code_;
 | 
| +}
 | 
| +
 | 
| +
 | 
| +DependentCode* Heap::LookupWeakObjectToCodeDependency(Object* obj) {
 | 
| +  Object* dep = WeakHashTable::cast(weak_object_to_code_)->Lookup(obj);
 | 
| +  if (dep->IsDependentCode()) return DependentCode::cast(dep);
 | 
| +  return DependentCode::cast(empty_fixed_array());
 | 
| +}
 | 
| +
 | 
| +
 | 
|  #ifdef DEBUG
 | 
|  
 | 
|  class PrintHandleVisitor: public ObjectVisitor {
 | 
| 
 |