| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 10007 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10018 bool exceeds_array_limit() { | 10018 bool exceeds_array_limit() { |
| 10019 return exceeds_array_limit_; | 10019 return exceeds_array_limit_; |
| 10020 } | 10020 } |
| 10021 | 10021 |
| 10022 Handle<JSArray> ToArray() { | 10022 Handle<JSArray> ToArray() { |
| 10023 Handle<JSArray> array = isolate_->factory()->NewJSArray(0); | 10023 Handle<JSArray> array = isolate_->factory()->NewJSArray(0); |
| 10024 Handle<Object> length = | 10024 Handle<Object> length = |
| 10025 isolate_->factory()->NewNumber(static_cast<double>(index_offset_)); | 10025 isolate_->factory()->NewNumber(static_cast<double>(index_offset_)); |
| 10026 Handle<Map> map; | 10026 Handle<Map> map; |
| 10027 if (fast_elements_) { | 10027 if (fast_elements_) { |
| 10028 map = isolate_->factory()->GetElementsTransitionMap(array, | 10028 map = JSObject::GetElementsTransitionMap(array, FAST_HOLEY_ELEMENTS); |
| 10029 FAST_HOLEY_ELEMENTS); | |
| 10030 } else { | 10029 } else { |
| 10031 map = isolate_->factory()->GetElementsTransitionMap(array, | 10030 map = JSObject::GetElementsTransitionMap(array, DICTIONARY_ELEMENTS); |
| 10032 DICTIONARY_ELEMENTS); | |
| 10033 } | 10031 } |
| 10034 array->set_map(*map); | 10032 array->set_map(*map); |
| 10035 array->set_length(*length); | 10033 array->set_length(*length); |
| 10036 array->set_elements(*storage_); | 10034 array->set_elements(*storage_); |
| 10037 return array; | 10035 return array; |
| 10038 } | 10036 } |
| 10039 | 10037 |
| 10040 private: | 10038 private: |
| 10041 // Convert storage to dictionary mode. | 10039 // Convert storage to dictionary mode. |
| 10042 void SetDictionaryMode(uint32_t index) { | 10040 void SetDictionaryMode(uint32_t index) { |
| (...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10556 break; | 10554 break; |
| 10557 default: | 10555 default: |
| 10558 UNREACHABLE(); | 10556 UNREACHABLE(); |
| 10559 } | 10557 } |
| 10560 } | 10558 } |
| 10561 if (failure) break; | 10559 if (failure) break; |
| 10562 } | 10560 } |
| 10563 Handle<JSArray> array = isolate->factory()->NewJSArray(0); | 10561 Handle<JSArray> array = isolate->factory()->NewJSArray(0); |
| 10564 Smi* length = Smi::FromInt(j); | 10562 Smi* length = Smi::FromInt(j); |
| 10565 Handle<Map> map; | 10563 Handle<Map> map; |
| 10566 map = isolate->factory()->GetElementsTransitionMap(array, kind); | 10564 map = JSObject::GetElementsTransitionMap(array, kind); |
| 10567 array->set_map(*map); | 10565 array->set_map(*map); |
| 10568 array->set_length(length); | 10566 array->set_length(length); |
| 10569 array->set_elements(*double_storage); | 10567 array->set_elements(*double_storage); |
| 10570 return *array; | 10568 return *array; |
| 10571 } | 10569 } |
| 10572 // The backing storage array must have non-existing elements to preserve | 10570 // The backing storage array must have non-existing elements to preserve |
| 10573 // holes across concat operations. | 10571 // holes across concat operations. |
| 10574 storage = isolate->factory()->NewFixedArrayWithHoles( | 10572 storage = isolate->factory()->NewFixedArrayWithHoles( |
| 10575 estimate_result_length); | 10573 estimate_result_length); |
| 10576 } else { | 10574 } else { |
| (...skipping 4547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 15124 // Handle last resort GC and make sure to allow future allocations | 15122 // Handle last resort GC and make sure to allow future allocations |
| 15125 // to grow the heap without causing GCs (if possible). | 15123 // to grow the heap without causing GCs (if possible). |
| 15126 isolate->counters()->gc_last_resort_from_js()->Increment(); | 15124 isolate->counters()->gc_last_resort_from_js()->Increment(); |
| 15127 isolate->heap()->CollectAllGarbage(Heap::kNoGCFlags, | 15125 isolate->heap()->CollectAllGarbage(Heap::kNoGCFlags, |
| 15128 "Runtime::PerformGC"); | 15126 "Runtime::PerformGC"); |
| 15129 } | 15127 } |
| 15130 } | 15128 } |
| 15131 | 15129 |
| 15132 | 15130 |
| 15133 } } // namespace v8::internal | 15131 } } // namespace v8::internal |
| OLD | NEW |