| Index: src/ic.cc
 | 
| diff --git a/src/ic.cc b/src/ic.cc
 | 
| index 1a6ab41e4fdf076da121eb1dca88950540b2246b..0040b1d352f2ac1a43c92a1f1f55c67dd283a50d 100644
 | 
| --- a/src/ic.cc
 | 
| +++ b/src/ic.cc
 | 
| @@ -838,12 +838,14 @@ Handle<Code> LoadIC::megamorphic_stub() {
 | 
|  }
 | 
|  
 | 
|  
 | 
| -Handle<Code> LoadIC::SimpleFieldLoad(FieldIndex index) {
 | 
| +Handle<Code> LoadIC::SimpleFieldLoad(int offset,
 | 
| +                                     bool inobject,
 | 
| +                                     Representation representation) {
 | 
|    if (kind() == Code::LOAD_IC) {
 | 
| -    LoadFieldStub stub(isolate(), index);
 | 
| +    LoadFieldStub stub(isolate(), inobject, offset, representation);
 | 
|      return stub.GetCode();
 | 
|    } else {
 | 
| -    KeyedLoadFieldStub stub(isolate(), index);
 | 
| +    KeyedLoadFieldStub stub(isolate(), inobject, offset, representation);
 | 
|      return stub.GetCode();
 | 
|    }
 | 
|  }
 | 
| @@ -922,8 +924,8 @@ Handle<Code> LoadIC::CompileHandler(LookupResult* lookup,
 | 
|                                      InlineCacheHolderFlag cache_holder) {
 | 
|    if (object->IsString() &&
 | 
|        String::Equals(isolate()->factory()->length_string(), name)) {
 | 
| -    FieldIndex index = FieldIndex::ForInObjectOffset(String::kLengthOffset);
 | 
| -    return SimpleFieldLoad(index);
 | 
| +    int length_index = String::kLengthOffset / kPointerSize;
 | 
| +    return SimpleFieldLoad(length_index);
 | 
|    }
 | 
|  
 | 
|    if (object->IsStringWrapper() &&
 | 
| @@ -943,9 +945,11 @@ Handle<Code> LoadIC::CompileHandler(LookupResult* lookup,
 | 
|  
 | 
|    switch (lookup->type()) {
 | 
|      case FIELD: {
 | 
| -      FieldIndex field = lookup->GetFieldIndex();
 | 
| +      PropertyIndex field = lookup->GetFieldIndex();
 | 
|        if (object.is_identical_to(holder)) {
 | 
| -        return SimpleFieldLoad(field);
 | 
| +        return SimpleFieldLoad(field.translate(holder),
 | 
| +                               field.is_inobject(holder),
 | 
| +                               lookup->representation());
 | 
|        }
 | 
|        return compiler.CompileLoadField(
 | 
|            type, holder, name, field, lookup->representation());
 | 
| @@ -981,15 +985,12 @@ Handle<Code> LoadIC::CompileHandler(LookupResult* lookup,
 | 
|        // Use simple field loads for some well-known callback properties.
 | 
|        if (object->IsJSObject()) {
 | 
|          Handle<JSObject> receiver = Handle<JSObject>::cast(object);
 | 
| -        Handle<Map> map(receiver->map());
 | 
|          Handle<HeapType> type = IC::MapToType<HeapType>(
 | 
|              handle(receiver->map()), isolate());
 | 
|          int object_offset;
 | 
|          if (Accessors::IsJSObjectFieldAccessor<HeapType>(
 | 
|                  type, name, &object_offset)) {
 | 
| -          FieldIndex index = FieldIndex::ForInObjectOffset(
 | 
| -              object_offset, receiver->map());
 | 
| -          return SimpleFieldLoad(index);
 | 
| +          return SimpleFieldLoad(object_offset / kPointerSize);
 | 
|          }
 | 
|        }
 | 
|  
 | 
| 
 |