| Index: src/hydrogen-instructions.cc | 
| diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc | 
| index 932fd47af13fc12bf081f3bb232063edd59ee7d2..268055ca33bda1fe15b975d6cb07ebefdd677cbf 100644 | 
| --- a/src/hydrogen-instructions.cc | 
| +++ b/src/hydrogen-instructions.cc | 
| @@ -3765,7 +3765,8 @@ HObjectAccess HObjectAccess::ForFixedArrayHeader(int offset) { | 
| } | 
|  | 
|  | 
| -HObjectAccess HObjectAccess::ForJSObjectOffset(int offset) { | 
| +HObjectAccess HObjectAccess::ForJSObjectOffset(int offset, | 
| +    Representation representation) { | 
| ASSERT(offset >= 0); | 
| Portion portion = kInobject; | 
|  | 
| @@ -3774,7 +3775,7 @@ HObjectAccess HObjectAccess::ForJSObjectOffset(int offset) { | 
| } else if (offset == JSObject::kMapOffset) { | 
| portion = kMaps; | 
| } | 
| -  return HObjectAccess(portion, offset, Handle<String>::null()); | 
| +  return HObjectAccess(portion, offset, representation); | 
| } | 
|  | 
|  | 
| @@ -3789,13 +3790,14 @@ HObjectAccess HObjectAccess::ForJSArrayOffset(int offset) { | 
| } else if (offset == JSObject::kMapOffset) { | 
| portion = kMaps; | 
| } | 
| -  return HObjectAccess(portion, offset, Handle<String>::null()); | 
| +  return HObjectAccess(portion, offset); | 
| } | 
|  | 
|  | 
| -HObjectAccess HObjectAccess::ForBackingStoreOffset(int offset) { | 
| +HObjectAccess HObjectAccess::ForBackingStoreOffset(int offset, | 
| +    Representation representation) { | 
| ASSERT(offset >= 0); | 
| -  return HObjectAccess(kBackingStore, offset, Handle<String>::null()); | 
| +  return HObjectAccess(kBackingStore, offset, representation); | 
| } | 
|  | 
|  | 
| @@ -3803,23 +3805,28 @@ HObjectAccess HObjectAccess::ForField(Handle<Map> map, | 
| LookupResult *lookup, Handle<String> name) { | 
| ASSERT(lookup->IsField() || lookup->IsTransitionToField(*map)); | 
| int index; | 
| +  Representation representation; | 
| if (lookup->IsField()) { | 
| index = lookup->GetLocalFieldIndexFromMap(*map); | 
| +    representation = lookup->representation(); | 
| } else { | 
| Map* transition = lookup->GetTransitionMapFromMap(*map); | 
| int descriptor = transition->LastAdded(); | 
| index = transition->instance_descriptors()->GetFieldIndex(descriptor) - | 
| map->inobject_properties(); | 
| +    PropertyDetails details = | 
| +        transition->instance_descriptors()->GetDetails(descriptor); | 
| +    representation = details.representation(); | 
| } | 
| if (index < 0) { | 
| // Negative property indices are in-object properties, indexed | 
| // from the end of the fixed part of the object. | 
| int offset = (index * kPointerSize) + map->instance_size(); | 
| -    return HObjectAccess(kInobject, offset); | 
| +    return HObjectAccess(kInobject, offset, representation); | 
| } else { | 
| // Non-negative property indices are in the properties array. | 
| int offset = (index * kPointerSize) + FixedArray::kHeaderSize; | 
| -    return HObjectAccess(kBackingStore, offset, name); | 
| +    return HObjectAccess(kBackingStore, offset, representation, name); | 
| } | 
| } | 
|  | 
|  |