| Index: src/x64/lithium-x64.cc
 | 
| diff --git a/src/x64/lithium-x64.cc b/src/x64/lithium-x64.cc
 | 
| index bb2ecc06b8e4e374e838cf2847f08221ed9f8faa..708f98bbebe26fa4b2360088edd0d79b40d57ebc 100644
 | 
| --- a/src/x64/lithium-x64.cc
 | 
| +++ b/src/x64/lithium-x64.cc
 | 
| @@ -2121,11 +2121,24 @@ void LChunkBuilder::FindDehoistedKeyDefinitions(HValue* candidate) {
 | 
|  
 | 
|  
 | 
|  LInstruction* LChunkBuilder::DoLoadKeyed(HLoadKeyed* instr) {
 | 
| -  ASSERT(instr->key()->representation().IsInteger32());
 | 
| +  ASSERT((kPointerSize == kInt64Size &&
 | 
| +          instr->key()->representation().IsInteger32()) ||
 | 
| +         (kPointerSize == kInt32Size &&
 | 
| +          instr->key()->representation().IsSmiOrInteger32()));
 | 
|    ElementsKind elements_kind = instr->elements_kind();
 | 
| -  LOperand* key = UseRegisterOrConstantAtStart(instr->key());
 | 
| +  LOperand* key = NULL;
 | 
|    LInstruction* result = NULL;
 | 
|  
 | 
| +  if (kPointerSize == kInt64Size) {
 | 
| +    key = UseRegisterOrConstantAtStart(instr->key());
 | 
| +  } else {
 | 
| +    bool clobbers_key = KeyedLoadOrStoreRequiresTemp(
 | 
| +        instr->key()->representation(), elements_kind);
 | 
| +    key = clobbers_key
 | 
| +        ? UseTempRegister(instr->key())
 | 
| +        : UseRegisterOrConstantAtStart(instr->key());
 | 
| +  }
 | 
| +
 | 
|    if (instr->IsDehoisted()) {
 | 
|      FindDehoistedKeyDefinitions(instr->key());
 | 
|    }
 | 
| @@ -2219,7 +2232,16 @@ LInstruction* LChunkBuilder::DoStoreKeyed(HStoreKeyed* instr) {
 | 
|        elements_kind == FLOAT32_ELEMENTS;
 | 
|    LOperand* val = val_is_temp_register ? UseTempRegister(instr->value())
 | 
|        : UseRegister(instr->value());
 | 
| -  LOperand* key = UseRegisterOrConstantAtStart(instr->key());
 | 
| +  LOperand* key = NULL;
 | 
| +  if (kPointerSize == kInt64Size) {
 | 
| +    key = UseRegisterOrConstantAtStart(instr->key());
 | 
| +  } else {
 | 
| +    bool clobbers_key = KeyedLoadOrStoreRequiresTemp(
 | 
| +        instr->key()->representation(), elements_kind);
 | 
| +    key = clobbers_key
 | 
| +        ? UseTempRegister(instr->key())
 | 
| +        : UseRegisterOrConstantAtStart(instr->key());
 | 
| +  }
 | 
|    LOperand* backing_store = UseRegister(instr->elements());
 | 
|    return new(zone()) LStoreKeyed(backing_store, key, val);
 | 
|  }
 | 
| 
 |