| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 6278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6289 if (static_cast<uint32_t>(indices.length()) < limit) { | 6289 if (static_cast<uint32_t>(indices.length()) < limit) { |
| 6290 indices.Add(subject_length); | 6290 indices.Add(subject_length); |
| 6291 } | 6291 } |
| 6292 | 6292 |
| 6293 // The list indices now contains the end of each part to create. | 6293 // The list indices now contains the end of each part to create. |
| 6294 | 6294 |
| 6295 // Create JSArray of substrings separated by separator. | 6295 // Create JSArray of substrings separated by separator. |
| 6296 int part_count = indices.length(); | 6296 int part_count = indices.length(); |
| 6297 | 6297 |
| 6298 Handle<JSArray> result = isolate->factory()->NewJSArray(part_count); | 6298 Handle<JSArray> result = isolate->factory()->NewJSArray(part_count); |
| 6299 MaybeObject* maybe_result = result->EnsureCanContainNonSmiElements(); | 6299 MaybeObject* maybe_result = result->EnsureCanContainHeapObjectElements(); |
| 6300 if (maybe_result->IsFailure()) return maybe_result; | 6300 if (maybe_result->IsFailure()) return maybe_result; |
| 6301 result->set_length(Smi::FromInt(part_count)); | 6301 result->set_length(Smi::FromInt(part_count)); |
| 6302 | 6302 |
| 6303 ASSERT(result->HasFastElements()); | 6303 ASSERT(result->HasFastElements()); |
| 6304 | 6304 |
| 6305 if (part_count == 1 && indices.at(0) == subject_length) { | 6305 if (part_count == 1 && indices.at(0) == subject_length) { |
| 6306 FixedArray::cast(result->elements())->set(0, *subject); | 6306 FixedArray::cast(result->elements())->set(0, *subject); |
| 6307 return *result; | 6307 return *result; |
| 6308 } | 6308 } |
| 6309 | 6309 |
| (...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6665 if (!args[1]->IsSmi()) { | 6665 if (!args[1]->IsSmi()) { |
| 6666 isolate->context()->mark_out_of_memory(); | 6666 isolate->context()->mark_out_of_memory(); |
| 6667 return Failure::OutOfMemoryException(); | 6667 return Failure::OutOfMemoryException(); |
| 6668 } | 6668 } |
| 6669 int array_length = args.smi_at(1); | 6669 int array_length = args.smi_at(1); |
| 6670 CONVERT_CHECKED(String, special, args[2]); | 6670 CONVERT_CHECKED(String, special, args[2]); |
| 6671 | 6671 |
| 6672 // This assumption is used by the slice encoding in one or two smis. | 6672 // This assumption is used by the slice encoding in one or two smis. |
| 6673 ASSERT(Smi::kMaxValue >= String::kMaxLength); | 6673 ASSERT(Smi::kMaxValue >= String::kMaxLength); |
| 6674 | 6674 |
| 6675 MaybeObject* maybe_result = array->EnsureCanContainNonSmiElements(); | 6675 MaybeObject* maybe_result = array->EnsureCanContainHeapObjectElements(); |
| 6676 if (maybe_result->IsFailure()) return maybe_result; | 6676 if (maybe_result->IsFailure()) return maybe_result; |
| 6677 | 6677 |
| 6678 int special_length = special->length(); | 6678 int special_length = special->length(); |
| 6679 if (!array->HasFastElements()) { | 6679 if (!array->HasFastElements()) { |
| 6680 return isolate->Throw(isolate->heap()->illegal_argument_symbol()); | 6680 return isolate->Throw(isolate->heap()->illegal_argument_symbol()); |
| 6681 } | 6681 } |
| 6682 FixedArray* fixed_array = FixedArray::cast(array->elements()); | 6682 FixedArray* fixed_array = FixedArray::cast(array->elements()); |
| 6683 if (fixed_array->length() < array_length) { | 6683 if (fixed_array->length() < array_length) { |
| 6684 array_length = fixed_array->length(); | 6684 array_length = fixed_array->length(); |
| 6685 } | 6685 } |
| (...skipping 2613 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9299 RUNTIME_FUNCTION(MaybeObject*, Runtime_DateParseString) { | 9299 RUNTIME_FUNCTION(MaybeObject*, Runtime_DateParseString) { |
| 9300 HandleScope scope(isolate); | 9300 HandleScope scope(isolate); |
| 9301 ASSERT(args.length() == 2); | 9301 ASSERT(args.length() == 2); |
| 9302 | 9302 |
| 9303 CONVERT_ARG_CHECKED(String, str, 0); | 9303 CONVERT_ARG_CHECKED(String, str, 0); |
| 9304 FlattenString(str); | 9304 FlattenString(str); |
| 9305 | 9305 |
| 9306 CONVERT_ARG_CHECKED(JSArray, output, 1); | 9306 CONVERT_ARG_CHECKED(JSArray, output, 1); |
| 9307 | 9307 |
| 9308 MaybeObject* maybe_result_array = | 9308 MaybeObject* maybe_result_array = |
| 9309 output->EnsureCanContainNonSmiElements(); | 9309 output->EnsureCanContainHeapObjectElements(); |
| 9310 if (maybe_result_array->IsFailure()) return maybe_result_array; | 9310 if (maybe_result_array->IsFailure()) return maybe_result_array; |
| 9311 RUNTIME_ASSERT(output->HasFastElements()); | 9311 RUNTIME_ASSERT(output->HasFastElements()); |
| 9312 | 9312 |
| 9313 AssertNoAllocation no_allocation; | 9313 AssertNoAllocation no_allocation; |
| 9314 | 9314 |
| 9315 FixedArray* output_array = FixedArray::cast(output->elements()); | 9315 FixedArray* output_array = FixedArray::cast(output->elements()); |
| 9316 RUNTIME_ASSERT(output_array->length() >= DateParser::OUTPUT_SIZE); | 9316 RUNTIME_ASSERT(output_array->length() >= DateParser::OUTPUT_SIZE); |
| 9317 bool result; | 9317 bool result; |
| 9318 String::FlatContent str_content = str->GetFlatContent(); | 9318 String::FlatContent str_content = str->GetFlatContent(); |
| 9319 if (str_content.IsAscii()) { | 9319 if (str_content.IsAscii()) { |
| (...skipping 4249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13569 } else { | 13569 } else { |
| 13570 // Handle last resort GC and make sure to allow future allocations | 13570 // Handle last resort GC and make sure to allow future allocations |
| 13571 // to grow the heap without causing GCs (if possible). | 13571 // to grow the heap without causing GCs (if possible). |
| 13572 isolate->counters()->gc_last_resort_from_js()->Increment(); | 13572 isolate->counters()->gc_last_resort_from_js()->Increment(); |
| 13573 isolate->heap()->CollectAllGarbage(Heap::kNoGCFlags); | 13573 isolate->heap()->CollectAllGarbage(Heap::kNoGCFlags); |
| 13574 } | 13574 } |
| 13575 } | 13575 } |
| 13576 | 13576 |
| 13577 | 13577 |
| 13578 } } // namespace v8::internal | 13578 } } // namespace v8::internal |
| OLD | NEW |