| Index: src/runtime.cc
|
| ===================================================================
|
| --- src/runtime.cc (revision 1512)
|
| +++ src/runtime.cc (working copy)
|
| @@ -1146,10 +1146,10 @@
|
| StringBuilderSubstringPosition::is_valid(from)) {
|
| int encoded_slice = StringBuilderSubstringLength::encode(length) |
|
| StringBuilderSubstringPosition::encode(from);
|
| - AddElement(Smi::FromInt(encoded_slice));
|
| + AddElement(Handle<Object>(Smi::FromInt(encoded_slice)));
|
| } else {
|
| Handle<String> slice = Factory::NewStringSlice(subject_, from, to);
|
| - AddElement(*slice);
|
| + AddElement(slice);
|
| }
|
| IncrementCharacterCount(length);
|
| }
|
| @@ -1160,7 +1160,7 @@
|
| StringShape shape(*string);
|
| int length = string->length(shape);
|
| if (length > 0) {
|
| - AddElement(*string);
|
| + AddElement(string);
|
| if (!shape.IsAsciiRepresentation()) {
|
| is_ascii_ = false;
|
| }
|
| @@ -1220,7 +1220,7 @@
|
| }
|
|
|
|
|
| - void AddElement(Object* element) {
|
| + void AddElement(Handle<Object> element) {
|
| ASSERT(element->IsSmi() || element->IsString());
|
| // Extend parts_ array if necessary.
|
| if (parts_->length() == part_count_) {
|
| @@ -1229,7 +1229,7 @@
|
| parts_->CopyTo(0, *extended_array, 0, part_count_);
|
| parts_ = extended_array;
|
| }
|
| - parts_->set(part_count_, element);
|
| + parts_->set(part_count_, *element);
|
| part_count_++;
|
| }
|
|
|
| @@ -1551,12 +1551,16 @@
|
|
|
| do {
|
| ASSERT(last_match_info_handle->HasFastElements());
|
| - FixedArray* match_info_array = last_match_info_handle->elements();
|
| + int start, end;
|
| + {
|
| + AssertNoAllocation a;
|
| + FixedArray* match_info_array = last_match_info_handle->elements();
|
|
|
| - ASSERT_EQ(capture_count * 2 + 2,
|
| - RegExpImpl::GetLastCaptureCount(match_info_array));
|
| - int start = RegExpImpl::GetCapture(match_info_array, 0);
|
| - int end = RegExpImpl::GetCapture(match_info_array, 1);
|
| + ASSERT_EQ(capture_count * 2 + 2,
|
| + RegExpImpl::GetLastCaptureCount(match_info_array));
|
| + start = RegExpImpl::GetCapture(match_info_array, 0);
|
| + end = RegExpImpl::GetCapture(match_info_array, 1);
|
| + }
|
|
|
| if (prev < start) {
|
| builder.AddSubjectSlice(prev, start);
|
|
|