| Index: src/runtime.cc
 | 
| ===================================================================
 | 
| --- src/runtime.cc	(revision 7683)
 | 
| +++ src/runtime.cc	(working copy)
 | 
| @@ -2713,7 +2713,7 @@
 | 
|      end = RegExpImpl::GetCapture(match_info_array, 1);
 | 
|    }
 | 
|  
 | 
| -  int length = subject->length();
 | 
| +  int length = subject_handle->length();
 | 
|    int new_length = length - (end - start);
 | 
|    if (new_length == 0) {
 | 
|      return isolate->heap()->empty_string();
 | 
| @@ -7298,13 +7298,13 @@
 | 
|    // If the function is not optimizable or debugger is active continue using the
 | 
|    // code from the full compiler.
 | 
|    if (!function->shared()->code()->optimizable() ||
 | 
| -      isolate->debug()->has_break_points()) {
 | 
| +      isolate->DebuggerHasBreakPoints()) {
 | 
|      if (FLAG_trace_opt) {
 | 
|        PrintF("[failed to optimize ");
 | 
|        function->PrintName();
 | 
|        PrintF(": is code optimizable: %s, is debugger enabled: %s]\n",
 | 
|            function->shared()->code()->optimizable() ? "T" : "F",
 | 
| -          isolate->debug()->has_break_points() ? "T" : "F");
 | 
| +          isolate->DebuggerHasBreakPoints() ? "T" : "F");
 | 
|      }
 | 
|      function->ReplaceCode(function->shared()->code());
 | 
|      return function->code();
 | 
| @@ -8603,45 +8603,50 @@
 | 
|        int dense_elements_length;
 | 
|        switch (kind) {
 | 
|          case JSObject::EXTERNAL_PIXEL_ELEMENTS: {
 | 
| -        dense_elements_length =
 | 
| -            ExternalPixelArray::cast(object->elements())->length();
 | 
| +          dense_elements_length =
 | 
| +              ExternalPixelArray::cast(object->elements())->length();
 | 
|            break;
 | 
|          }
 | 
|          case JSObject::EXTERNAL_BYTE_ELEMENTS: {
 | 
| -        dense_elements_length =
 | 
| -            ExternalByteArray::cast(object->elements())->length();
 | 
| +          dense_elements_length =
 | 
| +              ExternalByteArray::cast(object->elements())->length();
 | 
|            break;
 | 
|          }
 | 
|          case JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS: {
 | 
| -        dense_elements_length =
 | 
| -            ExternalUnsignedByteArray::cast(object->elements())->length();
 | 
| +          dense_elements_length =
 | 
| +              ExternalUnsignedByteArray::cast(object->elements())->length();
 | 
|            break;
 | 
|          }
 | 
|          case JSObject::EXTERNAL_SHORT_ELEMENTS: {
 | 
| -        dense_elements_length =
 | 
| -            ExternalShortArray::cast(object->elements())->length();
 | 
| +          dense_elements_length =
 | 
| +              ExternalShortArray::cast(object->elements())->length();
 | 
|            break;
 | 
|          }
 | 
|          case JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS: {
 | 
| -        dense_elements_length =
 | 
| -            ExternalUnsignedShortArray::cast(object->elements())->length();
 | 
| +          dense_elements_length =
 | 
| +              ExternalUnsignedShortArray::cast(object->elements())->length();
 | 
|            break;
 | 
|          }
 | 
|          case JSObject::EXTERNAL_INT_ELEMENTS: {
 | 
| -        dense_elements_length =
 | 
| -            ExternalIntArray::cast(object->elements())->length();
 | 
| +          dense_elements_length =
 | 
| +              ExternalIntArray::cast(object->elements())->length();
 | 
|            break;
 | 
|          }
 | 
|          case JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS: {
 | 
| -        dense_elements_length =
 | 
| -            ExternalUnsignedIntArray::cast(object->elements())->length();
 | 
| +          dense_elements_length =
 | 
| +              ExternalUnsignedIntArray::cast(object->elements())->length();
 | 
|            break;
 | 
|          }
 | 
|          case JSObject::EXTERNAL_FLOAT_ELEMENTS: {
 | 
| -        dense_elements_length =
 | 
| -            ExternalFloatArray::cast(object->elements())->length();
 | 
| +          dense_elements_length =
 | 
| +              ExternalFloatArray::cast(object->elements())->length();
 | 
|            break;
 | 
|          }
 | 
| +        case JSObject::EXTERNAL_DOUBLE_ELEMENTS: {
 | 
| +          dense_elements_length =
 | 
| +              ExternalDoubleArray::cast(object->elements())->length();
 | 
| +          break;
 | 
| +        }
 | 
|          default:
 | 
|            UNREACHABLE();
 | 
|            dense_elements_length = 0;
 | 
| @@ -8773,6 +8778,11 @@
 | 
|            isolate, receiver, false, false, visitor);
 | 
|        break;
 | 
|      }
 | 
| +    case JSObject::EXTERNAL_DOUBLE_ELEMENTS: {
 | 
| +      IterateExternalArrayElements<ExternalDoubleArray, double>(
 | 
| +          isolate, receiver, false, false, visitor);
 | 
| +      break;
 | 
| +    }
 | 
|      default:
 | 
|        UNREACHABLE();
 | 
|        break;
 | 
| 
 |