| Index: src/x64/lithium-x64.cc
 | 
| diff --git a/src/x64/lithium-x64.cc b/src/x64/lithium-x64.cc
 | 
| index 27e79846059ffff4e3e3c05a4133d684818c2968..46bb35ae8f9fab01007ce77bb5186f7dbb58290f 100644
 | 
| --- a/src/x64/lithium-x64.cc
 | 
| +++ b/src/x64/lithium-x64.cc
 | 
| @@ -2241,7 +2241,7 @@
 | 
|      FindDehoistedKeyDefinitions(instr->key());
 | 
|    }
 | 
|  
 | 
| -  if (!instr->is_fixed_typed_array()) {
 | 
| +  if (!instr->is_typed_elements()) {
 | 
|      LOperand* obj = UseRegisterAtStart(instr->elements());
 | 
|      result = DefineAsRegister(new(zone()) LLoadKeyed(obj, key));
 | 
|    } else {
 | 
| @@ -2255,9 +2255,10 @@
 | 
|    }
 | 
|  
 | 
|    bool needs_environment;
 | 
| -  if (instr->is_fixed_typed_array()) {
 | 
| +  if (instr->is_external() || instr->is_fixed_typed_array()) {
 | 
|      // see LCodeGen::DoLoadKeyedExternalArray
 | 
| -    needs_environment = elements_kind == UINT32_ELEMENTS &&
 | 
| +    needs_environment = (elements_kind == EXTERNAL_UINT32_ELEMENTS ||
 | 
| +                         elements_kind == UINT32_ELEMENTS) &&
 | 
|                          !instr->CheckFlag(HInstruction::kUint32);
 | 
|    } else {
 | 
|      // see LCodeGen::DoLoadKeyedFixedDoubleArray and
 | 
| @@ -2297,7 +2298,7 @@
 | 
|      FindDehoistedKeyDefinitions(instr->key());
 | 
|    }
 | 
|  
 | 
| -  if (!instr->is_fixed_typed_array()) {
 | 
| +  if (!instr->is_typed_elements()) {
 | 
|      DCHECK(instr->elements()->representation().IsTagged());
 | 
|      bool needs_write_barrier = instr->NeedsWriteBarrier();
 | 
|      LOperand* object = NULL;
 | 
| @@ -2332,8 +2333,10 @@
 | 
|         (instr->value()->representation().IsDouble() &&
 | 
|         IsDoubleOrFloatElementsKind(elements_kind)));
 | 
|    DCHECK(instr->elements()->representation().IsExternal());
 | 
| -  bool val_is_temp_register = elements_kind == UINT8_CLAMPED_ELEMENTS ||
 | 
| -                              elements_kind == FLOAT32_ELEMENTS;
 | 
| +  bool val_is_temp_register =
 | 
| +      elements_kind == EXTERNAL_UINT8_CLAMPED_ELEMENTS ||
 | 
| +      elements_kind == EXTERNAL_FLOAT32_ELEMENTS ||
 | 
| +      elements_kind == FLOAT32_ELEMENTS;
 | 
|    LOperand* val = val_is_temp_register ? UseTempRegister(instr->value())
 | 
|        : UseRegister(instr->value());
 | 
|    LOperand* key = NULL;
 | 
| 
 |