| Index: src/api.cc | 
| diff --git a/src/api.cc b/src/api.cc | 
| index 26558c42924954037831b23aa2f5de26f3fb9df1..5c8a3142aedb88769d9db6978f5571da8a572faf 100644 | 
| --- a/src/api.cc | 
| +++ b/src/api.cc | 
| @@ -3266,6 +3266,42 @@ bool v8::Object::DeleteHiddenValue(v8::Handle<v8::String> key) { | 
|  | 
| namespace { | 
|  | 
| +static i::ElementsKind GetElementsKindFromExternalArrayType( | 
| +    ExternalArrayType array_type) { | 
| +  switch (array_type) { | 
| +    case kExternalByteArray: | 
| +      return i::EXTERNAL_BYTE_ELEMENTS; | 
| +      break; | 
| +    case kExternalUnsignedByteArray: | 
| +      return i::EXTERNAL_UNSIGNED_BYTE_ELEMENTS; | 
| +      break; | 
| +    case kExternalShortArray: | 
| +      return i::EXTERNAL_SHORT_ELEMENTS; | 
| +      break; | 
| +    case kExternalUnsignedShortArray: | 
| +      return i::EXTERNAL_UNSIGNED_SHORT_ELEMENTS; | 
| +      break; | 
| +    case kExternalIntArray: | 
| +      return i::EXTERNAL_INT_ELEMENTS; | 
| +      break; | 
| +    case kExternalUnsignedIntArray: | 
| +      return i::EXTERNAL_UNSIGNED_INT_ELEMENTS; | 
| +      break; | 
| +    case kExternalFloatArray: | 
| +      return i::EXTERNAL_FLOAT_ELEMENTS; | 
| +      break; | 
| +    case kExternalDoubleArray: | 
| +      return i::EXTERNAL_DOUBLE_ELEMENTS; | 
| +      break; | 
| +    case kExternalPixelArray: | 
| +      return i::EXTERNAL_PIXEL_ELEMENTS; | 
| +      break; | 
| +  } | 
| +  UNREACHABLE(); | 
| +  return i::DICTIONARY_ELEMENTS; | 
| +} | 
| + | 
| + | 
| void PrepareExternalArrayElements(i::Handle<i::JSObject> object, | 
| void* data, | 
| ExternalArrayType array_type, | 
| @@ -3284,9 +3320,9 @@ void PrepareExternalArrayElements(i::Handle<i::JSObject> object, | 
| elements->map() != isolate->heap()->MapForExternalArrayType(array_type); | 
| if (cant_reuse_map) { | 
| i::Handle<i::Map> external_array_map = | 
| -        isolate->factory()->GetExternalArrayElementsMap( | 
| +        isolate->factory()->GetElementsTransitionMap( | 
| i::Handle<i::Map>(object->map()), | 
| -            array_type, | 
| +            GetElementsKindFromExternalArrayType(array_type), | 
| object->HasFastProperties()); | 
| object->set_map(*external_array_map); | 
| } | 
| @@ -3348,6 +3384,7 @@ int v8::Object::GetIndexedPropertiesPixelDataLength() { | 
| } | 
| } | 
|  | 
| + | 
| void v8::Object::SetIndexedPropertiesToExternalArrayData( | 
| void* data, | 
| ExternalArrayType array_type, | 
|  |