Revert "Pull from svn bleeding_edge@3716"

This reverts commit 888f6729be6a6f6fbe246cb5a9f122e2dbe455b7.

(Waiting until v8 issue 554101 is in v8 rather than patching it straight into
android)
diff --git a/src/regexp-macro-assembler.cc b/src/regexp-macro-assembler.cc
index 0fcfc33..3685fcd 100644
--- a/src/regexp-macro-assembler.cc
+++ b/src/regexp-macro-assembler.cc
@@ -122,10 +122,7 @@
 
   bool is_ascii = subject->IsAsciiRepresentation();
 
-  // The string has been flattened, so it it is a cons string it contains the
-  // full string in the first part.
   if (StringShape(subject_ptr).IsCons()) {
-    ASSERT_EQ(0, ConsString::cast(subject_ptr)->second()->length());
     subject_ptr = ConsString::cast(subject_ptr)->first();
   }
   // Ensure that an underlying string has the same ascii-ness.
@@ -144,7 +141,8 @@
                        start_offset,
                        input_start,
                        input_end,
-                       offsets_vector);
+                       offsets_vector,
+                       previous_index == 0);
   return res;
 }
 
@@ -155,11 +153,14 @@
     int start_offset,
     const byte* input_start,
     const byte* input_end,
-    int* output) {
+    int* output,
+    bool at_start) {
   typedef int (*matcher)(String*, int, const byte*,
-                         const byte*, int*, Address, int);
+                         const byte*, int*, int, Address, int);
   matcher matcher_func = FUNCTION_CAST<matcher>(code->entry());
 
+  int at_start_val = at_start ? 1 : 0;
+
   // Ensure that the minimum stack has been allocated.
   RegExpStack stack;
   Address stack_base = RegExpStack::stack_base();
@@ -171,6 +172,7 @@
                                           input_start,
                                           input_end,
                                           output,
+                                          at_start_val,
                                           stack_base,
                                           direct_call);
   ASSERT(result <= SUCCESS);