| Index: src/value-serializer.cc
 | 
| diff --git a/src/value-serializer.cc b/src/value-serializer.cc
 | 
| index 41cd5db227d59cea1e7915eb081ae5e27e3f175d..b0ecc6ddd5f1d10916fd4225ddf1873e68aeb210 100644
 | 
| --- a/src/value-serializer.cc
 | 
| +++ b/src/value-serializer.cc
 | 
| @@ -784,9 +784,8 @@ ValueDeserializer::ValueDeserializer(Isolate* isolate,
 | 
|        position_(data.start()),
 | 
|        end_(data.start() + data.length()),
 | 
|        pretenure_(data.length() > kPretenureThreshold ? TENURED : NOT_TENURED),
 | 
| -      id_map_(Handle<SeededNumberDictionary>::cast(
 | 
| -          isolate->global_handles()->Create(
 | 
| -              *SeededNumberDictionary::New(isolate, 0)))) {}
 | 
| +      id_map_(Handle<FixedArray>::cast(isolate->global_handles()->Create(
 | 
| +          isolate_->heap()->empty_fixed_array()))) {}
 | 
|  
 | 
|  ValueDeserializer::~ValueDeserializer() {
 | 
|    GlobalHandles::Destroy(Handle<Object>::cast(id_map_).location());
 | 
| @@ -1575,15 +1574,16 @@ Maybe<uint32_t> ValueDeserializer::ReadJSObjectProperties(
 | 
|  }
 | 
|  
 | 
|  bool ValueDeserializer::HasObjectWithID(uint32_t id) {
 | 
| -  return id_map_->Has(isolate_, id);
 | 
| +  return id < static_cast<unsigned>(id_map_->length()) &&
 | 
| +         !id_map_->get(id)->IsTheHole(isolate_);
 | 
|  }
 | 
|  
 | 
|  MaybeHandle<JSReceiver> ValueDeserializer::GetObjectWithID(uint32_t id) {
 | 
| -  int index = id_map_->FindEntry(isolate_, id);
 | 
| -  if (index == SeededNumberDictionary::kNotFound) {
 | 
| +  if (id >= static_cast<unsigned>(id_map_->length())) {
 | 
|      return MaybeHandle<JSReceiver>();
 | 
|    }
 | 
| -  Object* value = id_map_->ValueAt(index);
 | 
| +  Object* value = id_map_->get(id);
 | 
| +  if (value->IsTheHole(isolate_)) return MaybeHandle<JSReceiver>();
 | 
|    DCHECK(value->IsJSReceiver());
 | 
|    return Handle<JSReceiver>(JSReceiver::cast(value), isolate_);
 | 
|  }
 | 
| @@ -1591,16 +1591,13 @@ MaybeHandle<JSReceiver> ValueDeserializer::GetObjectWithID(uint32_t id) {
 | 
|  void ValueDeserializer::AddObjectWithID(uint32_t id,
 | 
|                                          Handle<JSReceiver> object) {
 | 
|    DCHECK(!HasObjectWithID(id));
 | 
| -  const bool used_as_prototype = false;
 | 
| -  Handle<SeededNumberDictionary> new_dictionary =
 | 
| -      SeededNumberDictionary::AtNumberPut(id_map_, id, object,
 | 
| -                                          used_as_prototype);
 | 
| +  Handle<FixedArray> new_array = FixedArray::SetAndGrow(id_map_, id, object);
 | 
|  
 | 
|    // If the dictionary was reallocated, update the global handle.
 | 
| -  if (!new_dictionary.is_identical_to(id_map_)) {
 | 
| +  if (!new_array.is_identical_to(id_map_)) {
 | 
|      GlobalHandles::Destroy(Handle<Object>::cast(id_map_).location());
 | 
| -    id_map_ = Handle<SeededNumberDictionary>::cast(
 | 
| -        isolate_->global_handles()->Create(*new_dictionary));
 | 
| +    id_map_ = Handle<FixedArray>::cast(
 | 
| +        isolate_->global_handles()->Create(*new_array));
 | 
|    }
 | 
|  }
 | 
|  
 | 
| 
 |